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%2Fgraph%2FReadGraphImpl.java;fp=bundles%2Forg.simantics.db.impl%2Fsrc%2Forg%2Fsimantics%2Fdb%2Fimpl%2Fgraph%2FReadGraphImpl.java;h=a693b29228e026c1e1f6a5c7f3652c8d4320eb4c;hp=3e955febc54743e25134184a2d7c3d9d85b9135c;hb=f002990cb02c4842cdc992395117958f75fff68c;hpb=5f5747460a3330a1317395fedb60db33f6c00ab2 diff --git a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/graph/ReadGraphImpl.java b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/graph/ReadGraphImpl.java index 3e955febc..a693b2922 100644 --- a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/graph/ReadGraphImpl.java +++ b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/graph/ReadGraphImpl.java @@ -188,6 +188,8 @@ import org.simantics.utils.DataContainer; import org.simantics.utils.Development; import org.simantics.utils.datastructures.Pair; import org.simantics.utils.datastructures.collections.CollectionUtils; +import org.simantics.utils.threads.logger.ITask; +import org.simantics.utils.threads.logger.ThreadLogger; import org.slf4j.LoggerFactory; import gnu.trove.map.hash.TObjectIntHashMap; @@ -1923,7 +1925,12 @@ public class ReadGraphImpl implements AsyncReadGraph { @Override public T syncRequest(final Read request) throws DatabaseException { assert (request != null); - return (T)QueryCache.runnerReadEntry(this, request, parent, null, null, true); + + ITask task = ThreadLogger.task(request); + T result = (T)QueryCache.runnerReadEntry(this, request, parent, null, null, true); + task.finish(); + return result; + } @Override @@ -1943,9 +1950,11 @@ public class ReadGraphImpl implements AsyncReadGraph { assert (request != null); + ITask task = ThreadLogger.task(request); ListenerBase listener = procedure != null ? getListenerBase(procedure) : null; - - return QueryCache.resultReadEntry(this, request, parent, listener, procedure); + T result = QueryCache.resultReadEntry(this, request, parent, listener, procedure); + task.finish(); + return result; } @@ -2029,11 +2038,11 @@ public class ReadGraphImpl implements AsyncReadGraph { assert (request != null); + ITask task = ThreadLogger.task(request); ListenerBase listener = getListenerBase(procedure); - -// BlockingAsyncProcedure ap = new BlockingAsyncProcedure<>(this, procedure, request); - return (T)QueryCache.runnerAsyncReadEntry(this, request, parent, listener, procedure, true); -// return ap.get(); + T result = (T)QueryCache.runnerAsyncReadEntry(this, request, parent, listener, procedure, true); + task.finish(); + return result; } @@ -5232,13 +5241,29 @@ public class ReadGraphImpl implements AsyncReadGraph { assert (request != null); assert (procedure != null); + ITask task = ThreadLogger.task(request); + processor.scheduleNow(new SessionTask(this) { @Override public void run0(int thread) { try { final ListenerBase listener = getListenerBase(procedure); - QueryCache.runnerAsyncReadEntry(ReadGraphImpl.this, request, parent, listener, procedure, false); + QueryCache.runnerAsyncReadEntry(ReadGraphImpl.this, request, parent, listener, new AsyncProcedure() { + + @Override + public void execute(AsyncReadGraph graph, T result) { + task.finish(); + procedure.execute(graph, result); + } + + @Override + public void exception(AsyncReadGraph graph, Throwable throwable) { + task.finish(); + procedure.exception(graph, throwable); + } + + }, false); } catch (DatabaseException e) { Logger.defaultLogError(e); }