sweet, defect works

This commit is contained in:
Jaremy Creechley 2023-09-05 16:24:33 -07:00
parent 8b72f83995
commit 3e0d5c91c1
No known key found for this signature in database
GPG Key ID: 4E66FB67B21D3300
2 changed files with 8 additions and 7 deletions

View File

@ -34,7 +34,7 @@ method has*(
has(ret, self.tds, key)
await wait(ret[].signal)
finally:
ret[].signal.release()
ret[].signal.close()
return ret.convert(bool)
@ -49,7 +49,7 @@ method delete*(
delete(ret, self.tds, key)
await wait(ret[].signal)
finally:
ret[].signal.release()
ret[].signal.close()
return ret.convert(void)
@ -80,7 +80,7 @@ method get*(
get(ret, self.tds, key)
await wait(ret[].signal)
finally:
ret[].signal.release()
ret[].signal.close()
return ret.convert(seq[byte])
@ -96,7 +96,7 @@ method put*(
put(ret, self.tds, key, data)
await wait(ret[].signal)
finally:
ret[].signal.release()
ret[].signal.close()
return ret.convert(void)
@ -155,7 +155,7 @@ method query*(
proc dispose(): Future[?!void] {.async.} =
iter[].it = nil # ensure our sharedptr doesn't try and dealloc
ret[].signal.release()
ret[].signal.close()
return success()
iterWrapper.next = next

View File

@ -38,8 +38,8 @@ type
## result in likely memory corruption (use-after-free).
const
SignalPoolSize {.intdefine.} = 1024
SignalPoolRetries {.intdefine.} = 1_000
SignalPoolSize {.intdefine.} = 20
SignalPoolRetries {.intdefine.} = 10
var
signalPoolLock: Lock
@ -84,6 +84,7 @@ proc getThreadSignal*(): Future[ThreadSignalPtr] {.async, raises: [].} =
discard
finally:
signalPoolLock.release()
echo "wait:signalPoolUsed: "
await sleepAsync(10.milliseconds)
raise newException(DeadThreadDefect, "reached limit trying to acquire a ThreadSignalPtr")