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%2FQueryThread.java;h=cfa088a2dbfd7a966e0af3db7f4d9a5aa5d1ad4c;hp=5510944dc319265e7e033e38a5462e62b280ee16;hb=90a52d58489b6c518b13dde238923125c8f63eec;hpb=bb61be97905f72c01fd99e21c263546c88edc5f7 diff --git a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/QueryThread.java b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/QueryThread.java index 5510944dc..cfa088a2d 100644 --- a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/QueryThread.java +++ b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/QueryThread.java @@ -98,11 +98,16 @@ class QueryThread extends Thread implements SessionThread { } private boolean pumpTask() { - if(!processor.freeScheduling.isEmpty()) { - tasks.add(processor.freeScheduling.removeFirst()); - processor.queueLength.decrementAndGet(); - return true; - } + // First finish existing executions + if(!processor.freeScheduling.isEmpty()) { + tasks.add(processor.freeScheduling.removeFirst()); + return true; + } + // Check for new tasks + if(!processor.topLevelTasks.isEmpty()) { + tasks.add(processor.topLevelTasks.removeFirst()); + return true; + } return false; } @@ -226,8 +231,6 @@ class QueryThread extends Thread implements SessionThread { @Override public void run() { - processor.thread.set(index); - QuerySupport support = this.querySupport; try { @@ -242,23 +245,10 @@ class QueryThread extends Thread implements SessionThread { while(!tasks.isEmpty()) { SessionTask task = tasks.remove(tasks.size()-1); -// System.err.println("QT " + index + " runs " + task); - task.run(index); + task.run(0); } -// for(int performer=0;performer