88from splitio .client .client import Client
99from splitio .client import input_validator
1010from splitio .client .manager import SplitManager
11- from splitio .client .config import sanitize as sanitize_config
11+ from splitio .client .config import sanitize as sanitize_config , DEFAULT_DATA_SAMPLING
1212from splitio .client import util
1313from splitio .client .listener import ImpressionListenerWrapper
1414from splitio .engine .impressions import Manager as ImpressionsManager
1515
1616# Storage
1717from splitio .storage .inmemmory import InMemorySplitStorage , InMemorySegmentStorage , \
18- InMemoryImpressionStorage , InMemoryEventStorage , InMemoryTelemetryStorage
18+ InMemoryImpressionStorage , InMemoryEventStorage
1919from splitio .storage .adapters import redis
2020from splitio .storage .redis import RedisSplitStorage , RedisSegmentStorage , RedisImpressionsStorage , \
21- RedisEventsStorage , RedisTelemetryStorage
21+ RedisEventsStorage
2222
2323# APIs
2424from splitio .api .client import HttpClient
2525from splitio .api .splits import SplitsAPI
2626from splitio .api .segments import SegmentsAPI
2727from splitio .api .impressions import ImpressionsAPI
2828from splitio .api .events import EventsAPI
29- from splitio .api .telemetry import TelemetryAPI
3029from splitio .api .auth import AuthAPI
3130
3231# Tasks
3332from splitio .tasks .split_sync import SplitSynchronizationTask
3433from splitio .tasks .segment_sync import SegmentSynchronizationTask
3534from splitio .tasks .impressions_sync import ImpressionsSyncTask , ImpressionsCountSyncTask
3635from splitio .tasks .events_sync import EventsSyncTask
37- from splitio .tasks .telemetry_sync import TelemetrySynchronizationTask
3836
3937# Synchronizer
4038from splitio .sync .synchronizer import SplitTasks , SplitSynchronizers , Synchronizer , \
4442from splitio .sync .segment import SegmentSynchronizer
4543from splitio .sync .impression import ImpressionSynchronizer , ImpressionsCountSynchronizer
4644from splitio .sync .event import EventSynchronizer
47- from splitio .sync .telemetry import TelemetrySynchronizer
4845
4946# Recorder
5047from splitio .recorder .recorder import StandardRecorder , PipelinedRecorder
5148
5249# Localhost stuff
53- from splitio .client .localhost import LocalhostEventsStorage , LocalhostImpressionsStorage , \
54- LocalhostTelemetryStorage
50+ from splitio .client .localhost import LocalhostEventsStorage , LocalhostImpressionsStorage
5551
5652
5753_LOGGER = logging .getLogger (__name__ )
5854_INSTANTIATED_FACTORIES = Counter ()
5955_INSTANTIATED_FACTORIES_LOCK = threading .RLock ()
56+ _MIN_DEFAULT_DATA_SAMPLING_ALLOWED = 0.1 # 10%
6057
6158
6259class Status (Enum ):
@@ -259,7 +256,6 @@ def resume(self):
259256 sdk_ready_flag = threading .Event ()
260257 self ._sdk_internal_ready_flag = sdk_ready_flag
261258 self ._sync_manager ._ready_flag = sdk_ready_flag
262- self ._get_storage ('telemetry' ).clear ()
263259 self ._get_storage ('impressions' ).clear ()
264260 self ._get_storage ('events' ).clear ()
265261 initialization_thread = threading .Thread (
@@ -306,7 +302,6 @@ def _build_in_memory_factory(api_key, cfg, sdk_url=None, events_url=None, # pyl
306302 'segments' : SegmentsAPI (http_client , api_key , sdk_metadata ),
307303 'impressions' : ImpressionsAPI (http_client , api_key , sdk_metadata , cfg ['impressionsMode' ]),
308304 'events' : EventsAPI (http_client , api_key , sdk_metadata ),
309- 'telemetry' : TelemetryAPI (http_client , api_key , sdk_metadata )
310305 }
311306
312307 if not input_validator .validate_apikey_type (apis ['segments' ]):
@@ -317,7 +312,6 @@ def _build_in_memory_factory(api_key, cfg, sdk_url=None, events_url=None, # pyl
317312 'segments' : InMemorySegmentStorage (),
318313 'impressions' : InMemoryImpressionStorage (cfg ['impressionsQueueSize' ]),
319314 'events' : InMemoryEventStorage (cfg ['eventsQueueSize' ]),
320- 'telemetry' : InMemoryTelemetryStorage ()
321315 }
322316
323317 imp_manager = ImpressionsManager (
@@ -331,7 +325,6 @@ def _build_in_memory_factory(api_key, cfg, sdk_url=None, events_url=None, # pyl
331325 ImpressionSynchronizer (apis ['impressions' ], storages ['impressions' ],
332326 cfg ['impressionsBulkSize' ]),
333327 EventSynchronizer (apis ['events' ], storages ['events' ], cfg ['eventsBulkSize' ]),
334- TelemetrySynchronizer (apis ['telemetry' ], storages ['telemetry' ]),
335328 ImpressionsCountSynchronizer (apis ['impressions' ], imp_manager ),
336329 )
337330
@@ -349,10 +342,6 @@ def _build_in_memory_factory(api_key, cfg, sdk_url=None, events_url=None, # pyl
349342 cfg ['impressionsRefreshRate' ],
350343 ),
351344 EventsSyncTask (synchronizers .events_sync .synchronize_events , cfg ['eventsPushRate' ]),
352- TelemetrySynchronizationTask (
353- synchronizers .telemetry_sync .synchronize_telemetry ,
354- cfg ['metricsRefreshRate' ],
355- ),
356345 ImpressionsCountSyncTask (synchronizers .impressions_count_sync .synchronize_counters )
357346 )
358347
@@ -369,7 +358,6 @@ def _build_in_memory_factory(api_key, cfg, sdk_url=None, events_url=None, # pyl
369358
370359 recorder = StandardRecorder (
371360 imp_manager ,
372- storages ['telemetry' ],
373361 storages ['events' ],
374362 storages ['impressions' ],
375363 )
@@ -399,15 +387,19 @@ def _build_redis_factory(api_key, cfg):
399387 'segments' : RedisSegmentStorage (redis_adapter ),
400388 'impressions' : RedisImpressionsStorage (redis_adapter , sdk_metadata ),
401389 'events' : RedisEventsStorage (redis_adapter , sdk_metadata ),
402- 'telemetry' : RedisTelemetryStorage (redis_adapter , sdk_metadata )
403390 }
391+ data_sampling = cfg .get ('dataSampling' , DEFAULT_DATA_SAMPLING )
392+ if data_sampling < _MIN_DEFAULT_DATA_SAMPLING_ALLOWED :
393+ _LOGGER .warning ("dataSampling cannot be less than %.2f, defaulting to minimum" ,
394+ _MIN_DEFAULT_DATA_SAMPLING_ALLOWED )
395+ data_sampling = _MIN_DEFAULT_DATA_SAMPLING_ALLOWED
404396 recorder = PipelinedRecorder (
405397 redis_adapter .pipeline ,
406398 ImpressionsManager (cfg ['impressionsMode' ], False ,
407399 _wrap_impression_listener (cfg ['impressionListener' ], sdk_metadata )),
408- storages ['telemetry' ],
409400 storages ['events' ],
410401 storages ['impressions' ],
402+ data_sampling ,
411403 )
412404 return SplitFactory (
413405 api_key ,
@@ -424,19 +416,18 @@ def _build_localhost_factory(cfg):
424416 'segments' : InMemorySegmentStorage (), # not used, just to avoid possible future errors.
425417 'impressions' : LocalhostImpressionsStorage (),
426418 'events' : LocalhostEventsStorage (),
427- 'telemetry' : LocalhostTelemetryStorage ()
428419 }
429420
430421 synchronizers = SplitSynchronizers (
431422 LocalSplitSynchronizer (cfg ['splitFile' ], storages ['splits' ]),
432- None , None , None , None , None ,
423+ None , None , None , None ,
433424 )
434425
435426 tasks = SplitTasks (
436427 SplitSynchronizationTask (
437428 synchronizers .split_sync .synchronize_splits ,
438429 cfg ['featuresRefreshRate' ],
439- ), None , None , None , None , None ,
430+ ), None , None , None , None ,
440431 )
441432
442433 sdk_metadata = util .get_metadata (cfg )
@@ -446,7 +437,6 @@ def _build_localhost_factory(cfg):
446437 manager .start ()
447438 recorder = StandardRecorder (
448439 ImpressionsManager (cfg ['impressionsMode' ], True , None ),
449- storages ['telemetry' ],
450440 storages ['events' ],
451441 storages ['impressions' ],
452442 )
0 commit comments