Class: JCW::Interceptors::Gruf::Server
- Inherits:
-
Gruf::Interceptors::ServerInterceptor
- Object
- Gruf::Interceptors::ServerInterceptor
- JCW::Interceptors::Gruf::Server
- Defined in:
- lib/jcw/interceptors/gruf/server.rb
Instance Method Summary collapse
-
#call ⇒ Object
rubocop:disable Metrics/MethodLength.
Instance Method Details
#call ⇒ Object
rubocop:disable Metrics/MethodLength
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/jcw/interceptors/gruf/server.rb', line 8 def call method = request.method_name return yield if Wrapper.config.grpc_ignore_methods.include?(method) tracer = OpenTracing.global_tracer on_finish_span = [:on_finish_span] service_class = request.service method_name = request.method_key name = method_name.to_s.camelize route = "/#{service_class.service_name}/#{name}" begin = { "component" => "gRPC", "span.kind" => "server", "grpc.method_type" => "request_response", } hpack_carrier = Hpack.new(request.active_call.) parent_span_context = tracer.extract(::OpenTracing::FORMAT_TEXT_MAP, hpack_carrier) current_scope = tracer.start_active_span( route, child_of: parent_span_context, tags: , ) current_span = current_scope.span current_span.log_kv(event: "request", data: request..to_h) response = yield if response.try(:error_fields) current_span.set_tag("error", true) current_span.log_kv(event: "error", data: response.to_h) end rescue => e if current_span current_span.set_tag("error", true) current_span.log_kv(event: "error", error_object: e) end raise ensure on_finish_span&.call(current_span) current_scope.close if current_span end response end |