summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2015-09-25 01:46:13 -0700
committerStan Hu <stanhu@gmail.com>2015-09-25 01:46:13 -0700
commitbd2991b4618528a719b03c46ceb7befb230f0dd9 (patch)
treeadc140f9b1694e61affc8a9fd4df928bdf58939e
parentfbe5bf762d616c8bbe6e824bd0713e20f0751b74 (diff)
downloadgitlab-ce-bd2991b4618528a719b03c46ceb7befb230f0dd9.tar.gz
Use after_commit_queue to schedule import job immediately
-rw-r--r--Gemfile2
-rw-r--r--Gemfile.lock3
-rw-r--r--app/models/project.rb13
3 files changed, 13 insertions, 5 deletions
diff --git a/Gemfile b/Gemfile
index ad9fef38da1..6950091b2b0 100644
--- a/Gemfile
+++ b/Gemfile
@@ -121,6 +121,8 @@ end
# State machine
gem "state_machine", '~> 1.2.0'
+# Run events after state machine commits
+gem 'after_commit_queue'
# Issue tags
gem 'acts-as-taggable-on', '~> 3.4'
diff --git a/Gemfile.lock b/Gemfile.lock
index e306c1f56e6..4386c6b9abb 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -42,6 +42,8 @@ GEM
acts-as-taggable-on (3.5.0)
activerecord (>= 3.2, < 5)
addressable (2.3.8)
+ after_commit_queue (1.1.0)
+ rails (>= 3.0)
annotate (2.6.10)
activerecord (>= 3.2, <= 4.3)
rake (~> 10.4)
@@ -787,6 +789,7 @@ DEPENDENCIES
activerecord-session_store (~> 0.1.0)
acts-as-taggable-on (~> 3.4)
addressable (~> 2.3.8)
+ after_commit_queue
annotate (~> 2.6.0)
asana (~> 0.0.6)
asciidoctor (~> 1.5.2)
diff --git a/app/models/project.rb b/app/models/project.rb
index 5deddb2fbc4..e912c48467d 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -39,6 +39,7 @@ class Project < ActiveRecord::Base
include Gitlab::VisibilityLevel
include Referable
include Sortable
+ include AfterCommitQueue
extend Gitlab::ConfigHelper
extend Enumerize
@@ -191,7 +192,7 @@ class Project < ActiveRecord::Base
state :finished
state :failed
- after_transition any => :started, do: :add_import_job
+ after_transition any => :started, do: :schedule_add_import_job
after_transition any => :finished, do: :clear_import_data
end
@@ -275,15 +276,17 @@ class Project < ActiveRecord::Base
id && persisted?
end
+ def schedule_add_import_job
+ run_after_commit(:add_import_job)
+ end
+
def add_import_job
- # Schedule these jobs after 2 seconds to ensure DB changes to import_status
- # are saved by the time the workers start
if forked?
- unless RepositoryForkWorker.perform_in(2.seconds, id, forked_from_project.path_with_namespace, self.namespace.path)
+ unless RepositoryForkWorker.perform_async(id, forked_from_project.path_with_namespace, self.namespace.path)
import_fail
end
else
- RepositoryImportWorker.perform_in(2.seconds, id)
+ RepositoryImportWorker.perform_async(id)
end
end