Skip to content
Snippets Groups Projects
Commit fbe5bf76 authored by Stan Hu's avatar Stan Hu
Browse files

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
No related branches found
No related tags found
1 merge request!1434Fix bug where projects would appear to be stuck in the forked import state
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
Loading
Loading
Loading
@@ -276,8 +276,10 @@ class Project < ActiveRecord::Base
Loading
@@ -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
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment