summaryrefslogtreecommitdiff
path: root/app/workers
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-08-12 18:21:47 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-08-12 18:21:47 +0300
commit7ecebdd02df9b11fa6ba4f8033dcfe097935ed66 (patch)
treea080ef380992f880b7b29714772152dc3ac71ed5 /app/workers
parente2f946fddb7caf9757b33ba3dc7de8634f4ee825 (diff)
downloadgitlab-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.rb22
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