Method: NewRelic::Agent::Threading::BacktraceService#initialize

Defined in:
lib/new_relic/agent/threading/backtrace_service.rb

#initialize(event_listener = nil) ⇒ BacktraceService

Returns a new instance of BacktraceService.



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/new_relic/agent/threading/backtrace_service.rb', line 26

def initialize(event_listener = nil)
  @profiles = {}
  @buffer = {}
  @last_poll = nil

  # synchronizes access to @profiles and @buffer above
  @lock = Mutex.new

  @running = false
  @profile_agent_code = false
  @worker_loop = NewRelic::Agent::WorkerLoop.new

  # Memoize overhead % to avoid getting stale OR looked up every poll
  @overhead_percent_threshold = NewRelic::Agent.config[:'thread_profiler.max_profile_overhead']
  NewRelic::Agent.config.register_callback(:'thread_profiler.max_profile_overhead') do |new_value|
    @overhead_percent_threshold = new_value
  end

  event_listener&.subscribe(:transaction_finished, &method(:on_transaction_finished))
end