diff --git a/CHANGELOG b/CHANGELOG
index 78d6c1ec2b2f33f008e51138de7ec90bb09a2974..e9b3e7b097d9c576a0c51aa5e129fcfbeee5d589 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -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
diff --git a/app/models/project.rb b/app/models/project.rb
index 9403acf77594406c67d83bf0ad3c313d872d8358..dfd1e54ecf79b7d9b5aaea33d2bafe62c624a498 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 df5054f08d7f35c2d21449ab593cb92a5abb47c0..19aab999e002c4d0d42d7aca271edaaee15e9945 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