Class: AmplitudeExperiment::DeploymentRunner

Inherits:
Object
  • Object
show all
Defined in:
lib/experiment/deployment/deployment_runner.rb

Overview

DeploymentRunner

Instance Method Summary collapse

Constructor Details

#initialize(config, flag_config_fetcher, flag_config_storage, cohort_storage, logger, cohort_loader = nil) ⇒ DeploymentRunner

Returns a new instance of DeploymentRunner.



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/experiment/deployment/deployment_runner.rb', line 6

def initialize(
  config,
  flag_config_fetcher,
  flag_config_storage,
  cohort_storage,
  logger,
  cohort_loader = nil
)
  @config = config
  @flag_config_fetcher = flag_config_fetcher
  @flag_config_storage = flag_config_storage
  @cohort_storage = cohort_storage
  @cohort_loader = cohort_loader
  @lock = Mutex.new
  @logger = logger
  @executor = Concurrent::ThreadPoolExecutor.new(
    max_threads: 10,
    name: 'DeploymentRunnerExecutor'
  )
end

Instance Method Details

#startObject



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/experiment/deployment/deployment_runner.rb', line 27

def start
  @lock.synchronize do
    update_flag_configs
    @flag_poller = Poller.new(
      @config.flag_config_polling_interval_millis / 1000.0,
      method(:periodic_flag_update)
    )
    @flag_poller.start
    if @config.cohort_sync_config
      @cohort_poller = Poller.new(
        @config.cohort_sync_config.cohort_polling_interval_millis / 1000.0,
        method(:update_cohorts)
      )
      @cohort_poller.start
    end
  end
end

#stopObject



45
46
47
48
49
50
# File 'lib/experiment/deployment/deployment_runner.rb', line 45

def stop
  @flag_poller&.stop
  @flag_poller = nil
  @cohort_poller&.stop
  @cohort_poller = nil
end