Reduce delay in destroying a project from 1-minute to immediately

Run ProjectDestroyWorker after pending_delete attribute has been committed to DB
This commit is contained in:
Stan Hu 2016-05-01 00:38:53 -07:00
parent 2e1162272e
commit a65de9c2c1
3 changed files with 9 additions and 3 deletions

View file

@ -6,6 +6,7 @@ v 8.8.0 (unreleased)
- Log to application.log when an admin starts and stops impersonating a user
- Updated gitlab_git to 10.1.0
- GitAccess#protected_tag? no longer loads all tags just to check if a single one exists
- Reduce delay in destroying a project from 1-minute to immediately
- Make build status canceled if any of the jobs was canceled and none failed
- Upgrade Sidekiq to 4.1.2
- Sanitize repo paths in new project error message

View file

@ -1039,4 +1039,11 @@ class Project < ActiveRecord::Base
def wiki
@wiki ||= ProjectWiki.new(self, self.owner)
end
def schedule_delete!(user_id, params)
# Queue this task for after the commit, so once we mark pending_delete it will run
run_after_commit { ProjectDestroyWorker.perform_async(id, user_id, params) }
update_attribute(:pending_delete, true)
end
end

View file

@ -7,9 +7,7 @@ module Projects
DELETED_FLAG = '+deleted'
def pending_delete!
project.update_attribute(:pending_delete, true)
ProjectDestroyWorker.perform_in(1.minute, project.id, current_user.id, params)
project.schedule_delete!(current_user.id, params)
end
def execute