diff --git a/datastore/sharedds.nim b/datastore/sharedds.nim index 769e964..f9d689b 100644 --- a/datastore/sharedds.nim +++ b/datastore/sharedds.nim @@ -120,6 +120,7 @@ proc newSharedDataStore*[T: Datastore]( echo "\nnewDataStore: threadId:", getThreadId() # GC_ref(ds) res[].value[].ds = ds + res.createThreadDatastore() await wait(res[].signal) finally: echo "closing signal" diff --git a/datastore/threadbackend.nim b/datastore/threadbackend.nim index 6c06231..ba91ad8 100644 --- a/datastore/threadbackend.nim +++ b/datastore/threadbackend.nim @@ -129,20 +129,12 @@ proc put*( tds[].tp.spawn putTask(ret, tds[].backend, bkey, bval) -proc createThreadDatastore*( - ret: TResult[ThreadDatastorePtr], - backend: ThreadBackend, -) = - +proc createThreadDatastore*(ret: ThreadDatastorePtr): Result[void, ref CatchableError] = try: echo "createThreadDatastore: start" - ret[].value[].tp = Taskpool.new(num_threads = 2) - ret[].value[].tp.spawn startupDatastore(ret, backend) + ret[].tp = Taskpool.new(num_threads = 2) echo "createThreadDatastore: done" - ret[].state = Success except Exception as exc: - ret[].state = Error - ret[].error = exc.toBuffer() - discard + return err((ref DatastoreError)(msg: exc.msg))