Skip to content
Snippets Groups Projects
Commit bab49fdf authored by Michael Kozono's avatar Michael Kozono
Browse files

Protect backups from stale cache for repo exists

parent 4c89929f
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -189,6 +189,7 @@ module Backup
end
 
def empty_repo?(project_or_wiki)
project_or_wiki.repository.expire_exists_cache # protect backups from stale cache
project_or_wiki.repository.empty_repo?
rescue => e
progress.puts "Ignoring repository error and continuing backing up project: #{project_or_wiki.path_with_namespace} - #{e.message}".color(:orange)
Loading
Loading
Loading
Loading
@@ -60,4 +60,58 @@ describe Backup::Repository do
end
end
end
describe '#empty_repo?' do
context 'for a wiki' do
let(:wiki) { create(:project_wiki) }
context 'wiki repo has content' do
let!(:wiki_page) { create(:wiki_page, wiki: wiki) }
before do
wiki.repository.exists? # initial cache
end
context '`repository.exists?` is incorrectly cached as false' do
before do
repo = wiki.repository
repo.send(:cache).expire(:exists?)
repo.send(:cache).fetch(:exists?) { false }
repo.send(:instance_variable_set, :@exists, false)
end
it 'returns false, regardless of bad cache value' do
expect(Backup::Repository.new.send(:empty_repo?, wiki)).to be_falsey
end
end
context '`repository.exists?` is correctly cached as true' do
it 'returns false' do
expect(Backup::Repository.new.send(:empty_repo?, wiki)).to be_falsey
end
end
end
context 'wiki repo does not have content' do
context '`repository.exists?` is incorrectly cached as true' do
before do
repo = wiki.repository
repo.send(:cache).expire(:exists?)
repo.send(:cache).fetch(:exists?) { true }
repo.send(:instance_variable_set, :@exists, true)
end
it 'returns true, regardless of bad cache value' do
expect(Backup::Repository.new.send(:empty_repo?, wiki)).to be_truthy
end
end
context '`repository.exists?` is correctly cached as false' do
it 'returns true' do
expect(Backup::Repository.new.send(:empty_repo?, wiki)).to be_truthy
end
end
end
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment