class ThriftServer::InstrumentationMiddleware

Public Instance Methods

call(rpc) click to toggle source
# 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