Skip to content

Commit 13e793f

Browse files
authored
Attempting fixing connection stability: add internal feature flag for disabling server heartbeat check (#146)
1 parent 99da0c6 commit 13e793f

File tree

3 files changed

+8
-2
lines changed

3 files changed

+8
-2
lines changed

packages/stompman/stompman/client.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ class Client:
4444
connection_confirmation_timeout: int = 2
4545
disconnect_confirmation_timeout: int = 2
4646
check_server_alive_interval_factor: int = 3
47+
_ff_disable_server_heartbeat_check: bool = False
4748
"""Client will check if server alive `server heartbeat interval` times `interval factor`"""
4849

4950
connection_class: type[AbstractConnection] = Connection
@@ -74,6 +75,7 @@ def __post_init__(self) -> None:
7475
read_max_chunk_size=self.read_max_chunk_size,
7576
write_retry_attempts=self.write_retry_attempts,
7677
check_server_alive_interval_factor=self.check_server_alive_interval_factor,
78+
_ff_disable_server_heartbeat_check=self._ff_disable_server_heartbeat_check,
7779
ssl=self.ssl,
7880
)
7981

packages/stompman/stompman/connection_manager.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ class ConnectionManager:
5050
read_max_chunk_size: int
5151
write_retry_attempts: int
5252
check_server_alive_interval_factor: int
53+
_ff_disable_server_heartbeat_check: bool
5354

5455
_active_connection_state: ActiveConnectionState | None = field(default=None, init=False)
5556
_reconnect_lock: asyncio.Lock = field(init=False, default_factory=asyncio.Lock)
@@ -86,8 +87,10 @@ def _restart_heartbeat_tasks(self, server_heartbeat: Heartbeat) -> None:
8687
self._send_heartbeat_task = self._task_group.create_task(
8788
self._send_heartbeats_forever(server_heartbeat.want_to_receive_interval_ms)
8889
)
89-
self._check_server_heartbeat_task = self._task_group.create_task(
90-
self._check_server_heartbeat_forever(server_heartbeat.will_send_interval_ms)
90+
self._check_server_heartbeat_task = (
91+
self._task_group.create_task(self._check_server_heartbeat_forever(server_heartbeat.will_send_interval_ms))
92+
if not self._ff_disable_server_heartbeat_check
93+
else self._task_group.create_task(asyncio.sleep(0))
9194
)
9295

9396
async def _send_heartbeats_forever(self, send_heartbeat_interval_ms: int) -> None:

packages/stompman/test_stompman/conftest.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ class EnrichedConnectionManager(ConnectionManager):
7979
write_retry_attempts: int = 3
8080
ssl: Literal[True] | SSLContext | None = None
8181
check_server_alive_interval_factor: int = 3
82+
_ff_disable_server_heartbeat_check: bool = False
8283

8384

8485
DataclassType = TypeVar("DataclassType")

0 commit comments

Comments
 (0)