Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ed3dae4

Browse files
committed
polishing
1 parent 2a1df38 commit ed3dae4

15 files changed

+36
-158
lines changed

splitio/client/config.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
"""Default settings for the Split.IO SDK Python client."""
22
import os.path
33
import logging
4-
import re
54

65
from splitio.engine.impressions import ImpressionsMode
76
from splitio.client.input_validator import validate_flag_sets

splitio/client/factory.py

Lines changed: 12 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,6 @@
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

7774
class Status(Enum):
@@ -315,7 +312,8 @@ def _wrap_impression_listener(listener, metadata):
315312

316313

317314
def _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

splitio/engine/telemetry.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ def __init__(self, telemetry_storage):
3636
"""Constructor."""
3737
self._telemetry_storage = telemetry_storage
3838

39-
def record_config(self, config, extra_config):
39+
def record_config(self, config, extra_config, total_flag_sets=0, invalid_flag_sets=0):
4040
"""Record configurations."""
41-
self._telemetry_storage.record_config(config, extra_config)
41+
self._telemetry_storage.record_config(config, extra_config, total_flag_sets, invalid_flag_sets)
4242
current_app, app_worker_id = self._get_app_worker_id()
4343
if current_app is not None:
4444
self.add_config_tag("initilization:" + current_app)

splitio/models/telemetry.py

Lines changed: 3 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -796,7 +796,7 @@ def _reset_all(self):
796796
self._flag_sets = 0
797797
self._flag_sets_invalid = 0
798798

799-
def record_config(self, config, extra_config):
799+
def record_config(self, config, extra_config, total_flag_sets, invalid_flag_sets):
800800
"""
801801
Record configurations.
802802
@@ -829,32 +829,14 @@ def record_config(self, config, extra_config):
829829
self._impressions_mode = self._get_impressions_mode(config[_ConfigParams.IMPRESSIONS_MODE.value])
830830
self._impression_listener = True if config[_ConfigParams.IMPRESSIONS_LISTENER.value] is not None else False
831831
self._http_proxy = self._check_if_proxy_detected()
832+
self._flag_sets = total_flag_sets
833+
self._flag_sets_invalid = invalid_flag_sets
832834

833835
def record_active_and_redundant_factories(self, active_factory_count, redundant_factory_count):
834836
with self._lock:
835837
self._active_factory_count = active_factory_count
836838
self._redundant_factory_count = redundant_factory_count
837839

838-
def record_flag_sets(self, flag_sets):
839-
"""
840-
Record flag sets
841-
842-
:param flag_sets: flag sets count
843-
:type flag_sets: int
844-
"""
845-
with self._lock:
846-
self._flag_sets = flag_sets
847-
848-
def record_invalid_flag_sets(self, flag_sets):
849-
"""
850-
Record invalid flag sets
851-
852-
:param flag_sets: flag sets count
853-
:type flag_sets: int
854-
"""
855-
with self._lock:
856-
self._flag_sets_invalid = flag_sets
857-
858840
def record_ready_time(self, ready_time):
859841
"""
860842
Record ready time.
@@ -881,22 +863,6 @@ def record_not_ready_usage(self):
881863
with self._lock:
882864
self._not_ready += 1
883865

884-
def get_flag_sets(self):
885-
"""
886-
Get flag sets
887-
888-
"""
889-
with self._lock:
890-
return self._flag_sets
891-
892-
def get_invalid_flag_sets(self):
893-
"""
894-
Get invalid flag sets
895-
896-
"""
897-
with self._lock:
898-
return self._flag_sets_invalid
899-
900866
def get_bur_time_outs(self):
901867
"""
902868
Get block until ready timeout.

splitio/storage/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
"""Base storage interfaces."""
22
import abc
3-
import threading
43

54
class SplitStorage(object, metaclass=abc.ABCMeta):
65
"""Split storage interface implemented as an abstract class."""

splitio/storage/inmemmory.py

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -642,9 +642,9 @@ def _reset_config_tags(self):
642642
with self._lock:
643643
self._config_tags = []
644644

645-
def record_config(self, config, extra_config):
645+
def record_config(self, config, extra_config, total_flag_sets, invalid_flag_sets):
646646
"""Record configurations."""
647-
self._tel_config.record_config(config, extra_config)
647+
self._tel_config.record_config(config, extra_config, total_flag_sets, invalid_flag_sets)
648648

649649
def record_active_and_redundant_factories(self, active_factory_count, redundant_factory_count):
650650
"""Record active and redundant factories."""
@@ -654,14 +654,6 @@ def record_ready_time(self, ready_time):
654654
"""Record ready time."""
655655
self._tel_config.record_ready_time(ready_time)
656656

657-
def record_flag_sets(self, flag_sets):
658-
"""Record flag sets."""
659-
self._tel_config.record_flag_sets(flag_sets)
660-
661-
def record_invalid_flag_sets(self, flag_sets):
662-
"""Record invalid flag sets."""
663-
self._tel_config.record_invalid_flag_sets(flag_sets)
664-
665657
def add_tag(self, tag):
666658
"""Record tag string."""
667659
with self._lock:
@@ -730,14 +722,6 @@ def record_update_from_sse(self, event):
730722
"""Record update from sse."""
731723
self._counters.record_update_from_sse(event)
732724

733-
def get_flag_sets(self):
734-
"""Get flag sets."""
735-
self._tel_config.get_flag_sets()
736-
737-
def get_invalid_flag_sets(self):
738-
"""Get invalid flag sets."""
739-
self._tel_config.get_invalid_flag_sets()
740-
741725
def get_bur_time_outs(self):
742726
"""Get block until ready timeout."""
743727
return self._tel_config.get_bur_time_outs()

splitio/storage/pluggable.py

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -795,7 +795,7 @@ def add_config_tag(self, tag):
795795
if len(self._config_tags) < MAX_TAGS:
796796
self._config_tags.append(tag)
797797

798-
def record_config(self, config, extra_config):
798+
def record_config(self, config, extra_config, total_flag_sets, invalid_flag_sets):
799799
"""
800800
initilize telemetry objects
801801
@@ -804,15 +804,7 @@ def record_config(self, config, extra_config):
804804
:param extra_config: any extra configs
805805
:type extra_config: Dict
806806
"""
807-
self._tel_config.record_config(config, extra_config)
808-
809-
def record_flag_sets(self, flag_sets):
810-
"""Record flag sets."""
811-
self._tel_config.record_flag_sets(flag_sets)
812-
813-
def record_invalid_flag_sets(self, flag_sets):
814-
"""Record invalid flag sets."""
815-
self._tel_config.record_invalid_flag_sets(flag_sets)
807+
self._tel_config.record_config(config, extra_config, total_flag_sets, invalid_flag_sets)
816808

817809
def pop_config_tags(self):
818810
"""Get and reset configs."""
@@ -833,9 +825,7 @@ def _format_config_stats(self):
833825
'rF': config_stats['rF'],
834826
'sT': config_stats['sT'],
835827
'oM': config_stats['oM'],
836-
't': self.pop_config_tags(),
837-
'fsT': self._tel_config.get_flag_sets(),
838-
'fsI': self._tel_config.get_invalid_flag_sets()
828+
't': self.pop_config_tags()
839829
})
840830

841831
def record_active_and_redundant_factories(self, active_factory_count, redundant_factory_count):

splitio/storage/redis.py

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -662,22 +662,14 @@ def add_config_tag(self, tag):
662662
if len(self._config_tags) < MAX_TAGS:
663663
self._config_tags.append(tag)
664664

665-
def record_config(self, config, extra_config):
665+
def record_config(self, config, extra_config, total_flag_sets, invalid_flag_sets):
666666
"""
667667
initilize telemetry objects
668668
669669
:param congif: factory configuration parameters
670670
:type config: splitio.client.config
671671
"""
672-
self._tel_config.record_config(config, extra_config)
673-
674-
def record_flag_sets(self, flag_sets):
675-
"""Record flag sets."""
676-
self._tel_config.record_flag_sets(flag_sets)
677-
678-
def record_invalid_flag_sets(self, flag_sets):
679-
"""Record invalid flag sets."""
680-
self._tel_config.record_invalid_flag_sets(flag_sets)
672+
self._tel_config.record_config(config, extra_config, total_flag_sets, invalid_flag_sets)
681673

682674
def pop_config_tags(self):
683675
"""Get and reset tags."""
@@ -700,8 +692,6 @@ def _format_config_stats(self):
700692
'rF': config_stats['rF'],
701693
'sT': config_stats['sT'],
702694
'oM': config_stats['oM'],
703-
'fsT': self._tel_config.get_flag_sets(),
704-
'fsI': self._tel_config.get_invalid_flag_sets(),
705695
't': self.pop_config_tags()
706696
})
707697

splitio/util/storage_helper.py

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -68,20 +68,4 @@ def combine_valid_flag_sets(result_sets):
6868
for result_set in result_sets:
6969
if isinstance(result_set, set) and len(result_set) > 0:
7070
to_return.update(result_set)
71-
return to_return
72-
73-
def combine_valid_flag_sets(result_sets):
74-
"""
75-
Check each flag set in given array of sets, combine all flag sets in one unique set
76-
77-
:param result_sets: Flag sets set
78-
:type flag_sets: list(set)
79-
80-
:return: flag sets set
81-
:rtype: set
82-
"""
83-
to_return = set()
84-
for result_set in result_sets:
85-
if isinstance(result_set, set) and len(result_set) > 0:
86-
to_return.update(result_set)
87-
return to_return
71+
return to_return

tests/engine/test_telemetry.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,8 @@ def test_record_config(self, mocker):
3535
'metricsRefreshRate': 10,
3636
'storageType': None
3737
}
38-
telemetry_init_producer.record_config(config, {})
38+
telemetry_init_producer.record_config(config, {}, 5, 2)
3939
telemetry_init_producer.record_active_and_redundant_factories(1, 0)
40-
telemetry_init_producer.record_flag_sets(5)
41-
telemetry_init_producer.record_invalid_flag_sets(2)
4240

4341
assert(telemetry_storage._tel_config.get_stats() == {'oM': 0,
4442
'sT': telemetry_storage._tel_config._get_storage_type(config['operationMode'], config['storageType']),

tests/models/test_telemetry_model.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ def test_telemetry_config(self):
316316
'storageType': None,
317317
'flagSetsFilter': None
318318
}
319-
telemetry_config.record_config(config, {})
319+
telemetry_config.record_config(config, {}, 5, 2)
320320
assert(telemetry_config.get_stats() == {'oM': 0,
321321
'sT': telemetry_config._get_storage_type(config['operationMode'], config['storageType']),
322322
'sE': config['streamingEnabled'],
@@ -332,16 +332,13 @@ def test_telemetry_config(self):
332332
'bT': 0,
333333
'aF': 0,
334334
'rF': 0,
335-
'fsT': 0,
336-
'fsI': 0}
335+
'fsT': 5,
336+
'fsI': 2}
337337
)
338338

339339
telemetry_config.record_ready_time(10)
340340
assert(telemetry_config._time_until_ready == 10)
341341

342-
telemetry_config.record_flag_sets(5)
343-
assert(telemetry_config._flag_sets == 5)
344-
345342
assert(telemetry_config.get_bur_time_outs() == 0)
346343
[telemetry_config.record_bur_time_out() for i in range(2)]
347344
assert(telemetry_config.get_bur_time_outs() == 2)
@@ -350,9 +347,6 @@ def test_telemetry_config(self):
350347
[telemetry_config.record_not_ready_usage() for i in range(5)]
351348
assert(telemetry_config.get_non_ready_usage() == 5)
352349

353-
telemetry_config.record_invalid_flag_sets(2)
354-
assert(telemetry_config._flag_sets_invalid == 2)
355-
356350
os.environ["https_proxy"] = "some_host_ip"
357351
assert(telemetry_config._check_if_proxy_detected() == True)
358352

0 commit comments

Comments
 (0)