Class: TingYun::Agent::TransactionState
- Inherits:
-
Object
- Object
- TingYun::Agent::TransactionState
- 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
-
#client_req_id ⇒ Object
Sql Sampler Transaction Data.
-
#client_tingyun_id_secret ⇒ Object
Sql Sampler Transaction Data.
-
#client_transaction_id ⇒ Object
Sql Sampler Transaction Data.
-
#current_transaction ⇒ Object
readonly
Returns the value of attribute current_transaction.
-
#external_duration ⇒ Object
Sql Sampler Transaction Data.
-
#mc_duration ⇒ Object
Sql Sampler Transaction Data.
-
#mon_duration ⇒ Object
Sql Sampler Transaction Data.
-
#queue_duration ⇒ Object
Sql Sampler Transaction Data.
-
#rds_duration ⇒ Object
Sql Sampler Transaction Data.
-
#record_sql ⇒ Object
TT’s and SQL.
-
#record_tt ⇒ Object
TT’s and SQL.
-
#sql_duration ⇒ Object
Sql Sampler Transaction Data.
-
#sql_sampler_transaction_data ⇒ Object
Sql Sampler Transaction Data.
-
#thrift_return_data ⇒ Object
Sql Sampler Transaction Data.
-
#traced_method_stack ⇒ Object
readonly
Returns the value of attribute traced_method_stack.
-
#transaction_sample_builder ⇒ Object
Request data.
-
#untraced ⇒ Object
Returns the value of attribute untraced.
-
#web_duration ⇒ Object
Sql Sampler Transaction Data.
Class Method Summary collapse
- .tl_get ⇒ Object
-
.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.
Instance Method Summary collapse
- #execution_traced? ⇒ Boolean
-
#initialize ⇒ TransactionState
constructor
A new instance of TransactionState.
- #pop_traced ⇒ Object
- #push_traced(should_trace) ⇒ Object
- #request_guid ⇒ Object
-
#reset(transaction = nil) ⇒ Object
This starts the timer for the transaction.
- #sql_recorded? ⇒ Boolean
- #transaction_traced? ⇒ Boolean
Constructor Details
#initialize ⇒ TransactionState
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_id ⇒ Object
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_secret ⇒ Object
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_id ⇒ Object
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_transaction ⇒ Object (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_duration ⇒ Object
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_duration ⇒ Object
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_duration ⇒ Object
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_duration ⇒ Object
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_duration ⇒ Object
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_sql ⇒ Object
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_tt ⇒ Object
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_duration ⇒ Object
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_data ⇒ Object
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_data ⇒ Object
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_stack ⇒ Object (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_builder ⇒ Object
Request data
12 13 14 |
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 12 def transaction_sample_builder @transaction_sample_builder end |
#untraced ⇒ Object
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_duration ⇒ Object
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_get ⇒ Object
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
91 92 93 |
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 91 def execution_traced? @untraced.nil? || @untraced.last != false end |
#pop_traced ⇒ Object
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_guid ⇒ Object
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
95 96 97 |
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 95 def sql_recorded? @record_sql != false end |
#transaction_traced? ⇒ Boolean
99 100 101 |
# File 'lib/ting_yun/agent/transaction/transaction_state.rb', line 99 def transaction_traced? @record_tt != false end |