diff options
Diffstat (limited to 'lib/gitlab/gitaly_client.rb')
-rw-r--r-- | lib/gitlab/gitaly_client.rb | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/lib/gitlab/gitaly_client.rb b/lib/gitlab/gitaly_client.rb index c4eb3ad770a..2ac99b1ff02 100644 --- a/lib/gitlab/gitaly_client.rb +++ b/lib/gitlab/gitaly_client.rb @@ -142,13 +142,13 @@ module Gitlab # kwargs.merge(deadline: Time.now + 10) # end # - def self.call(storage, service, rpc, request, remote_storage: nil, timeout: default_timeout) + def self.call(storage, service, rpc, request, remote_storage: nil, timeout: nil) start = Gitlab::Metrics::System.monotonic_time request_hash = request.is_a?(Google::Protobuf::MessageExts) ? request.to_h : {} enforce_gitaly_request_limits(:call) - kwargs = request_kwargs(storage, timeout: timeout.to_f, remote_storage: remote_storage) + kwargs = request_kwargs(storage, timeout, remote_storage: remote_storage) kwargs = yield(kwargs) if block_given? stub(service, storage).__send__(rpc, request, kwargs) # rubocop:disable GitlabSecurity/PublicSend @@ -200,7 +200,7 @@ module Gitlab end private_class_method :authorization_token - def self.request_kwargs(storage, timeout:, remote_storage: nil) + def self.request_kwargs(storage, timeout, remote_storage: nil) metadata = { 'authorization' => "Bearer #{authorization_token(storage)}", 'client_name' => CLIENT_NAME @@ -216,7 +216,14 @@ module Gitlab result = { metadata: metadata } - result[:deadline] = real_time + timeout if timeout > 0 + # nil timeout indicates that we should use the default + timeout = default_timeout if timeout.nil? + + return result unless timeout > 0 + + deadline = real_time + timeout + result[:deadline] = deadline + result end @@ -350,6 +357,8 @@ module Gitlab # The default timeout on all Gitaly calls def self.default_timeout + return no_timeout if Sidekiq.server? + timeout(:gitaly_timeout_default) end @@ -361,12 +370,8 @@ module Gitlab timeout(:gitaly_timeout_medium) end - def self.long_timeout - if Sidekiq.server? - 6.hours - else - 55.seconds - end + def self.no_timeout + 0 end def self.storage_metadata_file_path(storage) |