From fbe5bf762d616c8bbe6e824bd0713e20f0751b74 Mon Sep 17 00:00:00 2001 From: Stan Hu <stanhu@gmail.com> Date: Fri, 25 Sep 2015 01:14:54 -0700 Subject: [PATCH] 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 --- CHANGELOG | 1 + app/models/project.rb | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 20b6dce1764..256e445d7df 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ Please view this file on the master branch, on stable branches it's out of date. 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 - Automatically enable CI when push .gitlab-ci.yml file to repository - Move CI charts to project graphs area diff --git a/app/models/project.rb b/app/models/project.rb index a7ea1236b86..5deddb2fbc4 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -276,8 +276,10 @@ class Project < ActiveRecord::Base 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_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 end else -- GitLab