diff options
Diffstat (limited to 'config/initializers/google_api_client_patch.rb')
-rw-r--r-- | config/initializers/google_api_client_patch.rb | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/config/initializers/google_api_client_patch.rb b/config/initializers/google_api_client_patch.rb deleted file mode 100644 index 2a832790f97..00000000000 --- a/config/initializers/google_api_client_patch.rb +++ /dev/null @@ -1,68 +0,0 @@ -# frozen_string_literal: true - -require 'google/apis/core/http_command' -require 'google/apis/version' - -raise 'This patch is only tested with google-api-client-ruby v0.53.0' unless Google::Apis::VERSION == "0.53.0" - -# The google-api-ruby-client does not have a way to increase or disable -# the maximum allowed time for a request to be retried. By default, it -# is using the Retriable gem's 15-minute timeout, which appears to be -# too low for uploads over 10 GB. This patches the gem with the upstream -# changes: -# https://github.com/googleapis/google-api-ruby-client/pull/8106 -module Google - module Apis - module Core - # Command for HTTP request/response. - class HttpCommand - MAX_ELAPSED_TIME = 3600 - - # Execute the command, retrying as necessary - # - # @param [HTTPClient] client - # HTTP client - # @yield [result, err] Result or error if block supplied - # @return [Object] - # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried - # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification - # @raise [Google::Apis::AuthorizationError] Authorization is required - def execute(client) - prepare! - opencensus_begin_span - begin - Retriable.retriable tries: options.retries + 1, - max_elapsed_time: MAX_ELAPSED_TIME, - base_interval: 1, - multiplier: 2, - on: RETRIABLE_ERRORS do |try| - # This 2nd level retriable only catches auth errors, and supports 1 retry, which allows - # auth to be re-attempted without having to retry all sorts of other failures like - # NotFound, etc - auth_tries = (try == 1 && authorization_refreshable? ? 2 : 1) - Retriable.retriable tries: auth_tries, - on: [Google::Apis::AuthorizationError, Signet::AuthorizationError, Signet::RemoteServerError, Signet::UnexpectedStatusError], - on_retry: proc { |*| refresh_authorization } do - execute_once(client).tap do |result| - if block_given? - yield result, nil - end - end - end - end - rescue => e # rubocop:disable Style/RescueStandardError - if block_given? - yield nil, e - else - raise e - end - end - ensure - opencensus_end_span - @http_res = nil - release! - end - end - end - end -end |