]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.impl/src/org/simantics/db/impl/graph/BarrierTracing.java
Multiple readers in db client
[simantics/platform.git] / bundles / org.simantics.db.impl / src / org / simantics / db / impl / graph / BarrierTracing.java
index 3ff77f6bc108c18b59535a3c02f3f1b51f78fac0..2433b897f888d15044e135433aa444fb48f498d0 100644 (file)
@@ -5,6 +5,7 @@ import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.simantics.db.impl.BlockingAsyncProcedure;
 import org.simantics.db.impl.query.CacheEntry;
 import org.simantics.db.impl.query.QueryProcessor.SessionTask;
 
@@ -19,7 +20,31 @@ public class BarrierTracing {
     public static final HashMap<AsyncBarrierImpl, CacheEntry<?>> entryMap = new HashMap<>();
     public static final HashMap<AsyncBarrierImpl, Throwable> restartMap = new HashMap<>();
     public static final HashMap<AsyncBarrierImpl, Throwable> startMap = new HashMap<>();
+    public static final HashMap<BlockingAsyncProcedure, Throwable> baps = new HashMap<>();
 
+    synchronized public static void registerBAP(BlockingAsyncProcedure bap) {
+        baps.put(bap, new Exception());
+    }
+    
+    synchronized public static void unregisterBAP(BlockingAsyncProcedure bap) {
+        baps.remove(bap);
+    }
+
+    synchronized public static void printBAPS() {
+        for(BlockingAsyncProcedure bap : baps.keySet()) {
+            Throwable e = baps.get(bap);
+            System.err.println("BlockingAsyncProcedure");
+            System.err.println("-key: " + bap.key);
+            System.err.println("-queryGraph: " + bap.queryGraph);
+            System.err.println("-callerGraph: " + bap.callerGraph);
+            System.err.println("-procedure: " + bap.procedure);
+            System.err.println("-pendingTaskSupport: " + bap.pendingTaskSupport);
+            System.err.println("-result: " + bap.result);
+            System.err.println("-exception: " + bap.exception);
+            e.printStackTrace();
+        }
+    }
+    
     public static void trace(AsyncBarrierImpl barrier, CacheEntry<?> entry) {
 
         if (RESTART_GUARD) {