diff --git a/datastore/threadproxyds.nim b/datastore/threadproxyds.nim index f77e8b7..205418e 100644 --- a/datastore/threadproxyds.nim +++ b/datastore/threadproxyds.nim @@ -195,6 +195,8 @@ method close*( self[].tds[].ds = nil # ensure our sharedptr doesn't try and dealloc self.tds.release() + echo "close done" + # dispose(dsCell) proc newThreadProxyDatastore*( ds: Datastore, @@ -203,7 +205,8 @@ proc newThreadProxyDatastore*( var self = ThreadProxyDatastore() var value = newSharedPtr(ThreadDatastore) - # GC_ref(ds) ## TODO: is this needed? + # let dsCell = protect(cast[pointer](ds)) + GC_ref(ds) ## TODO: is this needed? try: value[].ds = ds diff --git a/tests/datastore/testthreadproxyds.nim b/tests/datastore/testthreadproxyds.nim index 6584d86..7f36d08 100644 --- a/tests/datastore/testthreadproxyds.nim +++ b/tests/datastore/testthreadproxyds.nim @@ -16,38 +16,32 @@ import ./querycommontests import pretty -proc threadTest() = - suite "Test Basic ThreadProxyDatastore": - var - sds: ThreadProxyDatastore - mem: MemoryDatastore - key1: Key - data: seq[byte] +suite "Test Basic ThreadProxyDatastore": + var + sds: ThreadProxyDatastore + mem: MemoryDatastore + key1: Key + data: seq[byte] - setupAll: - mem = MemoryDatastore.new() - sds = newThreadProxyDatastore(mem).expect("should work") - key1 = Key.init("/a").tryGet - data = "value for 1".toBytes() - - teardownAll: - let res = await sds.close() - res.get() + setupAll: + mem = MemoryDatastore.new() + sds = newThreadProxyDatastore(mem).expect("should work") + key1 = Key.init("/a").tryGet + data = "value for 1".toBytes() + + teardownAll: + let res = await sds.close() + res.get() + echo "teardown done" - test "check put": - # echo "\n\n=== put ===" - let res1 = await sds.put(key1, data) - print "res1: ", res1 - check res1.isOk - # GC_fullCollect() + test "check put": + # echo "\n\n=== put ===" + let res1 = await sds.put(key1, data) + print "res1: ", res1 + check res1.isOk -proc main() = - threadTest() - # GC_fullCollect() - -main() -# GC_fullCollect() +# GC_fullCollect() # this fails due to MemoryStore already being freed... # test "check get": # # echo "\n\n=== get ==="