From a38bb6ccecf89740b543e13289a14abd3f29ce75 Mon Sep 17 00:00:00 2001 From: Leo Vasanko Date: Thu, 1 Oct 2026 06:59:33 +0000 Subject: [PATCH] =?UTF-8?q?sync=5Fuplinks:=20iterate=20a=20snapshot=20?= =?UTF-8?q?=E2=80=94=20revocation=20may=20mutate=20mid-loop?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- paskia/satellite.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/paskia/satellite.py b/paskia/satellite.py index 8acd71a..857d5b3 100644 --- a/paskia/satellite.py +++ b/paskia/satellite.py @@ -589,7 +589,8 @@ class SatelliteManager: replica = self.replicas.pop(uplink_id) await replica.stop() await _drop_client(replica.uplink.url) - for uplink_id, uplink in wanted.items(): + # Snapshot: a revocation task may mutate the uplinks mid-loop + for uplink_id, uplink in list(wanted.items()): uplink.uplink_id = uplink_id # fresh objects lack it until load replica = self.replicas.get(uplink_id) if replica is None or replica.uplink != uplink: