Skip to content

Commit ecb4635

Browse files
committed
pr feedback
1 parent 714ba44 commit ecb4635

11 files changed

Lines changed: 35 additions & 25 deletions

File tree

lib/splitclient-rb/engine/api/splits.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def splits_with_segment_names(splits_json)
4646

4747
parsed_splits[:segment_names] =
4848
parsed_splits[:splits].each_with_object(Set.new) do |split, splits|
49-
splits << Helpers::Util.segment_names_by_split(split)
49+
splits << Helpers::Util.segment_names_by_feature_flag(split)
5050
end.flatten
5151

5252
parsed_splits

lib/splitclient-rb/helpers/util.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
module SplitIoClient
44
module Helpers
55
class Util
6-
def self.segment_names_by_split(split)
7-
split[:conditions].each_with_object(Set.new) do |condition, names|
6+
def self.segment_names_by_feature_flag(feature_flag)
7+
feature_flag[:conditions].each_with_object(Set.new) do |condition, names|
88
condition[:matcherGroup][:matchers].each do |matcher|
99
next if matcher[:userDefinedSegmentMatcherData].nil?
1010

lib/splitclient-rb/split_factory.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ def build_synchronizer
184184

185185
def build_streaming_components
186186
@push_status_queue = Queue.new
187-
splits_worker = SSE::Workers::SplitsWorker.new(@synchronizer, @config, @splits_repository, @runtime_producer)
187+
splits_worker = SSE::Workers::SplitsWorker.new(@synchronizer, @config, @splits_repository, @runtime_producer, @segment_fetcher)
188188
segments_worker = SSE::Workers::SegmentsWorker.new(@synchronizer, @config, @segments_repository)
189189
notification_manager_keeper = SSE::NotificationManagerKeeper.new(@config, @runtime_producer, @push_status_queue)
190190
notification_processor = SSE::NotificationProcessor.new(@config, splits_worker, segments_worker)

lib/splitclient-rb/sse/workers/splits_worker.rb

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

lib/splitclient-rb/telemetry/domain/constants.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class Constants
3737
TREATMENTS_WITH_CONFIG = 'treatmentsWithConfig'
3838
TRACK = 'track'
3939

40-
SPLITS = "splits"
40+
SPLITS = 'splits'
4141
end
4242
end
4343
end

lib/splitclient-rb/telemetry/memory/memory_runtime_consumer.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ def session_length
9797
def pop_updates_from_sse
9898
splits = @adapter.updates_from_sse[Domain::Constants::SPLITS]
9999
@adapter.updates_from_sse[Domain::Constants::SPLITS] = 0
100-
100+
101101
UpdatesFromSSE.new(splits)
102102
end
103103

spec/engine/push_manager_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
let(:runtime_producer) { SplitIoClient::Telemetry::RuntimeProducer.new(config) }
1616
let(:split_fetcher) { SplitIoClient::Cache::Fetchers::SplitFetcher.new(splits_repository, api_key, config, runtime_producer) }
1717
let(:segment_fetcher) { SplitIoClient::Cache::Fetchers::SegmentFetcher.new(segments_repository, api_key, config, runtime_producer) }
18-
let(:splits_worker) { SplitIoClient::SSE::Workers::SplitsWorker.new(split_fetcher, config, splits_repository, runtime_producer) }
18+
let(:splits_worker) { SplitIoClient::SSE::Workers::SplitsWorker.new(split_fetcher, config, splits_repository, runtime_producer, segment_fetcher) }
1919
let(:segments_worker) { SplitIoClient::SSE::Workers::SegmentsWorker.new(segment_fetcher, config, segments_repository) }
2020
let(:push_status_queue) { Queue.new }
2121
let(:notification_manager_keeper) { SplitIoClient::SSE::NotificationManagerKeeper.new(config, runtime_producer, push_status_queue) }

spec/engine/sync_manager_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
let(:telemetry_api) { SplitIoClient::Api::TelemetryApi.new(config, api_key, telemetry_runtime_producer) }
4949
let(:telemetry_synchronizer) { SplitIoClient::Telemetry::Synchronizer.new(config, telemetry_consumers, init_producer, repositories, telemetry_api) }
5050
let(:status_manager) { SplitIoClient::Engine::StatusManager.new(config) }
51-
let(:splits_worker) { SplitIoClient::SSE::Workers::SplitsWorker.new(synchronizer, config, splits_repository, telemetry_runtime_producer) }
51+
let(:splits_worker) { SplitIoClient::SSE::Workers::SplitsWorker.new(synchronizer, config, splits_repository, telemetry_runtime_producer, sync_params[:segment_fetcher]) }
5252
let(:segments_worker) { SplitIoClient::SSE::Workers::SegmentsWorker.new(synchronizer, config, segments_repository) }
5353
let(:notification_processor) { SplitIoClient::SSE::NotificationProcessor.new(config, splits_worker, segments_worker) }
5454
let(:event_parser) { SplitIoClient::SSE::EventSource::EventParser.new(config) }

spec/sse/event_source/client_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
}
3131
end
3232
let(:synchronizer) { SplitIoClient::Engine::Synchronizer.new(repositories, config, parameters) }
33-
let(:splits_worker) { SplitIoClient::SSE::Workers::SplitsWorker.new(synchronizer, config, repositories[:splits], telemetry_runtime_producer) }
33+
let(:splits_worker) { SplitIoClient::SSE::Workers::SplitsWorker.new(synchronizer, config, repositories[:splits], telemetry_runtime_producer, parameters[:segment_fetcher]) }
3434
let(:segments_worker) { SplitIoClient::SSE::Workers::SegmentsWorker.new(synchronizer, config, repositories[:segments]) }
3535
let(:push_status_queue) { Queue.new }
3636
let(:notification_manager_keeper) { SplitIoClient::SSE::NotificationManagerKeeper.new(config, telemetry_runtime_producer, push_status_queue) }

spec/sse/sse_handler_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
}
3232
end
3333
let(:synchronizer) { SplitIoClient::Engine::Synchronizer.new(repositories, config, parameters) }
34-
let(:splits_worker) { SplitIoClient::SSE::Workers::SplitsWorker.new(synchronizer, config, splits_repository, telemetry_runtime_producer) }
34+
let(:splits_worker) { SplitIoClient::SSE::Workers::SplitsWorker.new(synchronizer, config, splits_repository, telemetry_runtime_producer, parameters[:segment_fetcher]) }
3535
let(:segments_worker) { SplitIoClient::SSE::Workers::SegmentsWorker.new(synchronizer, config, segments_repository) }
3636
let(:notification_processor) { SplitIoClient::SSE::NotificationProcessor.new(config, splits_worker, segments_worker) }
3737
let(:event_parser) { SplitIoClient::SSE::EventSource::EventParser.new(config) }

0 commit comments

Comments
 (0)