diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-08-19 12:08:42 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-08-19 12:08:42 +0300 |
commit | b76ae638462ab0f673e5915986070518dd3f9ad3 (patch) | |
tree | bdab0533383b52873be0ec0eb4d3c66598ff8b91 /app/workers/jira_connect | |
parent | 434373eabe7b4be9593d18a585fb763f1e5f1a6f (diff) |
Add latest changes from gitlab-org/gitlab@14-2-stable-eev14.2.0-rc42
Diffstat (limited to 'app/workers/jira_connect')
8 files changed, 38 insertions, 12 deletions
diff --git a/app/workers/jira_connect/forward_event_worker.rb b/app/workers/jira_connect/forward_event_worker.rb index 877ab46cfe5..14922db5420 100644 --- a/app/workers/jira_connect/forward_event_worker.rb +++ b/app/workers/jira_connect/forward_event_worker.rb @@ -4,22 +4,26 @@ module JiraConnect class ForwardEventWorker # rubocop:disable Scalability/IdempotentWorker include ApplicationWorker + data_consistency :always queue_namespace :jira_connect feature_category :integrations + urgency :low + worker_has_external_dependencies! def perform(installation_id, base_path, event_path) installation = JiraConnectInstallation.find_by_id(installation_id) + instance_url = installation&.instance_url + + installation.destroy if installation - return if installation&.instance_url.nil? + return if instance_url.nil? - proxy_url = installation.instance_url + event_path - qsh = Atlassian::Jwt.create_query_string_hash(proxy_url, 'POST', installation.instance_url + base_path) + proxy_url = instance_url + event_path + qsh = Atlassian::Jwt.create_query_string_hash(proxy_url, 'POST', instance_url + base_path) jwt = Atlassian::Jwt.encode({ iss: installation.client_key, qsh: qsh }, installation.shared_secret) - Gitlab::HTTP.post(proxy_url, headers: { 'Authorization' => "JWT #{jwt}" }) - ensure - installation.destroy if installation + JiraConnect::RetryRequestWorker.perform_async(proxy_url, jwt) end end end diff --git a/app/workers/jira_connect/retry_request_worker.rb b/app/workers/jira_connect/retry_request_worker.rb new file mode 100644 index 00000000000..b0f6dada639 --- /dev/null +++ b/app/workers/jira_connect/retry_request_worker.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +module JiraConnect + class RetryRequestWorker # rubocop:disable Scalability/IdempotentWorker + include ApplicationWorker + + data_consistency :always + queue_namespace :jira_connect + feature_category :integrations + urgency :low + + worker_has_external_dependencies! + + def perform(proxy_url, jwt, attempts = 3) + r = Gitlab::HTTP.post(proxy_url, headers: { 'Authorization' => "JWT #{jwt}" }) + + self.class.perform_in(1.hour, proxy_url, jwt, attempts - 1) if r.code >= 400 && attempts > 0 + rescue *Gitlab::HTTP::HTTP_ERRORS + self.class.perform_in(1.hour, proxy_url, jwt, attempts - 1) if attempts > 0 + end + end +end diff --git a/app/workers/jira_connect/sync_branch_worker.rb b/app/workers/jira_connect/sync_branch_worker.rb index 2723287b77b..1b0655e4510 100644 --- a/app/workers/jira_connect/sync_branch_worker.rb +++ b/app/workers/jira_connect/sync_branch_worker.rb @@ -5,11 +5,11 @@ module JiraConnect include ApplicationWorker sidekiq_options retry: 3 - queue_namespace :jira_connect feature_category :integrations data_consistency :delayed loggable_arguments 1, 2 + urgency :low worker_has_external_dependencies! diff --git a/app/workers/jira_connect/sync_builds_worker.rb b/app/workers/jira_connect/sync_builds_worker.rb index 4c4daba3314..379f087bc1b 100644 --- a/app/workers/jira_connect/sync_builds_worker.rb +++ b/app/workers/jira_connect/sync_builds_worker.rb @@ -5,11 +5,11 @@ module JiraConnect include ApplicationWorker sidekiq_options retry: 3 - queue_namespace :jira_connect feature_category :integrations data_consistency :delayed tags :exclude_from_kubernetes + urgency :low worker_has_external_dependencies! diff --git a/app/workers/jira_connect/sync_deployments_worker.rb b/app/workers/jira_connect/sync_deployments_worker.rb index 0dc34b5999f..3138230ced5 100644 --- a/app/workers/jira_connect/sync_deployments_worker.rb +++ b/app/workers/jira_connect/sync_deployments_worker.rb @@ -5,11 +5,11 @@ module JiraConnect include ApplicationWorker sidekiq_options retry: 3 - queue_namespace :jira_connect feature_category :integrations data_consistency :delayed tags :exclude_from_kubernetes + urgency :low worker_has_external_dependencies! diff --git a/app/workers/jira_connect/sync_feature_flags_worker.rb b/app/workers/jira_connect/sync_feature_flags_worker.rb index c484cabbe6b..4de27c1b551 100644 --- a/app/workers/jira_connect/sync_feature_flags_worker.rb +++ b/app/workers/jira_connect/sync_feature_flags_worker.rb @@ -5,11 +5,11 @@ module JiraConnect include ApplicationWorker sidekiq_options retry: 3 - queue_namespace :jira_connect feature_category :integrations data_consistency :delayed tags :exclude_from_kubernetes + urgency :low worker_has_external_dependencies! diff --git a/app/workers/jira_connect/sync_merge_request_worker.rb b/app/workers/jira_connect/sync_merge_request_worker.rb index bb0d24667e9..6576aa9fdf4 100644 --- a/app/workers/jira_connect/sync_merge_request_worker.rb +++ b/app/workers/jira_connect/sync_merge_request_worker.rb @@ -5,10 +5,10 @@ module JiraConnect include ApplicationWorker sidekiq_options retry: 3 - queue_namespace :jira_connect feature_category :integrations data_consistency :delayed + urgency :low worker_has_external_dependencies! diff --git a/app/workers/jira_connect/sync_project_worker.rb b/app/workers/jira_connect/sync_project_worker.rb index 317bace89b4..a83444e58e7 100644 --- a/app/workers/jira_connect/sync_project_worker.rb +++ b/app/workers/jira_connect/sync_project_worker.rb @@ -5,11 +5,11 @@ module JiraConnect include ApplicationWorker sidekiq_options retry: 3 - queue_namespace :jira_connect feature_category :integrations data_consistency :delayed tags :exclude_from_kubernetes + urgency :low worker_has_external_dependencies! |