From 4d5dfb15d0d32ec0204f334223fc90225cf41769 Mon Sep 17 00:00:00 2001 From: Marcin Czenko Date: Sun, 30 Mar 2025 20:41:56 +0200 Subject: [PATCH] uses SafeAsyncIter in "listBlocks" and in "getBlockExpirations" --- codex/blockexchange/engine/advertiser.nim | 24 +++++++---------------- tests/codex/stores/testrepostore.nim | 4 +++- 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/codex/blockexchange/engine/advertiser.nim b/codex/blockexchange/engine/advertiser.nim index b31b184f..3fb92045 100644 --- a/codex/blockexchange/engine/advertiser.nim +++ b/codex/blockexchange/engine/advertiser.nim @@ -96,28 +96,18 @@ proc advertiseBlock(b: Advertiser, cid: Cid) {.async: (raises: [CancelledError]) proc advertiseLocalStoreLoop(b: Advertiser) {.async: (raises: []).} = try: while b.advertiserRunning: + if cidsIter =? await b.localStore.listBlocks(blockType = BlockType.Torrent): + trace "Advertiser begins iterating torrent blocks..." + for c in cidsIter: + if cid =? (await cast[Future[?!Cid].Raising([CancelledError])](c)): + await b.advertiseBlock(cid) + trace "Advertiser iterating torrent blocks finished." if cidsIter =? await b.localStore.listBlocks(blockType = BlockType.Manifest): trace "Advertiser begins iterating blocks..." for c in cidsIter: - if cid =? await c: + if cid =? (await cast[Future[?!Cid].Raising([CancelledError])](c)): await b.advertiseBlock(cid) trace "Advertiser iterating blocks finished." - try: - if cids =? await b.localStore.listBlocks(blockType = BlockType.Torrent): - trace "Advertiser begins iterating torrent blocks..." - for c in cids: - if cid =? await c: - await b.advertiseBlock(cid) - trace "Advertiser iterating torrent blocks finished." - if cids =? await b.localStore.listBlocks(blockType = BlockType.Manifest): - trace "Advertiser begins iterating blocks..." - for c in cids: - if cid =? await c: - await b.advertiseBlock(cid) - trace "Advertiser iterating blocks finished." - except CatchableError as e: - error "Error in advertise local store loop", error = e.msgDetail - raiseAssert("Unexpected exception in advertiseLocalStoreLoop") await sleepAsync(b.advertiseLocalStoreLoopSleep) except CancelledError: diff --git a/tests/codex/stores/testrepostore.nim b/tests/codex/stores/testrepostore.nim index 69f38711..1299bd4b 100644 --- a/tests/codex/stores/testrepostore.nim +++ b/tests/codex/stores/testrepostore.nim @@ -296,7 +296,9 @@ asyncchecksuite "RepoStore": beIter: Future[?!SafeAsyncIter[BlockExpiration]] ): Future[seq[BlockExpiration]] {.async: (raises: [CatchableError]).} = var expirations = newSeq[BlockExpiration](0) - without iter =? (await beIter), err: + without iter =? ( + await cast[Future[?!SafeAsyncIter[BlockExpiration]].Raising([CancelledError])](beIter) + ), err: return expirations for beFut in toSeq(iter): if value =? (await beFut):