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=2d3c92d8242ed3259ea0518520262666cbabd423;hb=de8b6e194da6d56c410101d9c72763078b0e8717;hp=24a2dbe960be9ec03877a241ca0580f79ef4b3ab;hpb=5bc1c2b950d374ecfcc206981724c3b9286dcbd6;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 24a2dbe96..2d3c92d82 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 @@ -13,6 +13,7 @@ import org.simantics.db.exception.DatabaseException; import org.simantics.db.impl.DebugPolicy; import org.simantics.db.impl.graph.ReadGraphImpl; import org.simantics.db.impl.procedure.InternalProcedure; +import org.simantics.db.impl.query.QueryProcessor.SessionTask; import org.simantics.db.procedure.AsyncMultiProcedure; import org.simantics.db.procedure.AsyncProcedure; import org.simantics.db.procedure.Listener; @@ -634,31 +635,36 @@ public class QueryCacheBase { } } - public static void waitPending(CacheEntry entry) throws DatabaseException { + public static void waitPending(QueryProcessor processor, CacheEntry entry) throws DatabaseException { int counter = 0; while(entry.isPending()) { try { - Thread.sleep(1); - counter++; - if(counter > 5000) { - CacheEntryBase base = ((CacheEntryBase)entry); -// if(base.created != null) { -// System.err.println("created:"); -// base.created.printStackTrace(); -// } -// if(base.performed != null) { -// System.err.println("performed:"); -// base.performed.printStackTrace(); -// } -// if(base.ready != null) { -// 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."); - //System.err.println("asd"); - //base.getQuery().recompute(null, null, entry); + SessionTask task = null;//processor.getOwnTask(processor.thread.get()); + if(task != null) { + task.run(processor.thread.get()); + } else { + Thread.sleep(1); + counter++; + if(counter > 5000) { + CacheEntryBase base = ((CacheEntryBase)entry); +// if(base.created != null) { +// System.err.println("created:"); +// base.created.printStackTrace(); +// } +// if(base.performed != null) { +// System.err.println("performed:"); +// base.performed.printStackTrace(); +// } +// if(base.ready != null) { +// 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."); + //System.err.println("asd"); + //base.getQuery().recompute(null, null, entry); + } } } catch (InterruptedException e) { }