diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-08-12 09:10:10 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-08-12 09:10:10 +0300 |
commit | b684feb6c8dc322efb73d1e0473bcd3f37e08d34 (patch) | |
tree | 2ddb117609e4bb246758acfad58fc02d9da06504 /lib/gitlab/http.rb | |
parent | e6de69cc2eae87536ed97df4dee36980583010f5 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab/http.rb')
-rw-r--r-- | lib/gitlab/http.rb | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/lib/gitlab/http.rb b/lib/gitlab/http.rb index 5e57642333f..8a19f208adf 100644 --- a/lib/gitlab/http.rb +++ b/lib/gitlab/http.rb @@ -43,16 +43,29 @@ module Gitlab options end - unless options.has_key?(:use_read_total_timeout) + options[:skip_read_total_timeout] = true if options[:skip_read_total_timeout].nil? && options[:stream_body] + + if options[:skip_read_total_timeout] return httparty_perform_request(http_method, path, options_with_timeouts, &block) end start_time = Gitlab::Metrics::System.monotonic_time read_total_timeout = options.fetch(:timeout, DEFAULT_READ_TOTAL_TIMEOUT) + tracked_timeout_error = false httparty_perform_request(http_method, path, options_with_timeouts) do |fragment| elapsed = Gitlab::Metrics::System.monotonic_time - start_time - raise ReadTotalTimeout, "Request timed out after #{elapsed} seconds" if elapsed > read_total_timeout + + if elapsed > read_total_timeout + error = ReadTotalTimeout.new("Request timed out after #{elapsed} seconds") + + raise error if options[:use_read_total_timeout] + + unless tracked_timeout_error + Gitlab::ErrorTracking.track_exception(error) + tracked_timeout_error = true + end + end block.call fragment if block end |