Session-recovery robustness (from PR #1)

- Suppress ConnectionError log noise from in-flight requests draining
  after a session close (poll_scheduler + keepalive log at DEBUG).
- Null KeepaliveTask.on_unreachable during a forced reconnect so the
  dying session's keepalive can't flip HA availability offline after
  the new session is already healthy. Ported into PR #5's
  _maybe_force_reconnect flow.

Drops the _session_stop / publish-health force-close mechanism from
the original PR — PR #5's last_success_ts + _maybe_force_reconnect
already covers the 'session dead, restart it' goal via a different
path, and running both means two paths force-closing the same session
on the same failure.
This commit is contained in:
Aminorjourney authored and Jack Nagy committed 2026-07-02 21:15:00 +01:00
1 parent 93f78f99a2
commit 015e4a4e9e
4 files changed
+19 -1

No files matched your search

+5
View File
@@ -409,6 +409,11 @@ class PushBridge:
self.log.warning(
"unreachable for %.0fs — forcing session reconnect", elapsed)
self._force_close_in_flight = True
# Null the dying session's on_unreachable so its keepalive thread
# can't flip availability offline after the new session takes over.
ka = self.keepalive
if ka is not None:
ka.on_unreachable = None
try:
sess.close()
except Exception as e: