X-Git-Url: https://git.novaco.in/?p=electrum-server.git;a=blobdiff_plain;f=processor.py;h=71b9d625ebbfe61dfe1d4704042b602976e4a2e3;hp=baec5d085dd6fa5048a0d1d50cfbbb51f7d83196;hb=ac6403ee0964644e1afe3f5df2daaf668a0ef261;hpb=39b39855ff131a79eb769fe5dcc7bd2ee6b820a9 diff --git a/processor.py b/processor.py index baec5d0..71b9d62 100644 --- a/processor.py +++ b/processor.py @@ -175,15 +175,20 @@ class RequestDispatcher(threading.Thread): def collect_garbage(self): # Deep copy entire sessions list and blank it - # This is done to minimise lock contention + # This is done to minimize lock contention with self.lock: sessions = self.sessions[:] - self.sessions = [] + + active_sessions = [] for session in sessions: if not session.stopped(): # If session is still alive then re-add it back # to our internal register - self.add_session(session) + active_sessions.append(session) + + with self.lock: + self.sessions = active_sessions[:] + class Session: