mirror of
https://github.com/logos-storage/nim-datastore.git
synced 2026-01-05 23:23:10 +00:00
sweet, defect works
This commit is contained in:
parent
8b72f83995
commit
3e0d5c91c1
@ -34,7 +34,7 @@ method has*(
|
|||||||
has(ret, self.tds, key)
|
has(ret, self.tds, key)
|
||||||
await wait(ret[].signal)
|
await wait(ret[].signal)
|
||||||
finally:
|
finally:
|
||||||
ret[].signal.release()
|
ret[].signal.close()
|
||||||
|
|
||||||
return ret.convert(bool)
|
return ret.convert(bool)
|
||||||
|
|
||||||
@ -49,7 +49,7 @@ method delete*(
|
|||||||
delete(ret, self.tds, key)
|
delete(ret, self.tds, key)
|
||||||
await wait(ret[].signal)
|
await wait(ret[].signal)
|
||||||
finally:
|
finally:
|
||||||
ret[].signal.release()
|
ret[].signal.close()
|
||||||
|
|
||||||
return ret.convert(void)
|
return ret.convert(void)
|
||||||
|
|
||||||
@ -80,7 +80,7 @@ method get*(
|
|||||||
get(ret, self.tds, key)
|
get(ret, self.tds, key)
|
||||||
await wait(ret[].signal)
|
await wait(ret[].signal)
|
||||||
finally:
|
finally:
|
||||||
ret[].signal.release()
|
ret[].signal.close()
|
||||||
|
|
||||||
return ret.convert(seq[byte])
|
return ret.convert(seq[byte])
|
||||||
|
|
||||||
@ -96,7 +96,7 @@ method put*(
|
|||||||
put(ret, self.tds, key, data)
|
put(ret, self.tds, key, data)
|
||||||
await wait(ret[].signal)
|
await wait(ret[].signal)
|
||||||
finally:
|
finally:
|
||||||
ret[].signal.release()
|
ret[].signal.close()
|
||||||
|
|
||||||
return ret.convert(void)
|
return ret.convert(void)
|
||||||
|
|
||||||
@ -155,7 +155,7 @@ method query*(
|
|||||||
|
|
||||||
proc dispose(): Future[?!void] {.async.} =
|
proc dispose(): Future[?!void] {.async.} =
|
||||||
iter[].it = nil # ensure our sharedptr doesn't try and dealloc
|
iter[].it = nil # ensure our sharedptr doesn't try and dealloc
|
||||||
ret[].signal.release()
|
ret[].signal.close()
|
||||||
return success()
|
return success()
|
||||||
|
|
||||||
iterWrapper.next = next
|
iterWrapper.next = next
|
||||||
|
|||||||
@ -38,8 +38,8 @@ type
|
|||||||
## result in likely memory corruption (use-after-free).
|
## result in likely memory corruption (use-after-free).
|
||||||
|
|
||||||
const
|
const
|
||||||
SignalPoolSize {.intdefine.} = 1024
|
SignalPoolSize {.intdefine.} = 20
|
||||||
SignalPoolRetries {.intdefine.} = 1_000
|
SignalPoolRetries {.intdefine.} = 10
|
||||||
|
|
||||||
var
|
var
|
||||||
signalPoolLock: Lock
|
signalPoolLock: Lock
|
||||||
@ -84,6 +84,7 @@ proc getThreadSignal*(): Future[ThreadSignalPtr] {.async, raises: [].} =
|
|||||||
discard
|
discard
|
||||||
finally:
|
finally:
|
||||||
signalPoolLock.release()
|
signalPoolLock.release()
|
||||||
|
echo "wait:signalPoolUsed: "
|
||||||
await sleepAsync(10.milliseconds)
|
await sleepAsync(10.milliseconds)
|
||||||
raise newException(DeadThreadDefect, "reached limit trying to acquire a ThreadSignalPtr")
|
raise newException(DeadThreadDefect, "reached limit trying to acquire a ThreadSignalPtr")
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user