Preserve websocket reconnect failure retries
This commit is contained in:
@@ -76,7 +76,9 @@ class WebsocketService(ABC):
|
|||||||
logger.warning(f"{self} reconnecting (attempt: {attempt_number})")
|
logger.warning(f"{self} reconnecting (attempt: {attempt_number})")
|
||||||
await self._disconnect_websocket()
|
await self._disconnect_websocket()
|
||||||
await self._connect_websocket()
|
await self._connect_websocket()
|
||||||
return await self._verify_connection()
|
if not await self._verify_connection():
|
||||||
|
raise ConnectionError(f"{self} websocket reconnection failed verification")
|
||||||
|
return True
|
||||||
|
|
||||||
async def _try_reconnect(
|
async def _try_reconnect(
|
||||||
self,
|
self,
|
||||||
|
|||||||
@@ -165,6 +165,19 @@ async def test_reconnect_exhausted_emits_non_fatal_error(service, report_error):
|
|||||||
assert "Connection refused" in final_error.error
|
assert "Connection refused" in final_error.error
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.asyncio
|
||||||
|
async def test_reconnect_exhausted_when_connect_does_not_raise(service, report_error):
|
||||||
|
"""A non-raising failed connect is treated as a failed reconnect attempt."""
|
||||||
|
result = await service._try_reconnect(report_error=report_error)
|
||||||
|
|
||||||
|
assert result is False
|
||||||
|
assert report_error.call_count == 4
|
||||||
|
final_error = report_error.call_args_list[-1][0][0]
|
||||||
|
assert isinstance(final_error, ErrorFrame)
|
||||||
|
assert final_error.fatal is False
|
||||||
|
assert "websocket reconnection failed verification" in final_error.error
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Quick failure detection — accept then immediately close
|
# Quick failure detection — accept then immediately close
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user