diff options
Diffstat (limited to 'app/workers/detect_repository_languages_worker.rb')
-rw-r--r-- | app/workers/detect_repository_languages_worker.rb | 33 |
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 |