From afae1b4a423a159930b90dd0c593645020ef98f8 Mon Sep 17 00:00:00 2001 From: Neil Booth Date: Fri, 10 Aug 2018 09:20:56 +0900 Subject: [PATCH] Fix rare race condition Closes #567 --- electrumx/server/session.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/electrumx/server/session.py b/electrumx/server/session.py index 9f63027..b479654 100644 --- a/electrumx/server/session.py +++ b/electrumx/server/session.py @@ -670,8 +670,10 @@ class ElectrumX(SessionBase): # Check mempool hashXs - the status is a function of the # confirmed state of other transactions. Note: we cannot # iterate over mempool_statuses as it changes size. - for hashX in set(self.mempool_statuses): - old_status = self.mempool_statuses[hashX] + for hashX in tuple(self.mempool_statuses): + # Items can be evicted whilst await-ing below; False + # ensures such hashXs are notified + old_status = self.mempool_statuses.get(hashX, False) status = await self.address_status(hashX) if status != old_status: alias = self.hashX_subs[hashX]