From: jsimomaa Date: Mon, 5 Oct 2020 20:11:39 +0000 (+0300) Subject: Allow ExternalReadEntry.compute to continue graph handling X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F39%2F4539%2F1;p=simantics%2Fplatform.git Allow ExternalReadEntry.compute to continue graph handling This is a bit hazard as ExternalReads should not fiddle with ThreadLocal graphs (e.g. SCLContext.getCurrent().get("graph") gitlab #5 Change-Id: I833113eda418fab9ae5ff4b247a7fa09469ad921 --- diff --git a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/ExternalReadEntry.java b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/ExternalReadEntry.java index 4b2269d52..8d7b0597f 100644 --- a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/ExternalReadEntry.java +++ b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/ExternalReadEntry.java @@ -181,13 +181,15 @@ final public class ExternalReadEntry extends CacheEntryBase 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) {