]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/AsyncReadEntry.java
Fixed multiple issues causing dangling references to discarded queries
[simantics/platform.git] / bundles / org.simantics.db.impl / src / org / simantics / db / impl / query / AsyncReadEntry.java
index 0dd5730a5f3a1f5c6c232063741bf4343303feb4..2fdb43d113332e4f33b6b131685fd8c80c112b22 100644 (file)
@@ -92,11 +92,8 @@ final public class AsyncReadEntry<T> extends CacheEntryBase<AsyncProcedure<T>> i
                         }
 
                     }, id, true);
-
-                    id.perform(proc.queryGraph, proc);
                     
-                    proc.dec();
-                    proc.get();
+                    proc.performSync(id);
 
                 } catch (Throwable t) {
                     except(t);
@@ -158,17 +155,10 @@ final public class AsyncReadEntry<T> extends CacheEntryBase<AsyncProcedure<T>> i
             AsyncProcedure<T> procedure_, boolean needsToBlock) throws DatabaseException {
 
         BlockingAsyncProcedure<T> proc = new BlockingAsyncProcedure(callerGraph, entry, procedure_, request, needsToBlock);
-
-        try {
-            request.perform(proc.queryGraph, proc);
-        } finally {
-            proc.queryGraph.asyncBarrier.dec();
-        }
-
         if(needsToBlock) {
-            proc.waitBarrier();
-            return proc.get();
+            return proc.performSync(request);
         } else {
+            proc.performAsync(request);
             return null;
         }
 
@@ -223,4 +213,9 @@ final public class AsyncReadEntry<T> extends CacheEntryBase<AsyncProcedure<T>> i
         }
     }
 
+    @Override
+    public String classId() {
+        return null;
+    }
+
 }