Read about our upcoming Code of Conduct on this issue

Commit 8c8c706f authored by Rémy Coutable's avatar Rémy Coutable
Browse files

Merge branch 'gitaly_feature_flag_metadata' into 'master'

Gitaly feature flag metadata

See merge request gitlab-org/gitlab-ce!14332
---
title: Add client and call site metadata to Gitaly calls for better traceability
merge_request: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/14332
author:
type: added
......@@ -28,6 +28,7 @@ def initialize(call_site, invocation_count, max_call_stack, most_invoked_stack)
SERVER_VERSION_FILE = 'GITALY_SERVER_VERSION'.freeze
MAXIMUM_GITALY_CALLS = 30
CLIENT_NAME = (Sidekiq.server? ? 'gitlab-sidekiq' : 'gitlab-web').freeze
MUTEX = Mutex.new
private_constant :MUTEX
......@@ -79,7 +80,16 @@ def self.call(storage, service, rpc, request)
def self.request_metadata(storage)
encoded_token = Base64.strict_encode64(token(storage).to_s)
{ metadata: { 'authorization' => "Bearer #{encoded_token}" } }
metadata = {
'authorization' => "Bearer #{encoded_token}",
'client_name' => CLIENT_NAME
}
feature_stack = Thread.current[:gitaly_feature_stack]
feature = feature_stack && feature_stack[0]
metadata['call_site'] = feature.to_s if feature
{ metadata: metadata }
end
def self.token(storage)
......@@ -137,7 +147,14 @@ def self.migrate(feature, status: MigrationStatus::OPT_IN)
Gitlab::Metrics.measure(metric_name) do
# Some migrate calls wrap other migrate calls
allow_n_plus_1_calls do
yield is_enabled
feature_stack = Thread.current[:gitaly_feature_stack] ||= []
feature_stack.unshift(feature)
begin
yield is_enabled
ensure
feature_stack.shift
Thread.current[:gitaly_feature_stack] = nil if feature_stack.empty?
end
end
end
end
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment