Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2016-05-01 10:38:53 +0300
committerStan Hu <stanhu@gmail.com>2016-05-07 11:12:31 +0300
commita65de9c2c1b8ea2d7dca3132ff0d72775f04bb78 (patch)
tree3fec33fe1ddc263b1d264cc9b22ac4d095d863be /app
parent2e1162272e2f90a3677f3def491907729b249434 (diff)
Reduce delay in destroying a project from 1-minute to immediately
Run ProjectDestroyWorker after pending_delete attribute has been committed to DB
Diffstat (limited to 'app')
-rw-r--r--app/models/project.rb7
-rw-r--r--app/services/projects/destroy_service.rb4
2 files changed, 8 insertions, 3 deletions
diff --git a/app/models/project.rb b/app/models/project.rb
index 9403acf7759..dfd1e54ecf7 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -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
diff --git a/app/services/projects/destroy_service.rb b/app/services/projects/destroy_service.rb
index df5054f08d7..19aab999e00 100644
--- a/app/services/projects/destroy_service.rb
+++ b/app/services/projects/destroy_service.rb
@@ -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