fix occasional deadlock

This commit is contained in:
Jaremy Creechley 2023-09-26 19:21:09 -07:00
parent 317d42c511
commit dacc28ab02
No known key found for this signature in database
GPG Key ID: 4E66FB67B21D3300

View File

@ -245,6 +245,8 @@ method close*(self: ThreadDatastore): Future[?!void] {.async.} =
type
QResult = DbQueryResponse[KeyId, DataBuffer]
import os
proc queryTask[DB](
ctx: TaskCtx[QResult],
ds: DB,
@ -265,6 +267,8 @@ proc queryTask[DB](
ctx[].res.ok (KeyId.none, DataBuffer(), )
echo "\tqueryTask:query:fireSync "
discard ctx[].signal.fireSync()
echo "\tqueryTask:query:nextSignal:wait "
discard nextSignal.waitSync().get()
var handle = handleRes.get()
for item in handle.iter():
@ -313,6 +317,10 @@ method query*(
dispatchTaskWrap[DbQueryResponse[KeyId, DataBuffer]](self, signal):
echo "query:init:dispatch:queryTask"
self.tp.spawn queryTask(ctx, ds, query, nextSignal)
# await wait(ctx[].signal)
await nextSignal.fire()
# await wait(ctx[].signal)
echo "query:init:dispatch:res: ", ctx[].res
@ -328,9 +336,6 @@ method query*(
proc next(): Future[?!QueryResponse] {.async.} =
echo "\n\nquery:next:exec: "
let ctx = ctx
# defer:
# if lock.locked:
# lock.release()
trace "About to query"
if lock.locked:
@ -340,9 +345,6 @@ method query*(
echo "query:next:iter:finished"
return failure (ref QueryEndedError)(msg: "Calling next on a finished query!")
# echo "query:next:acquire:lock"
# await lock.acquire()
echo "query:next:wait:signal"
await wait(ctx[].signal)