From 08dbcf696b2a71782806b3b2dbd64f7d72859797 Mon Sep 17 00:00:00 2001 From: Lloyd Date: Tue, 25 Nov 2025 22:51:30 +0000 Subject: [PATCH] feat: add caching for known neighbors in RepeaterHandler to improve performance and dedupe adverts. --- repeater/engine.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/repeater/engine.py b/repeater/engine.py index fc1f9a1..9d31867 100644 --- a/repeater/engine.py +++ b/repeater/engine.py @@ -98,8 +98,8 @@ class RepeaterHandler(BaseHandler): self._transport_keys_cache_time = 0 self._transport_keys_cache_ttl = 60 # Cache for 60 seconds - # Track last drop reason for better logging self._last_drop_reason = None + self._known_neighbors = set() self._start_background_tasks() @@ -385,11 +385,16 @@ class RepeaterHandler(BaseHandler): current_time = time.time() - # Check if this is a new neighbor - current_neighbors = self.storage.get_neighbors() if self.storage else {} - is_new_neighbor = pubkey not in current_neighbors - - # Create advert record for storage + if pubkey not in self._known_neighbors: + # Only check database if not in cache + current_neighbors = self.storage.get_neighbors() if self.storage else {} + is_new_neighbor = pubkey not in current_neighbors + + if is_new_neighbor: + self._known_neighbors.add(pubkey) + else: + is_new_neighbor = False + advert_record = { "timestamp": current_time, "pubkey": pubkey,