public synchronized void startRead(int thread, final SessionRead task) {
- session.queryProvider2.scheduleAlways(thread, new SessionTask(task.object, task.thread, task.syncCaller) {
+ session.queryProvider2.scheduleNow(new SessionTask(null) {
@Override
- public void run(int thread) {
+ public void run0(int thread) {
try {
transactionState.startReadTransaction(thread);
task.run(thread);
public synchronized void startReadUpdate(int thread) {
- session.queryProvider2.scheduleAlways(thread, new SessionTask(null, thread) {
+ session.queryProvider2.scheduleNow(new SessionTask(null) {
@Override
- public void run(int thread) {
+ public void run0(int thread) {
session.fireFinishReadTransaction();
public synchronized void startWrite(int thread, final SessionTask task) {
- session.queryProvider2.scheduleAlways(thread, new SessionTask((WriteTraits)task.object, task.thread) {
+ session.queryProvider2.scheduleNow(new SessionTask(null) {
@Override
- public void run(int thread) {
+ public void run0(int thread) {
try {
transactionState.startWriteTransaction(thread);
public synchronized void startWriteUpdate(int thread) {
- session.queryProvider2.scheduleAlways(thread, new SessionTask(null, thread) {
+ session.queryProvider2.scheduleNow(new SessionTask(null) {
@Override
- public void run(int thread) {
+ public void run0(int thread) {
// Support for DelayedWriteRequest cancels during the
// read-only part of the request.
if(!session.state.isAlive()) return;
WriteState<?> writeState = session.writeState;
+
+ assert(writeState != null);
+
WriteGraphImpl graph = writeState.getGraph();
if(writeState.isExcepted()) {
if (!reads.isEmpty()) {
final SessionRead read = reads.poll();
- session.queryProvider2.scheduleAlways(thread, new SessionTask(read.object, read.thread, read.syncCaller) {
+ session.queryProvider2.scheduleNow(new SessionTask(null) {
@Override
- public void run(int thread) {
+ public void run0(int thread) {
read.run(thread);
if(read.notify != null) read.notify.release();
}
} else {
- throw new IllegalStateException("State in ceased should be WRITE or READ or INIT (was " + state + ")");
+ // Spurious wakeup
+
+ //throw new IllegalStateException("State in ceased should be WRITE or READ or INIT (was " + state + ")");
}
assert(State.INIT != state);
if(State.READ == state) {
- session.queryProvider2.schedule(Integer.MIN_VALUE, new SessionTask(task.object, task.thread, task.syncCaller) {
+ session.queryProvider2.scheduleNow(new SessionTask(null) {
@Override
- public void run(int thread) {
+ public void run0(int thread) {
try {
task.run(thread);
} finally {
boolean inUpdate = state == State.WRITE_UPDATE;
+ //System.err.println("schedule write " + task);
+
assert(State.INIT != state);
//task.combine = combine != null ? combine : inUpdate;
if(State.IDLE == state) {