@@ -4,7 +4,8 @@ module SplitIoClient
44 module SSE
55 module Workers
66 class SplitsWorker
7- def initialize ( synchronizer , config , feature_flags_repository , telemetry_runtime_producer , segment_fetcher , rule_based_segment_repository )
7+ def initialize ( synchronizer , config , feature_flags_repository , telemetry_runtime_producer ,
8+ segment_fetcher , rule_based_segment_repository )
89 @synchronizer = synchronizer
910 @config = config
1011 @feature_flags_repository = feature_flags_repository
@@ -68,12 +69,11 @@ def perform
6869 def update_feature_flag ( notification )
6970 return true if @feature_flags_repository . get_change_number . to_i >= notification . data [ 'changeNumber' ]
7071 return false unless !notification . data [ 'd' ] . nil? && @feature_flags_repository . get_change_number == notification . data [ 'pcn' ]
71- new_split = return_object_from_json ( notification )
72- SplitIoClient ::Helpers ::RepositoryHelper . update_feature_flag_repository ( @feature_flags_repository ,
73- [ new_split ] ,
74- notification . data [ 'changeNumber' ] , @config , false )
75- fetch_segments_if_not_exists ( Helpers ::Util . segment_names_by_object ( new_split , "IN_SEGMENT" ) , @feature_flags_repository )
76- if fetch_rule_based_segments_if_not_exists ( Helpers ::Util . segment_names_by_object ( new_split , "IN_RULE_BASED_SEGMENT" ) , notification . data [ 'changeNumber' ] )
72+
73+ update_feature_flag_repository ( notification )
74+ fetch_segments_if_not_exists ( Helpers ::Util . segment_names_by_object ( new_split , 'IN_SEGMENT' ) , @feature_flags_repository )
75+ if fetch_rule_based_segments_if_not_exists ( Helpers ::Util . segment_names_by_object ( new_split , 'IN_RULE_BASED_SEGMENT' ) ,
76+ notification . data [ 'changeNumber' ] )
7777 return true
7878 end
7979
@@ -86,18 +86,26 @@ def update_feature_flag(notification)
8686 false
8787 end
8888
89+ def update_feature_flag_repository ( notification )
90+ new_split = return_object_from_json ( notification )
91+ SplitIoClient ::Helpers ::RepositoryHelper . update_feature_flag_repository ( @feature_flags_repository , [ new_split ] ,
92+ notification . data [ 'changeNumber' ] , @config , false )
93+ end
94+
8995 def update_rule_based_segment ( notification )
9096 return true if @rule_based_segment_repository . get_change_number . to_i >= notification . data [ 'changeNumber' ]
91- return false unless !notification . data [ 'd' ] . nil? && @rule_based_segment_repository . get_change_number == notification . data [ 'pcn' ]
97+ return false unless !notification . data [ 'd' ] . nil? &&
98+ @rule_based_segment_repository . get_change_number == notification . data [ 'pcn' ]
9299
93100 new_rb_segment = return_object_from_json ( notification )
94101 SplitIoClient ::Helpers ::RepositoryHelper . update_rule_based_segment_repository ( @rule_based_segment_repository ,
95- [ new_rb_segment ] ,
96- notification . data [ 'changeNumber' ] , @config )
97- fetch_segments_if_not_exists ( Helpers ::Util . segment_names_by_object ( new_rb_segment , "IN_SEGMENT" ) , @rule_based_segment_repository )
102+ [ new_rb_segment ] ,
103+ notification . data [ 'changeNumber' ] , @config )
104+ fetch_segments_if_not_exists ( Helpers ::Util . segment_names_by_object ( new_rb_segment , 'IN_SEGMENT' ) ,
105+ @rule_based_segment_repository )
98106
99- # TODO: enable when telemetry spec is added
100- # @telemetry_runtime_producer.record_updates_from_sse(Telemetry::Domain::Constants::SPLITS)
107+ # TODO: enable when telemetry spec is added
108+ # @telemetry_runtime_producer.record_updates_from_sse(Telemetry::Domain::Constants::SPLITS)
101109
102110 true
103111 rescue StandardError => e
@@ -110,11 +118,9 @@ def kill_feature_flag(notification)
110118 return if @feature_flags_repository . get_change_number . to_i > notification . data [ 'changeNumber' ]
111119
112120 @config . logger . debug ( "feature_flags_worker kill #{ notification . data [ 'splitName' ] } , #{ notification . data [ 'changeNumber' ] } " )
113- @feature_flags_repository . kill (
114- notification . data [ 'changeNumber' ] ,
115- notification . data [ 'splitName' ] ,
116- notification . data [ 'defaultTreatment' ]
117- )
121+ @feature_flags_repository . kill ( notification . data [ 'changeNumber' ] ,
122+ notification . data [ 'splitName' ] ,
123+ notification . data [ 'defaultTreatment' ] )
118124 @synchronizer . fetch_splits ( notification . data [ 'changeNumber' ] , 0 )
119125 end
120126
@@ -124,17 +130,15 @@ def return_object_from_json(notification)
124130 end
125131
126132 def fetch_segments_if_not_exists ( segment_names , object_repository )
127-
128133 return if segment_names . nil?
129134
130135 object_repository . set_segment_names ( segment_names )
131136 @segment_fetcher . fetch_segments_if_not_exists ( segment_names )
132137 end
133138
134139 def fetch_rule_based_segments_if_not_exists ( segment_names , change_number )
135- if segment_names . nil? or segment_names . empty? or @rule_based_segment_repository . contains? ( segment_names . to_a )
136- return false
137- end
140+ return false if segment_names . nil? || segment_names . empty? || @rule_based_segment_repository . contains? ( segment_names . to_a )
141+
138142 @synchronizer . fetch_splits ( 0 , change_number )
139143
140144 true
0 commit comments