X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.db.impl%2Fsrc%2Forg%2Fsimantics%2Fdb%2Fimpl%2Fquery%2FExternalReadEntry.java;h=bd99e1bc4a174368a46a5fa0f8f7db289e8ef6df;hb=68ce0966a57f5153b133c6283fdbae10f683b745;hp=7fb8598b7c36087f074ea71425b8c4c2434fc0d1;hpb=f62e0d1376fc97b0a5b1ade086d52e77a606f7e2;p=simantics%2Fplatform.git 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 7fb8598b7..bd99e1bc4 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 @@ -15,6 +15,7 @@ import java.util.ArrayList; import java.util.LinkedList; import org.simantics.db.exception.DatabaseException; +import org.simantics.db.impl.DebugPolicy; import org.simantics.db.impl.graph.ReadGraphImpl; import org.simantics.db.procedure.AsyncProcedure; import org.simantics.db.procedure.Procedure; @@ -47,6 +48,15 @@ final public class ExternalReadEntry extends CacheEntryBase request = null; super.discard(); } + + @Override + public void setPending() { + if(result != NO_RESULT) { + //new Exception("result = " + result).printStackTrace(); + } + statusOrException = PENDING; + result = REQUIRES_COMPUTATION; + } public ExternalReadEntry(ExternalRead request) { assert request != null; @@ -89,6 +99,25 @@ final public class ExternalReadEntry extends CacheEntryBase } + @Override + public void except(Throwable t) { + if(DebugPolicy.QUERY_STATE) System.out.println("[QUERY STATE]: excepted " + this); + if(statusOrException != DISCARDED) { + statusOrException = EXCEPTED; + result = t; + } else { + result = t; + } + assert(isExcepted()); + } + + @Override + public void setResult(Object result) { + super.setResult(result); + assert(!(result instanceof Throwable)); + assert(!isExcepted()); + } + @Override final public Query getQuery() { @@ -102,6 +131,7 @@ final public class ExternalReadEntry extends CacheEntryBase // Update if(!items.isEmpty()) { + setReady(); setResult(items.removeFirst()); } // Reschedule @@ -163,7 +193,7 @@ final public class ExternalReadEntry extends CacheEntryBase // Do nothing - the state is already set and cannot be recomputed on demand } - @Override + //@Override public Object compute(ReadGraphImpl graph, AsyncProcedure procedure) throws DatabaseException { return graph.processor.cache.performQuery(graph, request, this, procedure); }