diff --git a/lbry/wallet/server/block_processor.py b/lbry/wallet/server/block_processor.py index 69a57a2eb..437b24f18 100644 --- a/lbry/wallet/server/block_processor.py +++ b/lbry/wallet/server/block_processor.py @@ -183,6 +183,7 @@ class BlockProcessor: self.state_lock = asyncio.Lock() self.search_cache = {} + self.history_cache = {} async def run_in_thread_with_lock(self, func, *args): # Run in a thread to prevent blocking. Shielded so that @@ -213,6 +214,7 @@ class BlockProcessor: await self.run_in_thread_with_lock(self.advance_blocks, blocks) for cache in self.search_cache.values(): cache.clear() + self.history_cache.clear() await self._maybe_flush() processed_time = time.perf_counter() - start self.block_count_metric.set(self.height) diff --git a/lbry/wallet/server/session.py b/lbry/wallet/server/session.py index d5aca7ef0..ff7e259bb 100644 --- a/lbry/wallet/server/session.py +++ b/lbry/wallet/server/session.py @@ -177,7 +177,7 @@ class SessionManager: self.cur_group = SessionGroup(0) self.txs_sent = 0 self.start_time = time.time() - self.history_cache = pylru.lrucache(256) + self.history_cache = self.bp.history_cache self.notified_height: typing.Optional[int] = None # Cache some idea of room to avoid recounting on each subscription self.subs_room = 0 @@ -623,11 +623,6 @@ class SessionManager: height_changed = height != self.notified_height if height_changed: await self._refresh_hsub_results(height) - # Invalidate our history cache for touched hashXs - hc = self.history_cache - for hashX in set(hc).intersection(touched): - del hc[hashX] - if self.sessions: await asyncio.wait([ session.notify(touched, height_changed) for session in self.sessions