@@ -62,9 +62,7 @@ def __init__(self, client: FBClient, initialization_timeout: float = 15.0):
6262 self ._initialization_timeout = initialization_timeout
6363 self ._context_converter = EvaluationContextConverter ()
6464 self ._details_converter = ResolutionDetailsConverter ()
65- # Listener registration and event emission can synchronously re-enter
66- # provider lifecycle methods through user callbacks.
67- self ._lifecycle_lock = threading .RLock ()
65+ self ._lifecycle_lock = threading .Lock ()
6866 self ._shutdown_started = False
6967 self ._flag_change_listener : _FlagChangeListener | None = None
7068 self ._status_listener_registered = False
@@ -295,12 +293,9 @@ def _register_listeners(self) -> None:
295293
296294 def _emit_configuration_changed (self , flag_key : str ) -> None :
297295 try :
298- with self ._lifecycle_lock :
299- if self ._shutdown_started :
300- return
301- self .emit_provider_configuration_changed (
302- ProviderEventDetails (flags_changed = [flag_key ])
303- )
296+ self .emit_provider_configuration_changed (
297+ ProviderEventDetails (flags_changed = [flag_key ])
298+ )
304299 except Exception :
305300 logger .exception ("Failed to emit OpenFeature configuration change event" )
306301
@@ -309,19 +304,19 @@ def _handle_data_update_status(self, state: State) -> None:
309304 with self ._lifecycle_lock :
310305 if self ._shutdown_started :
311306 return
312- if state .state_type == StateType .OK :
313- self .emit_provider_ready (ProviderEventDetails ())
314- elif state .state_type == StateType .INTERRUPTED :
315- self .emit_provider_stale (
316- ProviderEventDetails (message = self ._state_message (state ))
317- )
318- elif state .state_type == StateType .OFF :
319- self .emit_provider_error (
320- ProviderEventDetails (
321- error_code = ErrorCode .PROVIDER_FATAL ,
322- message = self ._state_message (state ),
323- )
307+ if state .state_type == StateType .OK :
308+ self .emit_provider_ready (ProviderEventDetails ())
309+ elif state .state_type == StateType .INTERRUPTED :
310+ self .emit_provider_stale (
311+ ProviderEventDetails (message = self ._state_message (state ))
312+ )
313+ elif state .state_type == StateType .OFF :
314+ self .emit_provider_error (
315+ ProviderEventDetails (
316+ error_code = ErrorCode .PROVIDER_FATAL ,
317+ message = self ._state_message (state ),
324318 )
319+ )
325320 except Exception :
326321 logger .exception ("Failed to emit OpenFeature provider status event" )
327322
0 commit comments