From 84536744d4f643c1c68fb71ea2b58840c7cb0a47 Mon Sep 17 00:00:00 2001 From: Bulat-Ziganshin Date: Thu, 8 Sep 2022 06:04:20 +0300 Subject: [PATCH] Disable only advertiseQueue.put when listBlocks isn't called by advertiseQueueLoop, we have 0% of CPU usage. so 1) idle node burns cpu exclusively inside advertiseQueueLoop 2) idle node memleaks exclusively via advertiseQueue.put --- codex/blockexchange/engine/discovery.nim | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/codex/blockexchange/engine/discovery.nim b/codex/blockexchange/engine/discovery.nim index 5672d263..14c2f2ea 100644 --- a/codex/blockexchange/engine/discovery.nim +++ b/codex/blockexchange/engine/discovery.nim @@ -76,9 +76,11 @@ proc discoveryQueueLoop(b: DiscoveryEngine) {.async.} = await sleepAsync(b.discoveryLoopSleep) proc advertiseQueueLoop*(b: DiscoveryEngine) {.async.} = + var x=0 proc onBlock(cid: Cid) {.async.} = try: - await b.advertiseQueue.put(cid) + #await b.advertiseQueue.put(cid) + x = x+1 except CancelledError as exc: trace "Cancelling block listing" raise exc @@ -87,6 +89,7 @@ proc advertiseQueueLoop*(b: DiscoveryEngine) {.async.} = while b.discEngineRunning: discard await b.localStore.listBlocks(onBlock) + if x==42: echo x trace "About to sleep advertise loop", sleep = b.advertiseLoopSleep await sleepAsync(b.advertiseLoopSleep)