From 3e0d5c91c13304d6879750b987955ffdc7c2ec84 Mon Sep 17 00:00:00 2001 From: Jaremy Creechley Date: Tue, 5 Sep 2023 16:24:33 -0700 Subject: [PATCH] sweet, defect works --- datastore/threadproxyds.nim | 10 +++++----- datastore/threadresults.nim | 5 +++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/datastore/threadproxyds.nim b/datastore/threadproxyds.nim index adafb1e..07960d6 100644 --- a/datastore/threadproxyds.nim +++ b/datastore/threadproxyds.nim @@ -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 diff --git a/datastore/threadresults.nim b/datastore/threadresults.nim index d9b32dc..5c3c363 100644 --- a/datastore/threadresults.nim +++ b/datastore/threadresults.nim @@ -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")