Class: Excon::Middleware::OneApmCrossAppTracing
- Inherits:
-
Object
- Object
- Excon::Middleware::OneApmCrossAppTracing
- Defined in:
- lib/one_apm/inst/http_clients/excon/middleware.rb
Constant Summary collapse
- TRACE_DATA_IVAR =
:@oneapm_trace_data
Instance Method Summary collapse
- #error_call(datum) ⇒ Object
- #finish_trace(datum) ⇒ Object
-
#initialize(stack) ⇒ OneApmCrossAppTracing
constructor
A new instance of OneApmCrossAppTracing.
- #request_call(datum) ⇒ Object
- #response_call(datum) ⇒ Object
Constructor Details
#initialize(stack) ⇒ OneApmCrossAppTracing
Returns a new instance of OneApmCrossAppTracing.
8 9 10 |
# File 'lib/one_apm/inst/http_clients/excon/middleware.rb', line 8 def initialize(stack) @stack = stack end |
Instance Method Details
#error_call(datum) ⇒ Object
36 37 38 39 |
# File 'lib/one_apm/inst/http_clients/excon/middleware.rb', line 36 def error_call(datum) finish_trace(datum) @stack.error_call(datum) end |
#finish_trace(datum) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/one_apm/inst/http_clients/excon/middleware.rb', line 41 def finish_trace(datum) trace_data = datum[:connection] && datum[:connection].instance_variable_get(TRACE_DATA_IVAR) if trace_data datum[:connection].instance_variable_set(TRACE_DATA_IVAR, nil) t0, segment, wrapped_request = trace_data if datum[:response] wrapped_response = ::OneApm::Support::HTTPClients::ExconHTTPResponse.new(datum[:response]) end state = ::OneApm::TransactionState.tl_get ::OneApm::Agent::CrossAppTracing.finish_trace(state, t0, segment, wrapped_request, wrapped_response) end end |
#request_call(datum) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/one_apm/inst/http_clients/excon/middleware.rb', line 12 def request_call(datum) begin # Only instrument this request if we haven't already done so, because # we can get request_call multiple times for requests marked as # :idempotent in the options, but there will be only a single # accompanying response_call/error_call. if datum[:connection] && !datum[:connection].instance_variable_get(TRACE_DATA_IVAR) wrapped_request = ::OneApm::Support::HTTPClients::ExconHTTPRequest.new(datum) state = ::OneApm::TransactionState.tl_get t0 = Time.now segment = ::OneApm::Agent::CrossAppTracing.start_trace(state, t0, wrapped_request) datum[:connection].instance_variable_set(TRACE_DATA_IVAR, [t0, segment, wrapped_request]) end rescue => e OneApm::Manager.logger.debug(e) end @stack.request_call(datum) end |
#response_call(datum) ⇒ Object
31 32 33 34 |
# File 'lib/one_apm/inst/http_clients/excon/middleware.rb', line 31 def response_call(datum) finish_trace(datum) @stack.response_call(datum) end |