From 8a36bbbdb2d769de01df1fc918deb9bcc3f7b57e Mon Sep 17 00:00:00 2001 From: Jaremy Creechley Date: Tue, 19 Sep 2023 20:48:59 -0700 Subject: [PATCH] it runs! --- datastore/datastore2.nim | 2 ++ datastore/threadproxyds.nim | 6 +++--- tests/datastore/testthreadproxyds.nim | 11 +++++++---- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/datastore/datastore2.nim b/datastore/datastore2.nim index 6596e67..3bacf9b 100644 --- a/datastore/datastore2.nim +++ b/datastore/datastore2.nim @@ -23,4 +23,6 @@ proc get*[T](self: Datastore2[T], key: KeyBuffer): ?!ValueBuffer {.nimcall.} = proc put*[T](self: Datastore2[T], key: KeyBuffer, data: ValueBuffer): ?!void {.nimcall.} = self.put(self.ids, key, data) proc close*[T](self: Datastore2[T]): ?!void {.nimcall.} = + echo "CLOSE: ", self + echo "CLOSE: ", self.ids.repr self.close(self.ids) diff --git a/datastore/threadproxyds.nim b/datastore/threadproxyds.nim index 4771cec..efbf537 100644 --- a/datastore/threadproxyds.nim +++ b/datastore/threadproxyds.nim @@ -105,13 +105,13 @@ method put*[T]( await sig.acquireSig() let ret = newSharedPtr(ThreadResult[void]) - proc submitPut(): ?!void = + proc submitPut() = let bkey = KeyBuffer.new(key) let bval = DataBuffer.new(data) # queue taskpool work self.tds[].tp.spawn putTask(sig, ret, self.tds, bkey, bval) - submitPut().get() + submitPut() await sig.wait() return ret.convert(void) @@ -188,7 +188,7 @@ method close*[T]( ): Future[?!void] {.async.} = # TODO: how to handle failed close? result = success() - ? close(self.tds[].ds) + close(self.tds[].ds).get() if self.tds[].tp != nil: ## this can block... how to handle? maybe just leak? diff --git a/tests/datastore/testthreadproxyds.nim b/tests/datastore/testthreadproxyds.nim index 6fce041..fc49bd8 100644 --- a/tests/datastore/testthreadproxyds.nim +++ b/tests/datastore/testthreadproxyds.nim @@ -30,10 +30,10 @@ proc testThreadProxy() = key1 = Key.init("/a").tryGet data = "value for 1".toBytes() - teardownAll: - let res = await sds.close() - res.get() - echo "teardown done" + # teardownAll: + # let res = await sds.close() + # res.get() + # echo "teardown done" test "check put": # echo "\n\n=== put ===" @@ -52,6 +52,7 @@ proc testThreadProxy() = for c in res2.get(): val &= char(c) # print "get res2: ", $val + GC_fullCollect() proc testThreadProxyBasics() = suite "Test Basics": @@ -71,6 +72,7 @@ proc testThreadProxyBasics() = # # print "res3: ", res3 basicStoreTests(sds, key, bytes, otherBytes) + GC_fullCollect() # proc testThreadProxyQuery() = # suite "Test Query": @@ -105,6 +107,7 @@ when isMainModule: for i in 1..100: testThreadProxy() testThreadProxyBasics() + GC_fullCollect() # testThreadProxyQuery() else: testThreadProxy()