diff --git a/datastore/threads/threadproxyds.nim b/datastore/threads/threadproxyds.nim index d0655d7..c015491 100644 --- a/datastore/threads/threadproxyds.nim +++ b/datastore/threads/threadproxyds.nim @@ -320,6 +320,9 @@ method query*( lock = newAsyncLock() # serialize querying under threads iter = QueryIter.new() + echo "query:first:iter:dispatch" + await nextSignal.fire() + echo "query:next:ready: " proc next(): Future[?!QueryResponse] {.async.} = @@ -337,19 +340,16 @@ method query*( echo "query:next:iter:finished" return failure (ref QueryEndedError)(msg: "Calling next on a finished query!") - if not ctx[].running: - echo "query:next:iter:finished " - iter.finished = true - return - echo "query:next:acquire:lock" await lock.acquire() - echo "query:next:iter:dispatch" - await nextSignal.fire() - echo "query:next:iter:dispatch:wait" await wait(ctx[].signal) + if not ctx[].running: + echo "query:next:iter:finished " + iter.finished = true + # return + echo "query:next:iter:res: ", ctx[].res, "\n" if ctx[].res.isErr(): @@ -360,6 +360,9 @@ method query*( let data = qres.data.toSeq() return (?!QueryResponse).ok((key: key, data: data)) + echo "query:next:iter:dispatch" + await nextSignal.fire() + iter.next = next return success iter