Skip to content

Commit eff5a05

Browse files
fix: logic of Client.close (#12)
* feat: add close function for Client * style: format python code (pep8) * Update client.py * fix: Client.close logic Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
1 parent 0182f9d commit eff5a05

3 files changed

Lines changed: 12 additions & 10 deletions

File tree

featureprobe/client.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,10 @@ def flush(self):
5656
self._event_processor.flush()
5757

5858
def close(self):
59+
"""Safely shut down FeatureProbe client instance"""
5960
Client.__logger.info('Closing FeatureProbe Client')
61+
self._event_processor.shutdown()
6062
self._synchronizer.close()
61-
self.flush()
6263
self._data_repo.close()
6364

6465
def value(self, toggle_key: str, user: User, default) -> Any:

featureprobe/default_event_processor.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -102,10 +102,10 @@ def __init__(self, context: Context):
102102
context.http_config.conn_timeout,
103103
context.http_config.read_timeout)
104104

105-
event_repository = EventRepository()
105+
self._event_repository = EventRepository()
106106
handler_thread = threading.Thread(
107107
target=self._handle_event, args=(
108-
self._events, event_repository), daemon=True)
108+
self._events, self._event_repository), daemon=True)
109109
handler_thread.start()
110110

111111
self._executor = ThreadPoolExecutor(max_workers=5)
@@ -139,11 +139,7 @@ def flush(self):
139139
DefaultEventProcessor._LOG_BUSY_EVENT)
140140

141141
def shutdown(self):
142-
if self._closed:
143-
return
144-
self._closed = True
145-
self._events.put(EventAction(EventAction.Type.FLUSH, None))
146-
self._events.put(EventAction(EventAction.Type.SHUTDOWN, None))
142+
self._do_shutdown()
147143

148144
def _handle_event(self, events: Queue, event_repo: EventRepository):
149145
actions = []
@@ -167,7 +163,12 @@ def _handle_event(self, events: Queue, event_repo: EventRepository):
167163
'FeatureProbe event handle error', exc_info=e)
168164

169165
def _do_shutdown(self):
170-
self._executor.shutdown(wait=False)
166+
if self._closed:
167+
return
168+
self._closed = True
169+
self._process_flush(self._event_repository)
170+
self._scheduler.shutdown(wait=True)
171+
self._executor.shutdown(wait=True)
171172

172173
def _process_event(self, event: Event, event_repo: EventRepository):
173174
event_repo.add(event)

featureprobe/memory_data_repository.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,4 @@ def initialized(self) -> bool:
6161
return self._initialized
6262

6363
def close(self):
64-
return
64+
self._data = None

0 commit comments

Comments
 (0)