Class: NewRelic::Agent::Tracer::State

Inherits:
Object
  • Object
show all
Defined in:
lib/new_relic/agent/tracer.rb

Overview

This is THE location to store thread local information during a transaction Need a new piece of data? Add a method here, NOT a new thread local variable.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeState

Returns a new instance of State.



464
465
466
467
468
# File 'lib/new_relic/agent/tracer.rb', line 464

def initialize
  @untraced = []
  @current_transaction = nil
  @record_sql = nil
end

Instance Attribute Details

#current_transactionObject

Current transaction stack



481
482
483
# File 'lib/new_relic/agent/tracer.rb', line 481

def current_transaction
  @current_transaction
end

#record_sqlObject

TT’s and SQL



502
503
504
# File 'lib/new_relic/agent/tracer.rb', line 502

def record_sql
  @record_sql
end

#sql_sampler_transaction_dataObject

Sql Sampler Transaction Data



509
510
511
# File 'lib/new_relic/agent/tracer.rb', line 509

def sql_sampler_transaction_data
  @sql_sampler_transaction_data
end

#untracedObject

Execution tracing on current thread



484
485
486
# File 'lib/new_relic/agent/tracer.rb', line 484

def untraced
  @untraced
end

Instance Method Details

#is_execution_traced?Boolean Also known as: tracing_enabled?

Returns:

  • (Boolean)


495
496
497
# File 'lib/new_relic/agent/tracer.rb', line 495

def is_execution_traced?
  @untraced.nil? || @untraced.last != false
end

#is_sql_recorded?Boolean

Returns:

  • (Boolean)


504
505
506
# File 'lib/new_relic/agent/tracer.rb', line 504

def is_sql_recorded?
  @record_sql != false
end

#pop_tracedObject



490
491
492
493
# File 'lib/new_relic/agent/tracer.rb', line 490

def pop_traced
  # needs else branch coverage
  @untraced.pop if @untraced # rubocop:disable Style/SafeNavigation
end

#push_traced(should_trace) ⇒ Object



486
487
488
# File 'lib/new_relic/agent/tracer.rb', line 486

def push_traced(should_trace)
  @untraced << should_trace
end

#reset(transaction = nil) ⇒ Object

This starts the timer for the transaction.



471
472
473
474
475
476
477
478
# File 'lib/new_relic/agent/tracer.rb', line 471

def reset(transaction = nil)
  # We purposefully don't reset @untraced or @record_sql
  # since those are managed by NewRelic::Agent.disable_* calls explicitly
  # and (more importantly) outside the scope of a transaction

  @current_transaction = transaction
  @sql_sampler_transaction_data = nil
end