1515from splitio .engine .strategies .strategy_debug_mode import StrategyDebugMode
1616from splitio .engine .strategies .strategy_optimized_mode import StrategyOptimizedMode
1717
18-
1918# Storage
2019from splitio .storage .inmemmory import InMemorySplitStorage , InMemorySegmentStorage , \
2120 InMemoryImpressionStorage , InMemoryEventStorage
@@ -317,11 +316,10 @@ def _build_in_memory_factory(api_key, cfg, sdk_url=None, events_url=None, # pyl
317316 'events' : InMemoryEventStorage (cfg ['eventsQueueSize' ]),
318317 }
319318
320- imp_strategy = StrategyOptimizedMode (True ) if cfg ['ImpressionsMode' ] == 'OPTIMIZED' else StrategyDebugMode (True )
319+ imp_counter = Counter () if cfg ['impressionsMode' ] == 'OPTIMIZED' else None
320+ imp_strategy = StrategyOptimizedMode (imp_counter ) if cfg ['impressionsMode' ] == 'OPTIMIZED' else StrategyDebugMode ()
321321
322322 imp_manager = ImpressionsManager (
323- cfg ['impressionsMode' ],
324- True ,
325323 _wrap_impression_listener (cfg ['impressionListener' ], sdk_metadata ),
326324 imp_strategy )
327325
@@ -331,8 +329,9 @@ def _build_in_memory_factory(api_key, cfg, sdk_url=None, events_url=None, # pyl
331329 ImpressionSynchronizer (apis ['impressions' ], storages ['impressions' ],
332330 cfg ['impressionsBulkSize' ]),
333331 EventSynchronizer (apis ['events' ], storages ['events' ], cfg ['eventsBulkSize' ]),
334- ImpressionsCountSynchronizer (apis ['impressions' ], imp_manager ),
332+ ImpressionsCountSynchronizer (apis ['impressions' ], imp_counter ),
335333 )
334+ imp_count_sync_task = ImpressionsCountSyncTask (synchronizers .impressions_count_sync .synchronize_counters ) if cfg ['impressionsMode' ] == 'OPTIMIZED' else None
336335
337336 tasks = SplitTasks (
338337 SplitSynchronizationTask (
@@ -348,7 +347,7 @@ def _build_in_memory_factory(api_key, cfg, sdk_url=None, events_url=None, # pyl
348347 cfg ['impressionsRefreshRate' ],
349348 ),
350349 EventsSyncTask (synchronizers .events_sync .synchronize_events , cfg ['eventsPushRate' ]),
351- ImpressionsCountSyncTask ( synchronizers . impressions_count_sync . synchronize_counters )
350+ imp_count_sync_task
352351 )
353352
354353 synchronizer = Synchronizer (synchronizers , tasks )
@@ -399,10 +398,15 @@ def _build_redis_factory(api_key, cfg):
399398 _LOGGER .warning ("dataSampling cannot be less than %.2f, defaulting to minimum" ,
400399 _MIN_DEFAULT_DATA_SAMPLING_ALLOWED )
401400 data_sampling = _MIN_DEFAULT_DATA_SAMPLING_ALLOWED
401+
402+ imp_strategy = StrategyOptimizedMode (Counter ()) if cfg ['impressionsMode' ] == 'OPTIMIZED' else StrategyDebugMode ()
403+ imp_manager = ImpressionsManager (
404+ _wrap_impression_listener (cfg ['impressionListener' ], sdk_metadata ),
405+ imp_strategy )
406+
402407 recorder = PipelinedRecorder (
403408 redis_adapter .pipeline ,
404- ImpressionsManager (cfg ['impressionsMode' ], False ,
405- _wrap_impression_listener (cfg ['impressionListener' ], sdk_metadata )),
409+ imp_manager ,
406410 storages ['events' ],
407411 storages ['impressions' ],
408412 data_sampling ,
@@ -414,7 +418,6 @@ def _build_redis_factory(api_key, cfg):
414418 recorder ,
415419 )
416420
417-
418421def _build_localhost_factory (cfg ):
419422 """Build and return a localhost factory for testing/development purposes."""
420423 storages = {
@@ -441,8 +444,9 @@ def _build_localhost_factory(cfg):
441444 synchronizer = LocalhostSynchronizer (synchronizers , tasks )
442445 manager = Manager (ready_event , synchronizer , None , False , sdk_metadata )
443446 manager .start ()
447+
444448 recorder = StandardRecorder (
445- ImpressionsManager (cfg ['impressionsMode' ], True , None ),
449+ ImpressionsManager (cfg ['impressionsMode' ], StrategyDebugMode () ),
446450 storages ['events' ],
447451 storages ['impressions' ],
448452 )
0 commit comments