]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.impl/src/org/simantics/db/impl/graph/AsyncBarrierImpl.java
Multiple readers in db client
[simantics/platform.git] / bundles / org.simantics.db.impl / src / org / simantics / db / impl / graph / AsyncBarrierImpl.java
index b94ec6f6857cb0e0ca913ef920a5231c9ecc3577..060fc22aefb866d15a17bb0f70e7cd4692846d90 100644 (file)
@@ -18,20 +18,24 @@ import org.simantics.db.common.utils.Logger;
 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);
         }
@@ -92,6 +96,10 @@ final public class AsyncBarrierImpl extends AtomicInteger implements AsyncBarrie
                                                new Exception());
                        }
                        assert (count >= 0);
+                       
+                       if(callback != null)
+                           callback.run();
+                       
                }
 
        }
@@ -142,7 +150,7 @@ final public class AsyncBarrierImpl extends AtomicInteger implements AsyncBarrie
                                                e.printStackTrace();
                                        }
                                }
-                               if(waitCount > WAIT_TIME*1000) {
+                               if(waitCount > WAIT_TIME) {
 
                                        System.err.println("AsyncBarrierImpl.waitBarrier("
                                                        + request
@@ -153,6 +161,11 @@ final public class AsyncBarrierImpl extends AtomicInteger implements AsyncBarrie
                                                synchronized (BarrierTracing.reverseLookup) {
                                                        printReverse(this, 0);
                                                }
+                                               BarrierTracing.printBAPS();
+                                       }
+                                       
+                                       for(SessionTask t : impl.processor.freeScheduling) {
+                                           System.err.println("Pending task:" + t);
                                        }
 
 //                                     if(Development.DEVELOPMENT) {