Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-03-16 21:18:33 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-03-16 21:18:33 +0300
commitf64a639bcfa1fc2bc89ca7db268f594306edfd7c (patch)
treea2c3c2ebcc3b45e596949db485d6ed18ffaacfa1 /app/workers/packages
parentbfbc3e0d6583ea1a91f627528bedc3d65ba4b10f (diff)
Add latest changes from gitlab-org/gitlab@13-10-stable-eev13.10.0-rc40
Diffstat (limited to 'app/workers/packages')
-rw-r--r--app/workers/packages/composer/cache_update_worker.rb23
-rw-r--r--app/workers/packages/maven/metadata/sync_worker.rb59
2 files changed, 82 insertions, 0 deletions
diff --git a/app/workers/packages/composer/cache_update_worker.rb b/app/workers/packages/composer/cache_update_worker.rb
new file mode 100644
index 00000000000..664fb23284f
--- /dev/null
+++ b/app/workers/packages/composer/cache_update_worker.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+module Packages
+ module Composer
+ class CacheUpdateWorker
+ include ApplicationWorker
+
+ feature_category :package_registry
+
+ idempotent!
+
+ def perform(project_id, package_name, last_page_sha)
+ project = Project.find_by_id(project_id)
+
+ return unless project
+
+ Gitlab::Composer::Cache.new(project: project, name: package_name, last_page_sha: last_page_sha).execute
+ rescue => e
+ Gitlab::ErrorTracking.log_exception(e, project_id: project_id)
+ end
+ end
+ end
+end
diff --git a/app/workers/packages/maven/metadata/sync_worker.rb b/app/workers/packages/maven/metadata/sync_worker.rb
new file mode 100644
index 00000000000..eb7abf4cdd0
--- /dev/null
+++ b/app/workers/packages/maven/metadata/sync_worker.rb
@@ -0,0 +1,59 @@
+# frozen_string_literal: true
+
+module Packages
+ module Maven
+ module Metadata
+ class SyncWorker
+ include ApplicationWorker
+ include Gitlab::Utils::StrongMemoize
+
+ queue_namespace :package_repositories
+ feature_category :package_registry
+
+ deduplicate :until_executing
+ idempotent!
+
+ loggable_arguments 2
+
+ SyncError = Class.new(StandardError)
+
+ def perform(user_id, project_id, package_name)
+ @user_id = user_id
+ @project_id = project_id
+ @package_name = package_name
+
+ return unless valid?
+
+ result = ::Packages::Maven::Metadata::SyncService.new(container: project, current_user: user, params: { package_name: @package_name })
+ .execute
+
+ if result.success?
+ log_extra_metadata_on_done(:message, result.message)
+ else
+ raise SyncError.new(result.message)
+ end
+
+ raise SyncError.new(result.message) unless result.success?
+ end
+
+ private
+
+ def valid?
+ @package_name.present? && user.present? && project.present?
+ end
+
+ def user
+ strong_memoize(:user) do
+ User.find_by_id(@user_id)
+ end
+ end
+
+ def project
+ strong_memoize(:project) do
+ Project.find_by_id(@project_id)
+ end
+ end
+ end
+ end
+ end
+end