gitlab-triage 1.15.0 → 1.16.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/gitlab/triage/errors/network.rb +1 -0
- data/lib/gitlab/triage/network.rb +6 -2
- data/lib/gitlab/triage/network_adapters/httparty_adapter.rb +10 -0
- data/lib/gitlab/triage/option_parser.rb +2 -0
- data/lib/gitlab/triage/resource/context.rb +1 -0
- data/lib/gitlab/triage/resource/epic.rb +24 -0
- data/lib/gitlab/triage/retryable.rb +7 -5
- data/lib/gitlab/triage/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 843acca8deb39647c9cea0af3b5fbeb5bfd620c7cc00f007c1ad3c891db198f4
|
4
|
+
data.tar.gz: b0445de658103d20efa09b883f98360f1569ce7c0a9e03a8928431bb05b4e61f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa98bec626946cfb312e48b6b0a5d7a06b5b47eda6d8caca6a2775a4d55c5cb1d1ffe97334fbae673da58a1ad324c3440a68be7d8665590e2bb536f11afb05df
|
7
|
+
data.tar.gz: '098cd6f58e0f2799911fed6650e0d729e9efd85721722340a5bd6215400dca2a3bef92f3d34c1e70ec306d49c1d1be15a27cb6d5d3d4ae055f406c3afb71cd35'
|
@@ -33,7 +33,9 @@ module Gitlab
|
|
33
33
|
print '.'
|
34
34
|
url = response.fetch(:next_page_url) { url }
|
35
35
|
|
36
|
-
response = execute_with_retry(
|
36
|
+
response = execute_with_retry(
|
37
|
+
exception_types: [Net::ReadTimeout, Errors::Network::InternalServerError],
|
38
|
+
backoff_exceptions: Errors::Network::TooManyRequests) do
|
37
39
|
puts Gitlab::Triage::UI.debug "query_api: #{url}" if options.debug
|
38
40
|
|
39
41
|
@adapter.get(token, url)
|
@@ -60,7 +62,9 @@ module Gitlab
|
|
60
62
|
end
|
61
63
|
|
62
64
|
def post_api(url, body)
|
63
|
-
response = execute_with_retry(
|
65
|
+
response = execute_with_retry(
|
66
|
+
exception_types: Net::ReadTimeout,
|
67
|
+
backoff_exceptions: Errors::Network::TooManyRequests) do
|
64
68
|
puts Gitlab::Triage::UI.debug "post_api: #{url}" if options.debug
|
65
69
|
|
66
70
|
@adapter.post(token, url, body)
|
@@ -19,6 +19,7 @@ module Gitlab
|
|
19
19
|
|
20
20
|
raise_on_unauthorized_error!(response)
|
21
21
|
raise_on_internal_server_error!(response)
|
22
|
+
raise_on_too_many_requests!(response)
|
22
23
|
|
23
24
|
{
|
24
25
|
more_pages: (response.headers["x-next-page"].to_s != ""),
|
@@ -41,6 +42,7 @@ module Gitlab
|
|
41
42
|
|
42
43
|
raise_on_unauthorized_error!(response)
|
43
44
|
raise_on_internal_server_error!(response)
|
45
|
+
raise_on_too_many_requests!(response)
|
44
46
|
|
45
47
|
{
|
46
48
|
results: response.parsed_response,
|
@@ -67,6 +69,14 @@ module Gitlab
|
|
67
69
|
raise Errors::Network::InternalServerError, 'Internal server error encountered!'
|
68
70
|
end
|
69
71
|
|
72
|
+
def raise_on_too_many_requests!(response)
|
73
|
+
return unless response.response.is_a?(Net::HTTPTooManyRequests)
|
74
|
+
|
75
|
+
puts Gitlab::Triage::UI.debug response.inspect if options.debug
|
76
|
+
|
77
|
+
raise Errors::Network::TooManyRequests, 'Too many requests made!'
|
78
|
+
end
|
79
|
+
|
70
80
|
def next_page_url(url, response)
|
71
81
|
return unless response.headers['x-next-page'].present?
|
72
82
|
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'base'
|
4
|
+
require_relative 'shared/issuable'
|
5
|
+
|
6
|
+
module Gitlab
|
7
|
+
module Triage
|
8
|
+
module Resource
|
9
|
+
class Epic < Base
|
10
|
+
include Shared::Issuable
|
11
|
+
|
12
|
+
def project_path
|
13
|
+
@project_path ||=
|
14
|
+
request_group(resource[:group_id])[:full_path]
|
15
|
+
end
|
16
|
+
alias_method :group_path, :project_path
|
17
|
+
|
18
|
+
def reference
|
19
|
+
'&'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -2,23 +2,25 @@ module Gitlab
|
|
2
2
|
module Triage
|
3
3
|
module Retryable
|
4
4
|
MAX_RETRIES = 3
|
5
|
+
BACK_OFF_SECONDS = 10
|
5
6
|
|
6
7
|
attr_accessor :tries
|
7
8
|
|
8
|
-
def execute_with_retry(exception_types
|
9
|
+
def execute_with_retry(exception_types: [StandardError], backoff_exceptions: [])
|
9
10
|
@tries = 0
|
10
11
|
|
11
12
|
until maximum_retries_reached?
|
12
13
|
begin
|
13
14
|
@tries += 1
|
14
|
-
|
15
|
-
break
|
15
|
+
return yield
|
16
16
|
rescue *exception_types
|
17
17
|
raise if maximum_retries_reached?
|
18
|
+
rescue *backoff_exceptions
|
19
|
+
raise if maximum_retries_reached?
|
20
|
+
|
21
|
+
sleep(BACK_OFF_SECONDS)
|
18
22
|
end
|
19
23
|
end
|
20
|
-
|
21
|
-
result
|
22
24
|
end
|
23
25
|
|
24
26
|
private
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitlab-triage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.16.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitLab
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -214,6 +214,7 @@ files:
|
|
214
214
|
- lib/gitlab/triage/policies_resources/summary_resources.rb
|
215
215
|
- lib/gitlab/triage/resource/base.rb
|
216
216
|
- lib/gitlab/triage/resource/context.rb
|
217
|
+
- lib/gitlab/triage/resource/epic.rb
|
217
218
|
- lib/gitlab/triage/resource/instance_version.rb
|
218
219
|
- lib/gitlab/triage/resource/issue.rb
|
219
220
|
- lib/gitlab/triage/resource/label.rb
|