ebf98f27c4
Enables frozen string for the following: * lib/gitlab/fogbugz_import/**/*.rb * lib/gitlab/gfm/**/*.rb * lib/gitlab/git/**/*.rb * lib/gitlab/gitaly_client/**/*.rb * lib/gitlab/gitlab_import/**/*.rb * lib/gitlab/google_code_import/**/*.rb * lib/gitlab/gpg/**/*.rb * lib/gitlab/grape_logging/**/*.rb * lib/gitlab/graphql/**/*.rb * lib/gitlab/graphs/**/*.rb * lib/gitlab/hashed_storage/**/*.rb * lib/gitlab/health_checks/**/*.rb Partially address gitlab-org/gitlab-ce#47424.
28 lines
820 B
Ruby
28 lines
820 B
Ruby
# frozen_string_literal: true
|
|
|
|
# This grape_logging module (https://github.com/aserafin/grape_logging) makes it
|
|
# possible to log how much time an API request was queued by Workhorse.
|
|
module Gitlab
|
|
module GrapeLogging
|
|
module Loggers
|
|
class QueueDurationLogger < ::GrapeLogging::Loggers::Base
|
|
attr_accessor :start_time
|
|
|
|
def before
|
|
@start_time = Time.now
|
|
end
|
|
|
|
def parameters(request, _)
|
|
proxy_start = request.env['HTTP_GITLAB_WORKHORSE_PROXY_START'].presence
|
|
|
|
return {} unless proxy_start && start_time
|
|
|
|
# Time in milliseconds since gitlab-workhorse started the request
|
|
duration = (start_time.to_f * 1_000 - proxy_start.to_f / 1_000_000).round(2)
|
|
|
|
{ 'queue_duration': duration }
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|