}
}
- int thread = request.hashCode() & queryProvider2.THREAD_MASK;
-
- requestManager.scheduleWrite(new SessionTask(true) {
+ requestManager.scheduleWrite(new SessionTask(null) {
@Override
- public void run(int thread) {
+ public void run0(int thread) {
if(Development.DEVELOPMENT) {
try {
assert (request != null);
- int thread = request.hashCode() & queryProvider2.THREAD_MASK;
-
- requestManager.scheduleWrite(new SessionTask(true) {
+ requestManager.scheduleWrite(new SessionTask(null) {
@Override
- public void run(int thread) {
+ public void run0(int thread) {
ITask task = ThreadLogger.getInstance().begin("WriteRequest " + request);
assert (request != null);
- int thread = request.hashCode() & queryProvider2.THREAD_MASK;
-
- requestManager.scheduleWrite(new SessionTask(true) {
+ requestManager.scheduleWrite(new SessionTask(null) {
@Override
- public void run(int thread) {
+ public void run0(int thread) {
fireSessionVariableChange(SessionVariables.QUEUED_READS);
Procedure<Object> stateProcedure = new Procedure<Object>() {
assert (request != null);
- int thread = request.hashCode() & queryProvider2.THREAD_MASK;
-
- requestManager.scheduleWrite(new SessionTask(true) {
+ requestManager.scheduleWrite(new SessionTask(null) {
@Override
- public void run(int thread) {
+ public void run0(int thread) {
ITask task = ThreadLogger.getInstance().begin("WriteRequest " + request);
assert (request != null);
- int thread = request.hashCode() & queryProvider2.THREAD_MASK;
-
- requestManager.scheduleWrite(new SessionTask(true) {
+ requestManager.scheduleWrite(new SessionTask(null) {
@Override
- public void run(int thread) {
+ public void run0(int thread) {
ITask task = ThreadLogger.getInstance().begin("WriteRequest " + request);
requestManager.scheduleRead(new SessionRead(throwable, notify) {
@Override
- public void run(int thread) {
+ public void run0(int thread) {
fireSessionVariableChange(SessionVariables.QUEUED_READS);
final ReadGraphImpl newGraph = ReadGraphImpl.create(getQueryProvider2());
+ // This is never synced but increase to prevent it from visiting 0
+ newGraph.asyncBarrier.inc();
+
try {
if (listener != null) {
requestManager.scheduleRead(new SessionRead(null, notify) {
@Override
- public void run(int thread) {
+ public void run0(int thread) {
fireSessionVariableChange(SessionVariables.QUEUED_READS);
// final ResultCallWrappedSingleQueryProcedure4<T> wrapper = new ResultCallWrappedSingleQueryProcedure4<T>(
// procedure, "request");
- BlockingAsyncProcedure<T> wrap = new BlockingAsyncProcedure<T>(newGraph, procedure, request);
+ BlockingAsyncProcedure<T> wrap = new BlockingAsyncProcedure<T>(newGraph.asyncBarrier, newGraph, procedure, request);
try {
requestManager.scheduleRead(new SessionRead(null, notify) {
@Override
- public void run(int thread) {
+ public void run0(int thread) {
fireSessionVariableChange(SessionVariables.QUEUED_READS);
requestManager.scheduleRead(new SessionRead(null, notify) {
@Override
- public void run(int thread) {
+ public void run0(int thread) {
fireSessionVariableChange(SessionVariables.QUEUED_READS);
requestManager.scheduleRead(new SessionRead(throwable, notify) {
@Override
- public void run(int thread) {
+ public void run0(int thread) {
fireSessionVariableChange(SessionVariables.QUEUED_READS);
});
Throwable t = exception.get();
- if(t != null) {
- if(t instanceof DatabaseException) throw (DatabaseException)t;
- else throw new DatabaseException("Unexpected exception in ReadGraph.syncRequest(Read)", t);
+ if (t != null) {
+ if (t instanceof DatabaseException)
+ throw (DatabaseException) t;
+ else
+ throw new DatabaseException("Unexpected exception in ReadGraph.syncRequest(Read)", t);
}
return result;
asyncRequest(request, (Procedure<T>)procedure);
}
-
-
- void check(Throwable t) throws DatabaseException {
- if(t != null) {
- if(t instanceof DatabaseException) throw (DatabaseException)t;
- else throw new DatabaseException("Unexpected exception", t);
- }
- }
-
- void check(DataContainer<Throwable> container) throws DatabaseException {
- Throwable t = container.get();
- if(t != null) {
- if(t instanceof DatabaseException) throw (DatabaseException)t;
- else throw new DatabaseException("Unexpected exception", t);
- }
- }
-
-
-
-
-
-
boolean sameProvider(Write request) {
if(writeState.getGraph().provider != null) {
return writeState.getGraph().provider.equals(request.getProvider());
public static final ThreadGroup SessionThreadGroup = new ThreadGroup("Session Thread Group");
+
private void assertNotSession() throws DatabaseException {
Thread current = Thread.currentThread();
- if(sessionThreads.contains(current)) throw new DatabaseException("Caller is already inside a transaction.");
+ if (sessionThreads.contains(current))
+ throw new ServiceException("Caller is already inside a transaction.");
}
void assertAlive() {