import org.simantics.db.exception.RuntimeDatabaseException;
import org.simantics.db.impl.query.CacheEntry;
import org.simantics.db.impl.query.QueryProcessor.AsyncBarrier;
+import org.simantics.db.impl.query.QueryProcessor.SessionTask;
final public class AsyncBarrierImpl extends AtomicInteger implements AsyncBarrier {
private static final long serialVersionUID = 4724463372850048672L;
- static final int WAIT_TIME = 600;
+ static final int WAIT_TIME = 60000;
public static final boolean PRINT = false;
final public AsyncBarrierImpl caller;
+
+ final public Runnable callback;
- public AsyncBarrierImpl(AsyncBarrierImpl caller, CacheEntry<?> entry) {
+ public AsyncBarrierImpl(AsyncBarrierImpl caller, CacheEntry<?> entry, Runnable callback) {
super(0);
this.caller = caller;
+ this.callback = callback;
if (BarrierTracing.BOOKKEEPING) {
BarrierTracing.trace(this, entry);
}
new Exception());
}
assert (count >= 0);
+
+ if(callback != null)
+ callback.run();
+
}
}
e.printStackTrace();
}
}
- if(waitCount > WAIT_TIME*1000) {
+ if(waitCount > WAIT_TIME) {
System.err.println("AsyncBarrierImpl.waitBarrier("
+ request
synchronized (BarrierTracing.reverseLookup) {
printReverse(this, 0);
}
+ BarrierTracing.printBAPS();
+ }
+
+ for(SessionTask t : impl.processor.freeScheduling) {
+ System.err.println("Pending task:" + t);
}
// if(Development.DEVELOPMENT) {