diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-08-12 18:21:47 +0300 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-08-12 18:21:47 +0300 |
commit | 7ecebdd02df9b11fa6ba4f8033dcfe097935ed66 (patch) | |
tree | a080ef380992f880b7b29714772152dc3ac71ed5 /app/workers | |
parent | e2f946fddb7caf9757b33ba3dc7de8634f4ee825 (diff) | |
download | gitlab-ce-7ecebdd02df9b11fa6ba4f8033dcfe097935ed66.tar.gz |
Repository import during project creation often return timeout for medium and large repos.
So lets do it async. First create project, then import repo and create
satellite with Sidekiq
Diffstat (limited to 'app/workers')
-rw-r--r-- | app/workers/repository_import_worker.rb | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/app/workers/repository_import_worker.rb b/app/workers/repository_import_worker.rb new file mode 100644 index 00000000000..a3b4bd0c9b5 --- /dev/null +++ b/app/workers/repository_import_worker.rb @@ -0,0 +1,22 @@ +class RepositoryImportWorker + include Sidekiq::Worker + include Gitlab::ShellAdapter + + sidekiq_options queue: :gitlab_shell + + def perform(project_id) + project = Project.find(project_id) + result = gitlab_shell.send(:import_repository, + project.path_with_namespace, + project.import_url) + + if result + project.imported = true + project.save + project.satellite.create unless project.satellite.exists? + project.discover_default_branch + else + project.imported = false + end + end +end |