X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.db.impl%2Fsrc%2Forg%2Fsimantics%2Fdb%2Fimpl%2Fquery%2FAsyncReadEntry.java;fp=bundles%2Forg.simantics.db.impl%2Fsrc%2Forg%2Fsimantics%2Fdb%2Fimpl%2Fquery%2FAsyncReadEntry.java;h=e13ecab72cd0819f71c3c337af62ad242db709c2;hp=72582ee605802bfe32fac38d10119f6200602586;hb=5f5747460a3330a1317395fedb60db33f6c00ab2;hpb=ceff53434e48f94c5d84ce12f3b1e21cabda457b diff --git a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/AsyncReadEntry.java b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/AsyncReadEntry.java index 72582ee60..e13ecab72 100644 --- a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/AsyncReadEntry.java +++ b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/AsyncReadEntry.java @@ -169,7 +169,14 @@ final public class AsyncReadEntry extends CacheEntryBase> i DatabaseException exception; public AsyncTask(ReadGraphImpl graph) { + this(graph, 1); + } + + public AsyncTask(ReadGraphImpl graph, int pos) { super(graph); + this.position = pos; + if(this.position < 1024) + this.position *= 2; } @Override @@ -213,10 +220,15 @@ final public class AsyncReadEntry extends CacheEntryBase> i } throw new IllegalStateException("Eternal loop in queries."); } - graph.processor.schedule(new AsyncTask(graph)); + graph.processor.scheduleLater(new AsyncTask(graph, position)); } } + @Override + public boolean maybeReady() { + return proc.isDone(); + } + } try { @@ -230,7 +242,7 @@ final public class AsyncReadEntry extends CacheEntryBase> i if(needsToBlock) task.run(0); else if (proc.isDone()) task.run(0); else { - graph.processor.schedule(task); + graph.processor.scheduleLater(task); return null; }