a74396dcc5
This will help identify Sidekiq jobs that invoke excessive number of filesystem access. The timing data is stored in `RequestStore`, but this is only active within the middleware and is not directly accessible to the Sidekiq logger. However, it is possible for the middleware to modify the job hash to pass this data along to the logger.
25 lines
681 B
Ruby
25 lines
681 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Gitlab
|
|
module InstrumentationHelper
|
|
extend self
|
|
|
|
KEYS = %i(gitaly_calls gitaly_duration rugged_calls rugged_duration_ms).freeze
|
|
|
|
def add_instrumentation_data(payload)
|
|
gitaly_calls = Gitlab::GitalyClient.get_request_count
|
|
|
|
if gitaly_calls > 0
|
|
payload[:gitaly_calls] = gitaly_calls
|
|
payload[:gitaly_duration] = Gitlab::GitalyClient.query_time_ms
|
|
end
|
|
|
|
rugged_calls = Gitlab::RuggedInstrumentation.query_count
|
|
|
|
if rugged_calls > 0
|
|
payload[:rugged_calls] = rugged_calls
|
|
payload[:rugged_duration_ms] = Gitlab::RuggedInstrumentation.query_time_ms
|
|
end
|
|
end
|
|
end
|
|
end
|