Skip to content

Commit 7337615

Browse files
author
Bilal Al
committed
Added lock back to FlagSe lib
1 parent f8fa8d8 commit 7337615

File tree

2 files changed

+19
-12
lines changed

2 files changed

+19
-12
lines changed

splitio/recorder/recorder.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ async def record_treatment_stats(self, impressions, latency, operation, method_n
234234
self._imp_counter.track(for_counter)
235235
if len(for_unique_keys_tracker) > 0:
236236
unique_keys_coros = [self._unique_keys_tracker.track(item[0], item[1]) for item in for_unique_keys_tracker]
237-
asyncio.gather(*unique_keys_coros)
237+
await asyncio.gather(*unique_keys_coros)
238238
except Exception: # pylint: disable=broad-except
239239
_LOGGER.error('Error recording impressions')
240240
_LOGGER.debug('Error: ', exc_info=True)
@@ -400,7 +400,7 @@ async def record_treatment_stats(self, impressions, latency, operation, method_n
400400
self._imp_counter.track(for_counter)
401401
if len(for_unique_keys_tracker) > 0:
402402
unique_keys_coros = [self._unique_keys_tracker.track(item[0], item[1]) for item in for_unique_keys_tracker]
403-
asyncio.gather(*unique_keys_coros)
403+
await asyncio.gather(*unique_keys_coros)
404404
except Exception: # pylint: disable=broad-except
405405
_LOGGER.error('Error recording impressions')
406406
_LOGGER.debug('Error: ', exc_info=True)

splitio/storage/inmemmory.py

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class FlagSets(object):
2121
def __init__(self, flag_sets=[]):
2222
"""Constructor."""
2323
self.sets_feature_flag_map = {}
24+
self._lock = threading.RLock()
2425
for flag_set in flag_sets:
2526
self.sets_feature_flag_map[flag_set] = set()
2627

@@ -32,7 +33,8 @@ def flag_set_exist(self, flag_set):
3233
3334
:rtype: bool
3435
"""
35-
return flag_set in self.sets_feature_flag_map.keys()
36+
with self._lock:
37+
return flag_set in self.sets_feature_flag_map.keys()
3638

3739
def get_flag_set(self, flag_set):
3840
"""
@@ -42,25 +44,28 @@ def get_flag_set(self, flag_set):
4244
4345
:rtype: list(str)
4446
"""
45-
return self.sets_feature_flag_map.get(flag_set)
47+
with self._lock:
48+
return self.sets_feature_flag_map.get(flag_set)
4649

4750
def _add_flag_set(self, flag_set):
4851
"""
4952
Add new flag set to storage
5053
:param flag_set: set name
5154
:type flag_set: str
5255
"""
53-
if not self.flag_set_exist(flag_set):
54-
self.sets_feature_flag_map[flag_set] = set()
56+
with self._lock:
57+
if not self.flag_set_exist(flag_set):
58+
self.sets_feature_flag_map[flag_set] = set()
5559

5660
def _remove_flag_set(self, flag_set):
5761
"""
5862
Remove existing flag set from storage
5963
:param flag_set: set name
6064
:type flag_set: str
6165
"""
62-
if self.flag_set_exist(flag_set):
63-
del self.sets_feature_flag_map[flag_set]
66+
with self._lock:
67+
if self.flag_set_exist(flag_set):
68+
del self.sets_feature_flag_map[flag_set]
6469

6570
def add_feature_flag_to_flag_set(self, flag_set, feature_flag):
6671
"""
@@ -70,8 +75,9 @@ def add_feature_flag_to_flag_set(self, flag_set, feature_flag):
7075
:param feature_flag: feature flag name
7176
:type feature_flag: str
7277
"""
73-
if self.flag_set_exist(flag_set):
74-
self.sets_feature_flag_map[flag_set].add(feature_flag)
78+
with self._lock:
79+
if self.flag_set_exist(flag_set):
80+
self.sets_feature_flag_map[flag_set].add(feature_flag)
7581

7682
def remove_feature_flag_to_flag_set(self, flag_set, feature_flag):
7783
"""
@@ -81,8 +87,9 @@ def remove_feature_flag_to_flag_set(self, flag_set, feature_flag):
8187
:param feature_flag: feature flag name
8288
:type feature_flag: str
8389
"""
84-
if self.flag_set_exist(flag_set):
85-
self.sets_feature_flag_map[flag_set].remove(feature_flag)
90+
with self._lock:
91+
if self.flag_set_exist(flag_set):
92+
self.sets_feature_flag_map[flag_set].remove(feature_flag)
8693

8794
def update_flag_set(self, flag_sets, feature_flag_name, should_filter):
8895
if flag_sets is not None:

0 commit comments

Comments
 (0)