Skip to content

Commit 1cb05c0

Browse files
committed
fix error propagation
1 parent dd46cde commit 1cb05c0

3 files changed

Lines changed: 20 additions & 10 deletions

File tree

splitio/push/manager.py

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,7 @@ def _handle_control(self, event):
9292
_LOGGER.debug('handling control event: %s', str(event))
9393
feedback = self._status_tracker.handle_control_message(event)
9494
if feedback is not None:
95-
# Send this event back to sync manager
96-
pass
95+
self._feedback_loop.put(feedback)
9796

9897
def _handle_occupancy(self, event):
9998
"""
@@ -105,8 +104,19 @@ def _handle_occupancy(self, event):
105104
_LOGGER.debug('handling occupancy event: %s', str(event))
106105
feedback = self._status_tracker.handle_occupancy(event)
107106
if feedback is not None:
108-
# Send this event back to sync manager
109-
pass
107+
self._feedback_loop.put(feedback)
108+
109+
def _handle_connection_end(self, shutdown_requested):
110+
"""
111+
Handle a connection ending.
112+
113+
If the connection shutdown was not requested, trigger a restart.
114+
115+
:param shutdown_requested: whether the shutdown was requested or unexpected.
116+
:type shutdown_requested: True
117+
"""
118+
if not shutdown_requested:
119+
self._feedback_loop.put(Status.PUSH_RETRYABLE_ERROR)
110120

111121
def _handle_error(self, event):
112122
"""
@@ -118,8 +128,7 @@ def _handle_error(self, event):
118128
_LOGGER.debug('handling ably error event: %s', str(event))
119129
feedback = self._status_tracker.handle_ably_error(event)
120130
if feedback is not None:
121-
# Send this event back to sync manager
122-
pass
131+
self._feedback_loop.put(feedback)
123132

124133
def _event_handler(self, event):
125134
"""
@@ -188,7 +197,7 @@ def _setup_next_token_refresh(self, token):
188197
if self._next_refresh is not None:
189198
self._next_refresh.cancel()
190199
self._next_refresh = Timer((token.exp - token.iat) - _TOKEN_REFRESH_GRACE_PERIOD,
191-
self._token_refresh)
200+
self._token_refresh, name='TokenRefresh')
192201
self._next_refresh.start()
193202

194203
def update_workers_status(self, enabled):

tests/push/test_manager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def test_connection_success(self, mocker):
3232
assert timer_mock.mock_calls == [
3333
mocker.call(0, Any()),
3434
mocker.call().cancel(),
35-
mocker.call(1000000 - _TOKEN_REFRESH_GRACE_PERIOD, manager._token_refresh),
35+
mocker.call(1000000 - _TOKEN_REFRESH_GRACE_PERIOD, manager._token_refresh, name='TokenRefresh'),
3636
mocker.call().start()
3737
]
3838

tests/push/test_splitsse.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,9 @@ def handler(event):
7272
server.publish({'event': 'error'}) # send an error event early to unblock start
7373
assert not client.start(token)
7474
client.stop(True)
75-
with pytest.raises(Exception):
76-
client.stop()
75+
76+
# should do nothing
77+
client.stop()
7778

7879
request = request_queue.get(1)
7980
assert request.path == '/event-stream?v=1.1&accessToken=some&channels=chan1,[?occupancy=metrics.publishers]chan2'

0 commit comments

Comments
 (0)