From 831068e68ee44f926dd5147b30a4d03c1a2190c3 Mon Sep 17 00:00:00 2001 From: Arnaud Date: Wed, 24 Dec 2025 17:09:20 +0400 Subject: [PATCH] Close the discovery store --- codex/codex.nim | 17 +++++++++++------ codex/discovery.nim | 11 +++++++++-- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/codex/codex.nim b/codex/codex.nim index 73575c53..4a9b1ee2 100644 --- a/codex/codex.nim +++ b/codex/codex.nim @@ -206,6 +206,7 @@ proc stop*(s: CodexServer) {.async.} = @[ s.codexNode.switch.stop(), s.codexNode.stop(), + s.codexNode.discovery.stop(), s.repoStore.stop(), s.maintenance.stop(), ] @@ -220,7 +221,8 @@ proc stop*(s: CodexServer) {.async.} = raiseAssert "Failed to stop Storage node" proc close*(s: CodexServer) {.async.} = - var futures = @[s.codexNode.close(), s.repoStore.close()] + var futures = + @[s.codexNode.close(), s.repoStore.close(), s.codexNode.discovery.close()] let res = await noCancel allFinishedFailed[void](futures) @@ -282,12 +284,15 @@ proc new*( msg: "Unable to create discovery directory for block store: " & discoveryDir ) + let providersPath = config.dataDir / CodexDhtProvidersNamespace + let discoveryStoreRes = LevelDbDatastore.new(providersPath) + if discoveryStoreRes.isErr: + error "Failed to initialize discovery datastore", + path = providersPath, err = discoveryStoreRes.error.msg + let - discoveryStore = Datastore( - LevelDbDatastore.new(config.dataDir / CodexDhtProvidersNamespace).expect( - "Should create discovery datastore!" - ) - ) + discoveryStore = + Datastore(discoveryStoreRes.expect("Should create discovery datastore!")) discovery = Discovery.new( switch.peerInfo.privateKey, diff --git a/codex/discovery.nim b/codex/discovery.nim index 424ec9c0..11f1e741 100644 --- a/codex/discovery.nim +++ b/codex/discovery.nim @@ -44,6 +44,7 @@ type Discovery* = ref object of RootObj # address that the node can be connected on dhtRecord*: ?SignedPeerRecord # record to advertice DHT connection information isStarted: bool + store: Datastore proc toNodeId*(cid: Cid): NodeId = ## Cid to discovery id @@ -218,6 +219,11 @@ proc stop*(d: Discovery) {.async: (raises: []).} = except CatchableError as exc: error "Error stopping discovery", exc = exc.msg +proc close*(d: Discovery) {.async: (raises: []).} = + let res = await noCancel d.store.close() + if res.isErr: + error "Error closing discovery store", error = res.error().msg + proc new*( T: type Discovery, key: PrivateKey, @@ -230,8 +236,9 @@ proc new*( ## Create a new Discovery node instance for the given key and datastore ## - var self = - Discovery(key: key, peerId: PeerId.init(key).expect("Should construct PeerId")) + var self = Discovery( + key: key, peerId: PeerId.init(key).expect("Should construct PeerId"), store: store + ) self.updateAnnounceRecord(announceAddrs)