X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.db.impl%2Fsrc%2Forg%2Fsimantics%2Fdb%2Fimpl%2Fgraph%2FBarrierTracing.java;h=3c9b7a011adf71ffa3e48d94293bd9673def5505;hb=e296c0b7f165d0a0a11900124eaba36b04b167c0;hp=3ff77f6bc108c18b59535a3c02f3f1b51f78fac0;hpb=ff1c29bf73b3e5ea939dc1987540aa0240dc4ae6;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/graph/BarrierTracing.java b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/graph/BarrierTracing.java index 3ff77f6bc..3c9b7a011 100644 --- a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/graph/BarrierTracing.java +++ b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/graph/BarrierTracing.java @@ -5,12 +5,18 @@ 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; public class BarrierTracing { - public static final boolean BOOKKEEPING = false; + private static final String KEY = "SIMANTICS_DB_IMPL_BARRIER_TRACING"; + + public static final boolean BOOKKEEPING = Boolean.parseBoolean( + System.getProperty("org.simantics.db.impl.barrierTracing", + System.getenv(KEY) != null ? System.getenv(KEY) : "false") + ); static final boolean RESTART_GUARD = BOOKKEEPING && false; public static Map tasks = new HashMap<>(); @@ -19,7 +25,25 @@ public class BarrierTracing { public static final HashMap> entryMap = new HashMap<>(); public static final HashMap restartMap = new HashMap<>(); public static final HashMap startMap = new HashMap<>(); + public static final HashMap 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()) { + bap.print(); + Throwable t = baps.get(bap); + if(t != null) + t.printStackTrace(); + } + } + public static void trace(AsyncBarrierImpl barrier, CacheEntry entry) { if (RESTART_GUARD) {