Commit fbe5bf76 authored by Stan Hu's avatar Stan Hu

Fix bug where projects would appear to be stuck in the forked import state

A race condition existed between when Rails committed the `import_status` to
`started` and when the Sidekiq worker forked a project. If this fork was quick,
it's possible that the worker would attempt to move into the `finished` state
before the `started` state took effect.

As mentioned in https://github.com/mperham/sidekiq/wiki/Problems-and-Troubleshooting#cannot-find-modelname-with-id12345,
we should delay the worker to ensure the DB has a chance to update.

Closes #2736
parent 1fef314d
Please view this file on the master branch, on stable branches it's out of date. Please view this file on the master branch, on stable branches it's out of date.
v 8.1.0 (unreleased) v 8.1.0 (unreleased)
- Fix bug where projects would appear to be stuck in the forked import state (Stan Hu)
- Show CI status on all pages where commits list is rendered - Show CI status on all pages where commits list is rendered
- Automatically enable CI when push .gitlab-ci.yml file to repository - Automatically enable CI when push .gitlab-ci.yml file to repository
- Move CI charts to project graphs area - Move CI charts to project graphs area
......
...@@ -276,8 +276,10 @@ class Project < ActiveRecord::Base ...@@ -276,8 +276,10 @@ class Project < ActiveRecord::Base
end end
def add_import_job 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? if forked?
unless RepositoryForkWorker.perform_async(id, forked_from_project.path_with_namespace, self.namespace.path) unless RepositoryForkWorker.perform_in(2.seconds, id, forked_from_project.path_with_namespace, self.namespace.path)
import_fail import_fail
end end
else else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment