summaryrefslogtreecommitdiff
path: root/spec/workers/git_garbage_collect_worker_spec.rb
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2016-07-08 12:32:58 -0700
committerStan Hu <stanhu@gmail.com>2016-07-12 05:42:19 -0700
commit3dc6bf2b71f995a3b6ca40ebbf9abb5c11397b8b (patch)
tree80fdf211e03d5eb265d68e62a83eb784f150174b /spec/workers/git_garbage_collect_worker_spec.rb
parent3ca9253444710c6a2d5ad4dca345f8d558be4f1a (diff)
downloadgitlab-ce-3dc6bf2b71f995a3b6ca40ebbf9abb5c11397b8b.tar.gz
Expire the branch cache after `git gc` runs
Due to a stale NFS cache, it's possible that a branch lookup fails while `git gc` is running and causes missing branches in merge requests. Possible workaround for #15392
Diffstat (limited to 'spec/workers/git_garbage_collect_worker_spec.rb')
-rw-r--r--spec/workers/git_garbage_collect_worker_spec.rb24
1 files changed, 24 insertions, 0 deletions
diff --git a/spec/workers/git_garbage_collect_worker_spec.rb b/spec/workers/git_garbage_collect_worker_spec.rb
new file mode 100644
index 00000000000..a9cce8b8b59
--- /dev/null
+++ b/spec/workers/git_garbage_collect_worker_spec.rb
@@ -0,0 +1,24 @@
+require 'spec_helper'
+
+describe GitGarbageCollectWorker do
+ let(:project) { create(:project) }
+ let(:shell) { Gitlab::Shell.new }
+
+ subject { GitGarbageCollectWorker.new }
+
+ before do
+ allow(subject).to receive(:gitlab_shell).and_return(shell)
+ end
+
+ describe "#perform" do
+ it "runs `git gc`" do
+ expect(shell).to receive(:gc).with(
+ project.repository_storage_path,
+ project.path_with_namespace).
+ and_return(true)
+ expect_any_instance_of(Repository).to receive(:after_create_branch)
+
+ subject.perform(project.id)
+ end
+ end
+end