]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.procore/src/fi/vtt/simantics/procore/internal/QueryControlImpl.java
AsyncBarrier.dec runs into refcounting problem
[simantics/platform.git] / bundles / org.simantics.db.procore / src / fi / vtt / simantics / procore / internal / QueryControlImpl.java
index 53a3dc1ad0b955c57547e70b450fbf55c6cd8907..f5e55deaae4d8a3b45b434c50c84c76577943836 100644 (file)
@@ -13,6 +13,7 @@ import org.simantics.db.impl.graph.ReadGraphImpl;
 import org.simantics.db.procedure.AsyncContextMultiProcedure;
 import org.simantics.db.procedure.AsyncMultiProcedure;
 import org.simantics.db.request.ExternalRead;
+import org.simantics.db.request.Read;
 import org.simantics.db.service.QueryControl;
 import org.simantics.utils.DataContainer;
 import org.slf4j.Logger;
@@ -145,6 +146,17 @@ public class QueryControlImpl implements QueryControl {
                ReadGraphImpl impl = (ReadGraphImpl)graph;
                return impl.withParent(null, null, false);
        }
+       
+    @Override
+    public <T> T syncRequestIndependent(ReadGraph graph, Read<T> request) throws DatabaseException {
+        ReadGraphImpl independent = ((ReadGraphImpl)graph).withParent(null, null, false);
+        independent.asyncBarrier.inc();
+        try {
+            return independent.syncRequest(request);
+        } finally {
+            independent.asyncBarrier.dec();
+        }
+    }
 
        @Override
        public boolean hasParentRequest(ReadGraph graph) {