6969_INSTANTIATED_FACTORIES_LOCK = threading .RLock ()
7070_MIN_DEFAULT_DATA_SAMPLING_ALLOWED = 0.1 # 10%
7171_MAX_RETRY_SYNC_ALL = 3
72- _FLAG_SETS_LOCK = threading .RLock ()
73- _TOTAL_FLAG_SETS = 0
74- _INVALID_FLAG_SETS = 0
7572
7673
7774class Status (Enum ):
@@ -315,7 +312,8 @@ def _wrap_impression_listener(listener, metadata):
315312
316313
317314def _build_in_memory_factory (api_key , cfg , sdk_url = None , events_url = None , # pylint:disable=too-many-arguments,too-many-locals
318- auth_api_base_url = None , streaming_api_base_url = None , telemetry_api_base_url = None ):
315+ auth_api_base_url = None , streaming_api_base_url = None , telemetry_api_base_url = None ,
316+ total_flag_sets = 0 , invalid_flag_sets = 0 ):
319317 """Build and return a split factory tailored to the supplied config."""
320318 if not input_validator .validate_factory_instantiation (api_key ):
321319 return None
@@ -419,10 +417,7 @@ def _build_in_memory_factory(api_key, cfg, sdk_url=None, events_url=None, # pyl
419417 telemetry_evaluation_producer
420418 )
421419
422- telemetry_init_producer .record_config (cfg , extra_cfg )
423- total_flag_sets , invalid_flag_sets = _get_total_and_invalid_flag_sets ()
424- telemetry_init_producer .record_flag_sets (total_flag_sets )
425- telemetry_init_producer .record_invalid_flag_sets (invalid_flag_sets )
420+ telemetry_init_producer .record_config (cfg , extra_cfg , total_flag_sets , invalid_flag_sets )
426421
427422 if preforked_initialization :
428423 synchronizer .sync_all (max_retry_attempts = _MAX_RETRY_SYNC_ALL )
@@ -501,7 +496,7 @@ def _build_redis_factory(api_key, cfg):
501496 initialization_thread = threading .Thread (target = manager .start , name = "SDKInitializer" , daemon = True )
502497 initialization_thread .start ()
503498
504- telemetry_init_producer .record_config (cfg , {})
499+ telemetry_init_producer .record_config (cfg , {}, 0 , 0 )
505500
506501 split_factory = SplitFactory (
507502 api_key ,
@@ -514,10 +509,7 @@ def _build_redis_factory(api_key, cfg):
514509 telemetry_init_producer = telemetry_init_producer
515510 )
516511 redundant_factory_count , active_factory_count = _get_active_and_redundant_count ()
517- total_flag_sets , invalid_flag_sets = _get_total_and_invalid_flag_sets ()
518512 storages ['telemetry' ].record_active_and_redundant_factories (active_factory_count , redundant_factory_count )
519- storages ['telemetry' ].record_flag_sets (total_flag_sets )
520- storages ['telemetry' ].record_invalid_flag_sets (invalid_flag_sets )
521513 telemetry_submitter .synchronize_config ()
522514
523515 return split_factory
@@ -582,7 +574,7 @@ def _build_pluggable_factory(api_key, cfg):
582574 initialization_thread = threading .Thread (target = manager .start , name = "SDKInitializer" , daemon = True )
583575 initialization_thread .start ()
584576
585- telemetry_init_producer .record_config (cfg , {})
577+ telemetry_init_producer .record_config (cfg , {}, 0 , 0 )
586578
587579 split_factory = SplitFactory (
588580 api_key ,
@@ -595,10 +587,7 @@ def _build_pluggable_factory(api_key, cfg):
595587 telemetry_init_producer = telemetry_init_producer
596588 )
597589 redundant_factory_count , active_factory_count = _get_active_and_redundant_count ()
598- total_flag_sets , invalid_flag_sets = _get_total_and_invalid_flag_sets ()
599590 storages ['telemetry' ].record_active_and_redundant_factories (active_factory_count , redundant_factory_count )
600- storages ['telemetry' ].record_flag_sets (total_flag_sets )
601- storages ['telemetry' ].record_invalid_flag_sets (invalid_flag_sets )
602591 telemetry_submitter .synchronize_config ()
603592
604593 return split_factory
@@ -697,13 +686,11 @@ def get_factory(api_key, **kwargs):
697686 _INSTANTIATED_FACTORIES_LOCK .release ()
698687
699688 config_raw = kwargs .get ('config' , {})
689+ total_flag_sets = 0
690+ invalid_flag_sets = 0
700691 if config_raw .get ('flagSetsFilter' ) is not None and isinstance (config_raw .get ('flagSetsFilter' ), list ):
701- global _TOTAL_FLAG_SETS
702- global _INVALID_FLAG_SETS
703- _FLAG_SETS_LOCK .acquire ()
704- _TOTAL_FLAG_SETS = len (config_raw .get ('flagSetsFilter' ))
705- _INVALID_FLAG_SETS = _TOTAL_FLAG_SETS - len (input_validator .validate_flag_sets (config_raw .get ('flagSetsFilter' ), 'Telemetry Init' ))
706- _FLAG_SETS_LOCK .release ()
692+ total_flag_sets = len (config_raw .get ('flagSetsFilter' ))
693+ invalid_flag_sets = total_flag_sets - len (input_validator .validate_flag_sets (config_raw .get ('flagSetsFilter' ), 'Telemetry Init' ))
707694
708695 config = sanitize_config (api_key , config_raw )
709696
@@ -721,7 +708,9 @@ def get_factory(api_key, **kwargs):
721708 kwargs .get ('events_api_base_url' ),
722709 kwargs .get ('auth_api_base_url' ),
723710 kwargs .get ('streaming_api_base_url' ),
724- kwargs .get ('telemetry_api_base_url' ))
711+ kwargs .get ('telemetry_api_base_url' ),
712+ total_flag_sets ,
713+ invalid_flag_sets )
725714
726715 return split_factory
727716
@@ -734,12 +723,3 @@ def _get_active_and_redundant_count():
734723 active_factory_count += _INSTANTIATED_FACTORIES [item ]
735724 _INSTANTIATED_FACTORIES_LOCK .release ()
736725 return redundant_factory_count , active_factory_count
737-
738- def _get_total_and_invalid_flag_sets ():
739- total_flag_sets = 0
740- invalid_flag_sets = 0
741- _FLAG_SETS_LOCK .acquire ()
742- total_flag_sets = _TOTAL_FLAG_SETS
743- invalid_flag_sets = _INVALID_FLAG_SETS
744- _FLAG_SETS_LOCK .release ()
745- return total_flag_sets , invalid_flag_sets
0 commit comments