Skip to content

Commit da565a2

Browse files
authored
fix: Prevent immediate polling on recoverable error (#399)
1 parent 468afdf commit da565a2

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

ldclient/impl/datasourcev2/polling.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ def __init__(
9393
):
9494
self._requester = requester
9595
self._poll_interval = poll_interval
96-
self._event = Event()
96+
self._interrupt_event = Event()
9797
self._stop = Event()
9898
self._task = RepeatingTask(
9999
"ldclient.datasource.polling", poll_interval, 0, self._poll
@@ -117,6 +117,7 @@ def sync(self, ss: SelectorStore) -> Generator[Update, None, None]:
117117
occurs.
118118
"""
119119
log.info("Starting PollingDataSourceV2 synchronizer")
120+
self._interrupt_event.clear()
120121
self._stop.clear()
121122
while self._stop.is_set() is False:
122123
result = self._requester.fetch(ss.selector())
@@ -154,6 +155,7 @@ def sync(self, ss: SelectorStore) -> Generator[Update, None, None]:
154155
error=error_info,
155156
environment_id=envid,
156157
)
158+
self._interrupt_event.wait(self._poll_interval)
157159
continue
158160

159161
yield Update(
@@ -184,13 +186,13 @@ def sync(self, ss: SelectorStore) -> Generator[Update, None, None]:
184186
revert_to_fdv1=headers.get(_LD_FD_FALLBACK_HEADER) == 'true'
185187
)
186188

187-
if self._event.wait(self._poll_interval):
189+
if self._interrupt_event.wait(self._poll_interval):
188190
break
189191

190192
def stop(self):
191193
"""Stops the synchronizer."""
192194
log.info("Stopping PollingDataSourceV2 synchronizer")
193-
self._event.set()
195+
self._interrupt_event.set()
194196
self._task.stop()
195197
self._stop.set()
196198

0 commit comments

Comments
 (0)