import org.simantics.db.Disposable;
import org.simantics.db.Resource;
-import org.simantics.db.common.utils.Logger;
import org.simantics.db.exception.CancelTransactionException;
import org.simantics.db.exception.DatabaseException;
import org.simantics.db.impl.graph.WriteGraphImpl;
import org.simantics.db.impl.query.QueryProcessor.SessionTask;
import org.simantics.db.request.WriteTraits;
import org.simantics.utils.datastructures.Pair;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class SessionRequestManager {
+ private static final Logger LOGGER = LoggerFactory.getLogger(SessionRequestManager.class);
+
private static boolean DEBUG = false;
enum State {
transactionState.startReadTransaction(thread);
task.run(thread);
} catch (Throwable t) {
- Logger.defaultLogError(new DatabaseException("Read transaction could not be started", t));
+ LOGGER.error("Read transaction could not be started", t);
if(task.throwable != null)
task.throwable.set(t);
state = State.ERROR;
try {
transactionState.stopReadTransaction();
} catch (DatabaseException e) {
- e.printStackTrace();
+ LOGGER.error("Read transaction could not be stopped", e);
}
}
}
-// public synchronized void stopRead(int thread) {
-//
-// try {
-// transactionState.stopReadTransaction();
-// } catch (DatabaseException e) {
-// e.printStackTrace();
-// }
-//
-// }
-
public synchronized void startWrite(int thread, final SessionTask task) {
session.queryProvider2.scheduleAlways(thread, new SessionTask((WriteTraits)task.object, task.thread) {
try {
transactionState.startWriteTransaction(thread);
} catch (Throwable t) {
- DatabaseException e = new DatabaseException("Write transaction could not be started", t);
- Logger.defaultLogError(e);
+ LOGGER.error("Write transaction could not be started", t);
return;
}
task.run(thread);
WriteGraphImpl graph = writeState.getGraph();
if(writeState.isExcepted()) {
-
+
if(!(writeState.exception instanceof CancelTransactionException))
- writeState.exception.printStackTrace();
-
+ LOGGER.error("Write request failed", writeState.exception);
+
transactionState.cancelWriteTransaction(graph);
} else {
}
-// public synchronized void stopWrite(int thread) {
-//
-// session.clientChanges = new ClientChangesImpl(session);
-//
-// WriteState<?> state = session.writeState;
-//
-// System.err.println("D");
-// state.finish();
-// System.err.println("E");
-//
-// session.writeState = null;
-//
-// }
-
public synchronized void ceased(int thread) {
if(State.WRITE == state) {
try {
value.second.binaryFile.close();
} catch (IOException e) {
- Logger.defaultLogError("I/O exception while closing random access value file " + value.second.binaryFile.file() + " for resource " + value.first , e);
+ LOGGER.error("I/O exception while closing random access value file " + value.second.binaryFile.file() + " for resource " + value.first , e);
}
}
}