@@ -38,19 +38,20 @@ def __init__(self, synchronize_feature_flag, feature_flag_queue, feature_flag_st
3838 self ._running = False
3939 self ._worker = None
4040 self ._feature_flag_storage = feature_flag_storage
41+ self ._compression_handlers = {
42+ CompressionMode .NO_COMPRESSION : lambda event : base64 .b64decode (event .feature_flag_definition ),
43+ CompressionMode .GZIP_COMPRESSION : lambda event : gzip .decompress (base64 .b64decode (event .feature_flag_definition )).decode ('utf-8' ),
44+ CompressionMode .ZLIB_COMPRESSION : lambda event : zlib .decompress (base64 .b64decode (event .feature_flag_definition )).decode ('utf-8' ),
45+ }
4146
4247 def is_running (self ):
4348 """Return whether the working is running."""
4449 return self ._running
4550
4651 def _get_feature_flag_definition (self , event ):
4752 """return feature flag definition in event."""
48- if event .compression == CompressionMode .NO_COMPRESSION .value :
49- return base64 .b64decode (event .feature_flag_definition )
50- elif event .compression == CompressionMode .GZIP_COMPRESSION .value :
51- return gzip .decompress (base64 .b64decode (event .feature_flag_definition )).decode ('utf-8' )
52- elif event .compression == CompressionMode .ZLIB_COMPRESSION .value :
53- return zlib .decompress (base64 .b64decode (event .feature_flag_definition )).decode ('utf-8' )
53+ cm = CompressionMode (event .compression ) # will throw if the number is not defined in compression mode
54+ return self ._compression_handlers [cm ](event )
5455
5556 def _run (self ):
5657 """Run worker handler."""
@@ -63,10 +64,14 @@ def _run(self):
6364 _LOGGER .debug ('Processing feature flag update %d' , event .change_number )
6465 try :
6566 if event .compression is not None and event .previous_change_number == self ._feature_flag_storage .get_change_number ():
66- feature_flag_definition = self ._get_feature_flag_definition (event )
67- self ._feature_flag_storage .put (from_raw (json .loads (self ._get_feature_flag_definition (event ))))
68- self ._feature_flag_storage .set_change_number (event .change_number )
69- continue
67+ try :
68+ self ._feature_flag_storage .put (from_raw (json .loads (self ._get_feature_flag_definition (event ))))
69+ self ._feature_flag_storage .set_change_number (event .change_number )
70+ continue
71+ except Exception as e :
72+ _LOGGER .error ('Exception raised in updating feature flag' )
73+ _LOGGER .error (str (e ))
74+ pass
7075 self ._handler (event .change_number )
7176 except Exception as e : # pylint: disable=broad-except
7277 _LOGGER .error ('Exception raised in feature flag synchronization' )
0 commit comments