@@ -4,13 +4,14 @@ module SplitIoClient
44 module SSE
55 module Workers
66 class SplitsWorker
7- def initialize ( synchronizer , config , feature_flags_repository , telemetry_runtime_producer )
7+ def initialize ( synchronizer , config , feature_flags_repository , telemetry_runtime_producer , segment_fetcher )
88 @synchronizer = synchronizer
99 @config = config
1010 @feature_flags_repository = feature_flags_repository
1111 @queue = Queue . new
1212 @running = Concurrent ::AtomicBoolean . new ( false )
1313 @telemetry_runtime_producer = telemetry_runtime_producer
14+ @segment_fetcher = segment_fetcher
1415 end
1516
1617 def start
@@ -69,9 +70,8 @@ def update_feature_flag(notification)
6970 @feature_flags_repository . remove_split ( new_split )
7071 else
7172 @feature_flags_repository . add_split ( new_split )
72- segment_names = Helpers ::Util . segment_names_by_split ( new_split )
7373
74- @feature_flags_repository . set_segment_names ( segment_names ) unless segment_names . nil?
74+ fetch_segments_if_not_exists ( new_split )
7575 end
7676
7777 @feature_flags_repository . set_change_number ( notification . data [ 'changeNumber' ] )
@@ -101,6 +101,14 @@ def return_split_from_json(notification)
101101
102102 JSON . parse ( split_json , symbolize_names : true )
103103 end
104+
105+ def fetch_segments_if_not_exists ( feature_flag )
106+ segment_names = Helpers ::Util . segment_names_by_feature_flag ( feature_flag )
107+ return if segment_names . nil?
108+
109+ @feature_flags_repository . set_segment_names ( segment_names )
110+ @segment_fetcher . fetch_segments_if_not_exists ( segment_names )
111+ end
104112 end
105113 end
106114 end
0 commit comments