X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.db.impl%2Fsrc%2Forg%2Fsimantics%2Fdb%2Fimpl%2Fquery%2FQueryCacheBase.java;h=d7a235fc813d4f302e719bb66647cd2cef972d91;hb=refs%2Fchanges%2F92%2F1992%2F3;hp=b3d1c5f8836dcfdc82637dc01fec5bd3dfebce82;hpb=4aba159170fc72d39c2f930ea224aa71f4cdc2e7;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/QueryCacheBase.java b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/QueryCacheBase.java index b3d1c5f88..d7a235fc8 100644 --- a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/QueryCacheBase.java +++ b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/QueryCacheBase.java @@ -637,18 +637,16 @@ public class QueryCacheBase { } } - public static void waitPending(QueryProcessor processor, CacheEntry entry) throws DatabaseException { + public static void waitPending(ReadGraphImpl graph, CacheEntry entry) throws DatabaseException { int counter = 0; while(entry.isPending()) { try { - SessionTask task = null;//processor.getOwnTask(processor.thread.get()); - if(task != null) { - task.run(processor.thread.get()); - } else { + boolean performed = graph.performPending(); + if(!performed) { Thread.sleep(1); counter++; - if(counter > 5000) { + if(counter > 30000) { CacheEntryBase base = ((CacheEntryBase)entry); // if(base.created != null) { // System.err.println("created:"); @@ -662,8 +660,8 @@ public class QueryCacheBase { // System.err.println("ready:"); // base.ready.printStackTrace(); // } - new Exception("Timeout waiting for request to complete: " + entry.getOriginalRequest().toString()).printStackTrace(); - throw new DatabaseException("Timeout waiting for request to complete."); + new Exception("Timeout waiting for request to complete: " + entry.getOriginalRequest()).printStackTrace(); + throw new DatabaseException("Timeout waiting for request to complete." + entry.getOriginalRequest()); //System.err.println("asd"); //base.getQuery().recompute(null, null, entry); } @@ -1129,15 +1127,11 @@ public class QueryCacheBase { } public static T resultReadEntry(ReadGraphImpl graph, Read r, CacheEntry parent, ListenerBase listener, AsyncProcedure procedure) throws DatabaseException { - AsyncProcedureWrapper wrap = new AsyncProcedureWrapper<>(procedure); - QueryCache.runnerReadEntry(graph, r, parent, listener, wrap, true); - return wrap.get(); + return (T)QueryCache.runnerReadEntry(graph, r, parent, listener, procedure, true); } public static T resultAsyncReadEntry(ReadGraphImpl graph, AsyncRead r, CacheEntry parent, ListenerBase listener, AsyncProcedure procedure) throws DatabaseException { - AsyncProcedureWrapper wrap = new AsyncProcedureWrapper<>(procedure); - QueryCache.runnerAsyncReadEntry(graph, r, parent, listener, wrap, true); - return wrap.get(); + return (T)QueryCache.runnerAsyncReadEntry(graph, r, parent, listener, procedure, true); } public static byte[] resultValueQuery(ReadGraphImpl graph, int r, CacheEntry parent, ListenerBase listener) throws DatabaseException {