Class: ThriftServer::InstrumentationMiddleware

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/thrift_server/instrumentation_middleware.rb

Instance Method Summary collapse

Instance Method Details

#call(rpc) ⇒ Object


9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/thrift_server/instrumentation_middleware.rb', line 9

def call(rpc)
  start_time = Time.now

  publish :rpc_incoming, rpc

  app.call(rpc).tap do |response|
    latency = (Time.now - start_time) * 1000

    publish :rpc_ok, rpc, response, {
      latency: latency
    }
  end
rescue => ex
  latency = (Time.now - start_time) * 1000

  if rpc.protocol_exception? ex
    publish :rpc_exception, rpc, ex, latency: latency
  else
    publish :rpc_error, rpc, ex, latency: latency
  end

  raise ex
end