From 1c3bf10873d7cf86e7314f218e4848575b25a1e2 Mon Sep 17 00:00:00 2001 From: Vladislav Lapin Date: Thu, 20 Aug 2026 14:17:26 +0300 Subject: [PATCH] fix: preserve candidate metadata during refresh Signed-off-by: Vladislav Lapin --- crawl.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/crawl.js b/crawl.js index 5f8c904..ed79572 100644 --- a/crawl.js +++ b/crawl.js @@ -277,8 +277,11 @@ async function getCurrentCandidates () { return } - const prevCandidates = await db.Candidate.find({}) - await db.Candidate.remove({}) + const smartContractAddress = config.get('blockchain.validatorAddress') + const storedCandidateAddresses = candidates.map(candidate => + candidate.replace('0x', 'xdc').toLowerCase() + ) + const prevCandidates = await db.Candidate.find({ smartContractAddress }) let map = candidates.map(async (candidate) => { const storedDetails = prevCandidates.find((e) => e.candidate === candidate.replace('0x', 'xdc').toLowerCase()) @@ -306,7 +309,14 @@ async function getCurrentCandidates () { await Promise.all(m) return updateCandidateInfo(candidate, storedLatestSignedBlock, prevStatus) }) - return Promise.all(map).catch(e => logger.info('getCurrentCandidates %s', e)) + const result = await Promise.all(map) + + await db.Candidate.deleteMany({ + smartContractAddress, + candidate: { $nin: storedCandidateAddresses } + }) + + return result } catch (e) { logger.info('getCurrentCandidates2 %s', e) }