Class: TingYun::Agent::TransactionState

Inherits:
Object
  • Object
show all
Defined in:
lib/ting_yun/agent/transaction/transaction_state.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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeTransactionState

Returns a new instance of TransactionState.



53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 53

def initialize
  @untraced = []
  @current_transaction = nil
  @traced_method_stack = TingYun::Agent::TracedMethodStack.new
  @sql_duration = 0
  @external_duration = 0
  @web_duration = 0
  @queue_duration = 0
  @rds_duration = 0
  @mc_duration = 0
  @mon_duration = 0
end

Instance Attribute Details

#client_req_idObject

Sql Sampler Transaction Data



15
16
17
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 15

def client_req_id
  @client_req_id
end

#client_tingyun_id_secretObject

Sql Sampler Transaction Data



15
16
17
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 15

def client_tingyun_id_secret
  @client_tingyun_id_secret
end

#client_transaction_idObject

Sql Sampler Transaction Data



15
16
17
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 15

def client_transaction_id
  @client_transaction_id
end

#current_transactionObject (readonly)

Returns the value of attribute current_transaction.



13
14
15
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 13

def current_transaction
  @current_transaction
end

#external_durationObject

Sql Sampler Transaction Data



15
16
17
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 15

def external_duration
  @external_duration
end

#mc_durationObject

Sql Sampler Transaction Data



15
16
17
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 15

def mc_duration
  @mc_duration
end

#mon_durationObject

Sql Sampler Transaction Data



15
16
17
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 15

def mon_duration
  @mon_duration
end

#queue_durationObject

Sql Sampler Transaction Data



15
16
17
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 15

def queue_duration
  @queue_duration
end

#rds_durationObject

Sql Sampler Transaction Data



15
16
17
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 15

def rds_duration
  @rds_duration
end

#record_sqlObject

TT’s and SQL



80
81
82
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 80

def record_sql
  @record_sql
end

#record_ttObject

TT’s and SQL



80
81
82
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 80

def record_tt
  @record_tt
end

#sql_durationObject

Sql Sampler Transaction Data



15
16
17
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 15

def sql_duration
  @sql_duration
end

#sql_sampler_transaction_dataObject

Sql Sampler Transaction Data



15
16
17
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 15

def sql_sampler_transaction_data
  @sql_sampler_transaction_data
end

#thrift_return_dataObject

Sql Sampler Transaction Data



15
16
17
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 15

def thrift_return_data
  @thrift_return_data
end

#traced_method_stackObject (readonly)

Returns the value of attribute traced_method_stack.



13
14
15
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 13

def traced_method_stack
  @traced_method_stack
end

#transaction_sample_builderObject

Request data



12
13
14
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 12

def transaction_sample_builder
  @transaction_sample_builder
end

#untracedObject

Returns the value of attribute untraced.



81
82
83
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 81

def untraced
  @untraced
end

#web_durationObject

Sql Sampler Transaction Data



15
16
17
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 15

def web_duration
  @web_duration
end

Class Method Details

.tl_getObject



34
35
36
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 34

def self.tl_get
  tl_state_for(Thread.current)
end

.tl_state_for(thread) ⇒ Object

This method should only be used by TransactionState for access to the current thread’s state or to provide read-only accessors for other threads

If ever exposed, this requires additional synchronization



42
43
44
45
46
47
48
49
50
51
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 42

def self.tl_state_for(thread)
  state = thread[:tingyun_transaction_state]

  if state.nil?
    state = TransactionState.new
    thread[:tingyun_transaction_state] = state
  end

  state
end

Instance Method Details

#execution_traced?Boolean

Returns:

  • (Boolean)


91
92
93
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 91

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

#pop_tracedObject



87
88
89
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 87

def pop_traced
  @untraced.pop if @untraced
end

#push_traced(should_trace) ⇒ Object



83
84
85
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 83

def push_traced(should_trace)
  @untraced << should_trace
end

#request_guidObject



103
104
105
106
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 103

def request_guid
  return nil unless current_transaction
  current_transaction.guid
end

#reset(transaction = nil) ⇒ Object

This starts the timer for the transaction.



67
68
69
70
71
72
73
74
75
76
77
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 67

def reset(transaction=nil)
  # We purposefully don't reset @untraced, @record_tt and @record_sql
  # since those are managed by TingYun::Agent.disable_* calls explicitly
  # and (more importantly) outside the scope of a transaction
  @current_transaction = transaction
  @traced_method_stack.clear
  @transaction_sample_builder = nil
  @sql_sampler_transaction_data = nil
  @cross_tx_data = nil
  @thrift_return_data = nil
end

#sql_recorded?Boolean

Returns:

  • (Boolean)


95
96
97
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 95

def sql_recorded?
  @record_sql != false
end

#transaction_traced?Boolean

Returns:

  • (Boolean)


99
100
101
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 99

def transaction_traced?
  @record_tt != false
end