Module: OneApm::Agent::Agent::StartWorkerThread
- Included in:
- OneApm::Agent::Agent
- Defined in:
- lib/one_apm/agent/agent/start_worker_thread.rb
Constant Summary collapse
- OA_MIN_ALLOWED_REPORT_PERIOD =
1.0
- OA_UTILIZATION_REPORT_PERIOD =
30 * 60
- OA_LOG_ONCE_KEYS_RESET_PERIOD =
60.0
Instance Method Summary collapse
- #create_and_run_event_loop ⇒ Object
- #create_event_loop ⇒ Object
- #deferred_work!(connection_options) ⇒ Object
- #report_period_for(method) ⇒ Object
- #start_worker_thread(connection_options = {}) ⇒ Object
- #stop_event_loop ⇒ Object
Instance Method Details
#create_and_run_event_loop ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/one_apm/agent/agent/start_worker_thread.rb', line 37 def create_and_run_event_loop @event_loop = create_event_loop @event_loop.on(:report_data) { transmit_data } @event_loop.on(:report_event_data) { transmit_event_data } @event_loop.on(:reset_log_once_keys) { OneApm::Manager.logger.clear_already_logged } @event_loop.on(:detect_config) { detect_config } @event_loop.on(:reset_counter) { reset_cross_app_sampler_counter } @event_loop.on(:update_rule) { update_rule } @event_loop.fire_every(Manager.config[:data_report_period], :report_data) @event_loop.fire_every(report_period_for(:analytic_event_data), :report_event_data) @event_loop.fire_every(OA_LOG_ONCE_KEYS_RESET_PERIOD, :reset_log_once_keys) @event_loop.fire_every(Manager.config[:data_report_period], :detect_config) @event_loop.fire_every(Manager.config[:data_report_period], :reset_counter) @event_loop.fire_every(Manager.config[:update_rule_period], :update_rule) if OneApm::Manager.config[:collect_utilization] && !in_resque_child_process? @event_loop.on(:report_utilization_data) { transmit_utilization_data } @event_loop.fire(:report_utilization_data) @event_loop.fire_every(OA_UTILIZATION_REPORT_PERIOD, :report_utilization_data) end @event_loop.run end |
#create_event_loop ⇒ Object
66 67 68 |
# File 'lib/one_apm/agent/agent/start_worker_thread.rb', line 66 def create_event_loop OneApm::Support::EventLoop.new end |
#deferred_work!(connection_options) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/one_apm/agent/agent/start_worker_thread.rb', line 24 def deferred_work!() catch_errors do OneApm::Manager.disable_all_tracing do connect() if connected? create_and_run_event_loop else OneApm::Manager.logger.debug "No connection. Worker thread ending." end end end end |
#report_period_for(method) ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/one_apm/agent/agent/start_worker_thread.rb', line 70 def report_period_for(method) config_key = "data_report_periods.#{method}".to_sym period = OneApm::Manager.config[config_key] if !period period = OneApm::Manager.config[:data_report_period] OneApm::Manager.logger.warn("Could not find configured period for #{method}, falling back to data_report_period (#{period} s)") end if period < OA_MIN_ALLOWED_REPORT_PERIOD OneApm::Manager.logger.warn("Configured #{config_key} was #{period}, but minimum allowed is #{OA_MIN_ALLOWED_REPORT_PERIOD}, using #{OA_MIN_ALLOWED_REPORT_PERIOD}.") period = OA_MIN_ALLOWED_REPORT_PERIOD end period end |
#start_worker_thread(connection_options = {}) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/one_apm/agent/agent/start_worker_thread.rb', line 12 def start_worker_thread( = {}) if disable = OneApm::Manager.config[:disable_harvest_thread] OneApm::Manager.logger.info "Not starting Ruby Agent worker thread because :disable_harvest_thread is #{disable}" return end OneApm::Manager.logger.debug "Creating Ruby Agent worker thread." @worker_thread = OneApm::Agent::Threading::AgentThread.create('Worker Loop') do deferred_work!() end end |
#stop_event_loop ⇒ Object
84 85 86 87 88 89 |
# File 'lib/one_apm/agent/agent/start_worker_thread.rb', line 84 def stop_event_loop if @event_loop @event_loop.run_once(true) if OneApm::Manager.config[:force_send] @event_loop.stop end end |