gitlab-triage 1.15.0 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|