2323 InMemoryImpressionStorage , InMemoryEventStorage , InMemoryTelemetryStorage , LocalhostTelemetryStorage
2424from splitio .storage .adapters import redis
2525from splitio .storage .redis import RedisSplitStorage , RedisSegmentStorage , RedisImpressionsStorage , \
26- RedisEventsStorage
26+ RedisEventsStorage , RedisTelemetryStorage
2727
2828# APIs
2929from splitio .api .client import HttpClient
@@ -152,19 +152,9 @@ def _start_status_updater(self):
152152 ready_updater .start ()
153153 else :
154154 self ._status = Status .READY
155- ready_updater = threading .Thread (target = self ._update_redis_telemetry_config ,
156- name = 'SDKRedisTelemetryConfig' )
157- ready_updater .setDaemon (True )
158- ready_updater .start ()
159-
160- def _update_redis_telemetry_config (self ):
161- """Push Config Telemetry into storage."""
162- self ._telemetry_init_producer .record_ready_time (get_current_epoch_time_ms () - self ._ready_time )
163- redundant_factory_count , active_factory_count = _get_active_and_redundant_count ()
164- self ._telemetry_init_producer .record_active_and_redundant_factories (active_factory_count , redundant_factory_count )
165- config_post_thread = threading .Thread (target = self ._telemetry_api .record_init (self ._telemetry_init_consumer .get_config_stats ()), name = "PostConfigData" )
166- config_post_thread .setDaemon (True )
167- config_post_thread .start ()
155+ #Push Config Telemetry into redis storage
156+ redundant_factory_count , active_factory_count = _get_active_and_redundant_count ()
157+ self ._telemetry_init_producer .record_active_and_redundant_factories (active_factory_count , redundant_factory_count )
168158
169159 def _update_status_when_ready (self ):
170160 """Wait until the sdk is ready and update the status."""
@@ -343,8 +333,8 @@ def _build_in_memory_factory(api_key, cfg, sdk_url=None, events_url=None, # pyl
343333 telemetry_storage = InMemoryTelemetryStorage ()
344334 telemetry_producer = TelemetryStorageProducer (telemetry_storage )
345335 telemetry_consumer = TelemetryStorageConsumer (telemetry_storage )
346- telemetry_runtime_producer = telemetry_producer .get_telemetry_runtime_producer ()
347- # telemetry_evaluation_producer= telemetry_producer.get_telemetry_evaluation_producer()
336+ telemetry_runtime_producer = telemetry_producer .get_telemetry_runtime_producer ()
337+ telemetry_evaluation_producer = telemetry_producer .get_telemetry_evaluation_producer ()
348338
349339
350340 http_client = HttpClient (
@@ -430,6 +420,7 @@ def _build_in_memory_factory(api_key, cfg, sdk_url=None, events_url=None, # pyl
430420 imp_manager ,
431421 storages ['events' ],
432422 storages ['impressions' ],
423+ telemetry_evaluation_producer
433424 )
434425
435426 if preforked_initialization :
@@ -453,16 +444,16 @@ def _build_redis_factory(api_key, cfg):
453444 redis_adapter = redis .build (cfg )
454445 cache_enabled = cfg .get ('redisLocalCacheEnabled' , False )
455446 cache_ttl = cfg .get ('redisLocalCacheTTL' , 5 )
447+ telemetry_storage = RedisTelemetryStorage (redis_adapter , sdk_metadata )
448+ telemetry_producer = TelemetryStorageProducer (telemetry_storage )
449+ telemetry_consumer = TelemetryStorageConsumer (telemetry_storage )
450+ telemetry_runtime_producer = telemetry_producer .get_telemetry_runtime_producer ()
456451 storages = {
457452 'splits' : RedisSplitStorage (redis_adapter , cache_enabled , cache_ttl ),
458453 'segments' : RedisSegmentStorage (redis_adapter ),
459454 'impressions' : RedisImpressionsStorage (redis_adapter , sdk_metadata ),
460- 'events' : RedisEventsStorage (redis_adapter , sdk_metadata ),
455+ 'events' : RedisEventsStorage (redis_adapter , sdk_metadata )
461456 }
462- telemetry_storage = InMemoryTelemetryStorage ()
463- telemetry_producer = TelemetryStorageProducer (telemetry_storage )
464- telemetry_consumer = TelemetryStorageConsumer (telemetry_storage )
465- telemetry_runtime_producer = telemetry_producer .get_telemetry_runtime_producer ()
466457
467458 data_sampling = cfg .get ('dataSampling' , DEFAULT_DATA_SAMPLING )
468459 if data_sampling < _MIN_DEFAULT_DATA_SAMPLING_ALLOWED :
@@ -482,14 +473,14 @@ def _build_redis_factory(api_key, cfg):
482473
483474 synchronizers = SplitSynchronizers (None , None , None , None ,
484475 impressions_count_sync ,
485- TelemetrySynchronizer ( telemetry_consumer , storages [ 'splits' ], storages [ 'segments' ], redis_adapter ) ,
476+ None ,
486477 unique_keys_synchronizer ,
487478 clear_filter_sync
488479 )
489480
490481 tasks = SplitTasks (None , None , None , None ,
491482 impressions_count_task ,
492- TelemetrySyncTask ( synchronizers . telemetry_sync . synchronize_stats , cfg [ 'metricsRefreshRate' ]) ,
483+ None ,
493484 unique_keys_task ,
494485 clear_filter_task
495486 )
@@ -500,6 +491,7 @@ def _build_redis_factory(api_key, cfg):
500491 imp_manager ,
501492 storages ['events' ],
502493 storages ['impressions' ],
494+ telemetry_storage ,
503495 data_sampling ,
504496 )
505497
@@ -528,6 +520,7 @@ def _build_localhost_factory(cfg):
528520 telemetry_producer = TelemetryStorageProducer (telemetry_storage )
529521 telemetry_consumer = TelemetryStorageConsumer (telemetry_storage )
530522 telemetry_runtime_producer = telemetry_producer .get_telemetry_runtime_producer ()
523+ telemetry_evaluation_producer = telemetry_producer .get_telemetry_evaluation_producer ()
531524
532525 storages = {
533526 'splits' : InMemorySplitStorage (),
@@ -557,6 +550,7 @@ def _build_localhost_factory(cfg):
557550 ImpressionsManager (StrategyDebugMode (), telemetry_runtime_producer ),
558551 storages ['events' ],
559552 storages ['impressions' ],
553+ telemetry_evaluation_producer
560554 )
561555 return SplitFactory (
562556 'localhost' ,
0 commit comments