class ActiveSupport::Cache::Tracer::Subscriber
Attributes
active_span[R]
event[R]
operation_name[R]
tracer[R]
Public Class Methods
new(tracer: OpenTracing.global_tracer, active_span: nil, event:)
click to toggle source
# File lib/rails/active_support/cache/subscriber.rb, line 7 def initialize(tracer: OpenTracing.global_tracer, active_span: nil, event:) @tracer = tracer @active_span = active_span @event = event @operation_name = "cache.#{event}" end
Public Instance Methods
call(*args)
click to toggle source
For compatibility with Rails
3.2
# File lib/rails/active_support/cache/subscriber.rb, line 15 def call(*args) _, start, finish, _, payload = *args span = Tracer.start_span(operation_name, event: event, tracer: tracer, active_span: active_span, start_time: start, **payload) if payload[:exception] Rails::Tracer::SpanHelpers.set_error(span, payload[:exception_object] || payload[:exception]) end span.finish(end_time: finish) end
finish(name, _, payload)
click to toggle source
# File lib/rails/active_support/cache/subscriber.rb, line 43 def finish(name, _, payload) span = payload[:__OT_SPAN__] return unless span span.set_tag('cache.key', payload.fetch(:key, 'unknown')) if event == 'read' span.set_tag('cache.hit', payload.fetch(:hit, false)) end if payload[:exception] Rails::Tracer::SpanHelpers.set_error(span, payload[:exception_object] || payload[:exception]) end span.finish end
start(name, _, payload)
click to toggle source
# File lib/rails/active_support/cache/subscriber.rb, line 32 def start(name, _, payload) span = tracer.start_span(operation_name, child_of: active_span.respond_to?(:call) ? active_span.call : active_span, tags: { 'component' => 'ActiveSupport::Cache', 'span.kind' => 'client' }) payload[:__OT_SPAN__] = span end