From 75d81fd2c0e4cbd0a2e1cb2082a37e71c0248300 Mon Sep 17 00:00:00 2001 From: pasta Date: Fri, 16 Feb 2024 11:28:16 -0600 Subject: [PATCH] refactor: use atomic to avoid blocking chainlocks cs on each call to cleanup --- src/llmq/chainlocks.cpp | 7 ++----- src/llmq/chainlocks.h | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/llmq/chainlocks.cpp b/src/llmq/chainlocks.cpp index 8afe492c1c49a..ae72bdf1a2212 100644 --- a/src/llmq/chainlocks.cpp +++ b/src/llmq/chainlocks.cpp @@ -617,11 +617,8 @@ void CChainLocksHandler::Cleanup() return; } - { - LOCK(cs); - if (GetTimeMillis() - lastCleanupTime < CLEANUP_INTERVAL) { - return; - } + if (GetTimeMillis() - lastCleanupTime < CLEANUP_INTERVAL) { + return; } // need mempool.cs due to GetTransaction calls diff --git a/src/llmq/chainlocks.h b/src/llmq/chainlocks.h index f341878d80dde..71737b8718227 100644 --- a/src/llmq/chainlocks.h +++ b/src/llmq/chainlocks.h @@ -82,7 +82,7 @@ class CChainLocksHandler : public CRecoveredSigsListener std::map seenChainLocks GUARDED_BY(cs); - int64_t lastCleanupTime GUARDED_BY(cs) {0}; + std::atomic lastCleanupTime{0}; public: explicit CChainLocksHandler(CChainState& chainstate, CConnman& _connman, CMasternodeSync& mn_sync, CQuorumManager& _qman,