diff --git a/datastore/sharedds.nim b/datastore/sharedds.nim index f9d689b..68e0f4c 100644 --- a/datastore/sharedds.nim +++ b/datastore/sharedds.nim @@ -105,7 +105,7 @@ method close*( ## this can block... how to handle? maybe just leak? self.tds[].tp.shutdown() -proc newSharedDataStore*[T: Datastore]( +proc newSharedDataStore*( ds: Datastore, ): Future[?!SharedDatastore] {.async.} = @@ -120,7 +120,10 @@ proc newSharedDataStore*[T: Datastore]( echo "\nnewDataStore: threadId:", getThreadId() # GC_ref(ds) res[].value[].ds = ds - res.createThreadDatastore() + try: + res[].value[].tp = Taskpool.new(num_threads = 2) + except Exception as exc: + return err((ref DatastoreError)(msg: exc.msg)) await wait(res[].signal) finally: echo "closing signal" diff --git a/datastore/threadbackend.nim b/datastore/threadbackend.nim index ba91ad8..69e6e31 100644 --- a/datastore/threadbackend.nim +++ b/datastore/threadbackend.nim @@ -128,13 +128,3 @@ proc put*( print "bval: ", bval tds[].tp.spawn putTask(ret, tds[].backend, bkey, bval) - -proc createThreadDatastore*(ret: ThreadDatastorePtr): Result[void, ref CatchableError] = - try: - echo "createThreadDatastore: start" - ret[].tp = Taskpool.new(num_threads = 2) - echo "createThreadDatastore: done" - - except Exception as exc: - return err((ref DatastoreError)(msg: exc.msg)) - diff --git a/tests/datastore/testsharedds.nim b/tests/datastore/testsharedds.nim index 5c47f43..81ef17e 100644 --- a/tests/datastore/testsharedds.nim +++ b/tests/datastore/testsharedds.nim @@ -1,13 +1,14 @@ import std/options import std/sequtils import std/os -from std/algorithm import sort, reversed +import std/algorithm import pkg/asynctest/unittest2 import pkg/chronos import pkg/stew/results import pkg/stew/byteutils +import pkg/datastore/memoryds import pkg/datastore/sharedds import ./dscommontests @@ -24,7 +25,8 @@ suite "Test Basic SharedDatastore": let backend = ThreadBackend( kind: TestBackend, ) - let res = await newSharedDataStore(backend) + let mem = MemoryDatastore.new() + let res = await newSharedDataStore(mem) check res.isOk() sds = res.get() # echo "sds: ", repr sds