class ElasticAPM::GRPC::ServerInterceptor
@api private
def request_response(request:, call:, method:)
def request_response(request:, call:, method:) transaction = start_transaction(call) yield transaction.done 'success' rescue ::Exception => e ElasticAPM.report(e, handled: false) transaction&.done 'error' raise ensure ElasticAPM.end_transaction end
def start_transaction(call)
def start_transaction(call) ElasticAPM.start_transaction( 'grpc', 'request', trace_context: trace_context(call) ) end
def trace_context(call)
def trace_context(call) TraceContext.parse(metadata: call.metadata) rescue TraceContext::InvalidTraceparentHeader warn "Couldn't parse invalid trace context header: #{call.metadata}" nil end