Module: Prefab::PeriodicSync
- Included in:
- ContextShapeAggregator, EvaluatedKeysAggregator, EvaluationSummaryAggregator, ExampleContextsAggregator, LogPathAggregator
- Defined in:
- lib/prefab/periodic_sync.rb
Instance Method Summary collapse
- #log_internal(message) ⇒ Object
- #on_prepare_data ⇒ Object
- #pool ⇒ Object
- #prepare_data ⇒ Object
- #start_periodic_sync(sync_interval) ⇒ Object
- #sync ⇒ Object
Instance Method Details
#log_internal(message) ⇒ Object
44 45 46 |
# File 'lib/prefab/periodic_sync.rb', line 44 def log_internal() @client.log.log_internal , @name, nil, ::Logger::DEBUG end |
#on_prepare_data ⇒ Object
25 26 27 |
# File 'lib/prefab/periodic_sync.rb', line 25 def on_prepare_data # noop -- override as you wish end |
#pool ⇒ Object
48 49 50 51 52 53 54 55 56 |
# File 'lib/prefab/periodic_sync.rb', line 48 def pool @pool ||= Concurrent::ThreadPoolExecutor.new( fallback_policy: :discard, max_queue: 5, max_threads: 4, min_threads: 1, name: @name ) end |
#prepare_data ⇒ Object
16 17 18 19 20 21 22 23 |
# File 'lib/prefab/periodic_sync.rb', line 16 def prepare_data to_ship = @data.dup @data.clear on_prepare_data to_ship end |
#start_periodic_sync(sync_interval) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/prefab/periodic_sync.rb', line 29 def start_periodic_sync(sync_interval) @start_at = Prefab::TimeHelpers.now_in_ms @sync_interval = calculate_sync_interval(sync_interval) Thread.new do log_internal "Initialized #{@name} instance_hash=#{@client.instance_hash}" loop do sleep @sync_interval.call sync end end end |
#sync ⇒ Object
5 6 7 8 9 10 11 12 13 14 |
# File 'lib/prefab/periodic_sync.rb', line 5 def sync return if @data.size.zero? log_internal "Syncing #{@data.size} items" start_at_was = @start_at @start_at = Prefab::TimeHelpers.now_in_ms flush(prepare_data, start_at_was) end |