1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
From: Edward Betts <edward@4angle.com>
Date: Thu, 25 Dec 2025 11:09:34 +0000
Subject: Fix pickling error in ServerWorker with Python 3.14 multiprocessing
---
snitun/server/worker.py | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/snitun/server/worker.py b/snitun/server/worker.py
index 131ef28..6ee3df8 100644
--- a/snitun/server/worker.py
+++ b/snitun/server/worker.py
@@ -50,10 +50,10 @@ class ServerWorker(Process):
self._metrics_task: asyncio.Task | None = None
# Communication between Parent/Child
- self._manager: SyncManager = Manager()
- self._new = self._manager.Queue()
- self._sync = self._manager.dict()
- self._peer_count = self._manager.Value("peer_count", 0)
+ manager: SyncManager = Manager()
+ self._new = manager.Queue()
+ self._sync = manager.dict()
+ self._peer_count = manager.Value("i", 0)
@property
def peer_size(self) -> int:
@@ -133,12 +133,12 @@ class ServerWorker(Process):
"""Event stream peer connection data."""
if event == PeerManagerEvent.CONNECTED:
if peer.hostname not in self._sync:
- self._peer_count.set(self._peer_count.value + 1)
+ self._peer_count.value += 1
for hostname in peer.all_hostnames:
self._sync[hostname] = None
else:
if peer.hostname in self._sync:
- self._peer_count.set(self._peer_count.value - 1)
+ self._peer_count.value -= 1
for hostname in peer.all_hostnames:
self._sync.pop(hostname, None)
|