summaryrefslogtreecommitdiff
path: root/app/workers/detect_repository_languages_worker.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/workers/detect_repository_languages_worker.rb')
-rw-r--r--app/workers/detect_repository_languages_worker.rb33
1 files changed, 33 insertions, 0 deletions
diff --git a/app/workers/detect_repository_languages_worker.rb b/app/workers/detect_repository_languages_worker.rb
new file mode 100644
index 00000000000..537b8fd5963
--- /dev/null
+++ b/app/workers/detect_repository_languages_worker.rb
@@ -0,0 +1,33 @@
+class DetectRepositoryLanguagesWorker
+ include ApplicationWorker
+ include ExceptionBacktrace
+ include ExclusiveLeaseGuard
+
+ sidekiq_options retry: 1
+
+ LEASE_TIMEOUT = 300
+
+ attr_reader :project
+
+ def perform(project_id, user_id)
+ @project = Project.find_by(id: project_id)
+ user = User.find_by(id: user_id)
+ return unless project && user
+
+ return if Feature.disabled?(:repository_languages, project.namespace)
+
+ try_obtain_lease do
+ ::Projects::DetectRepositoryLanguagesService.new(project, user).execute
+ end
+ end
+
+ private
+
+ def lease_timeout
+ LEASE_TIMEOUT
+ end
+
+ def lease_key
+ "gitlab:detect_repository_languages:#{project.id}"
+ end
+end