class OpenTracing::Instrumentation::Thrift::TracedProcessor
Trace thrift processor
Usage:
processor = OrderService::Processor.new(orders_handler) traced_processor = OpenTracing::Instrumentation::Thrift::TracedProcessor.new(processor)
Attributes
config[R]
processor[R]
Public Class Methods
new(processor, config: TracedProcessorConfig.new) { |config| ... }
click to toggle source
@parama processor [Thrift::Processor] traced processor @param config [TracedProcessorConfig] @yieldparam [TracedProcessorConfig]
# File lib/opentracing/instrumentation/thrift/traced_processor.rb, line 36 def initialize(processor, config: TracedProcessorConfig.new) @processor = processor yield config if block_given? @config = config.dup end
Public Instance Methods
process(iproto, oproto)
click to toggle source
@param iproto [Thrift::Protocol] input protocol @param oproto [Thrift::Protocol] output protocol
# File lib/opentracing/instrumentation/thrift/traced_processor.rb, line 44 def process(iproto, oproto) trace_process(iproto) do |cached_iproto| processor.process( wrap_protocol(cached_iproto), wrap_protocol(oproto), ) end end
Private Instance Methods
safe_close_scope(scope)
click to toggle source
# File lib/opentracing/instrumentation/thrift/traced_processor.rb, line 95 def safe_close_scope(scope) scope&.close rescue StandardError => e logger&.error(e) end
safe_start_scope(protocol, name, type, seq_id, start_time)
click to toggle source
# File lib/opentracing/instrumentation/thrift/traced_processor.rb, line 83 def safe_start_scope(protocol, name, type, seq_id, start_time) operation_name = operation_name_builder.build(name, type, seq_id) tags = tags_builder.build_tags(protocol, name, type) tracer.start_active_span( operation_name, start_time: start_time, tags: tags, ) rescue StandardError => e logger&.error(e) end
trace_process(iproto) { |cached_iproto| ... }
click to toggle source
# File lib/opentracing/instrumentation/thrift/traced_processor.rb, line 66 def trace_process(iproto) cached_iproto = ReadCachedProtocol.new(iproto) start_time = Time.now name, type, seq_id = cached_iproto.read_message_begin scope = safe_start_scope(iproto, name, type, seq_id, start_time) yield cached_iproto rescue StandardError => e error_writer.write_error(scope.span, e) if scope&.span raise e ensure safe_close_scope(scope) end
wrap_protocol(protocol)
click to toggle source
# File lib/opentracing/instrumentation/thrift/traced_processor.rb, line 101 def wrap_protocol(protocol) return protocol unless trace_protocol TracedProtocol.new(protocol) do |config| config.tracer = tracer end end