]> gerrit.simantics Code Review - simantics/platform.git/commitdiff
Allow ExternalReadEntry.compute to continue graph handling 39/4539/1 release/1.43.0-CVM
authorjsimomaa <jani.simomaa@gmail.com>
Mon, 5 Oct 2020 20:11:39 +0000 (23:11 +0300)
committerJussi Koskela <jussi.koskela@semantum.fi>
Wed, 14 Oct 2020 09:40:05 +0000 (12:40 +0300)
This is a bit hazard as ExternalReads should not fiddle with ThreadLocal
graphs (e.g. SCLContext.getCurrent().get("graph")

gitlab #5

Change-Id: I833113eda418fab9ae5ff4b247a7fa09469ad921

bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/ExternalReadEntry.java

index 4b2269d5281dc05b94adec0e9568ee18c6006e3e..8d7b0597fde5e3563649befe516e26f61a00484c 100644 (file)
@@ -181,13 +181,15 @@ final public class ExternalReadEntry<T> extends CacheEntryBase<AsyncProcedure<T>
                try {
                        
                        ReadGraphImpl queryGraph = graph.withParent(this, null, true);
+                       queryGraph.asyncBarrier.inc();
 
-                       if(!registered) {
-                               id.register(graph, this);
+                       if (!registered) {
+                               id.register(queryGraph, this);
                                registered = true;
                        }
-                       
-                       queryGraph.asyncBarrier.waitBarrier(id, graph);
+
+                       queryGraph.asyncBarrier.dec();
+                       queryGraph.asyncBarrier.waitBarrier(id, queryGraph);
 
                } catch (Throwable t) {