@@ -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