Skip to content
Snippets Groups Projects
Commit 8b5c7e98 authored by Valery Sizov's avatar Valery Sizov Committed by Ian Baum
Browse files

Merge branch 'sh-fix-wiki-resync' into 'master'

Geo: Fix Wiki resync when Wiki repository does not exist

Closes #5218

See merge request gitlab-org/gitlab-ee!4927
parent 8b83b560
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -194,7 +194,13 @@ def set_temp_repository_as_main
# Remove the deleted path in case it exists, but it may not be there
gitlab_shell.remove_repository(project.repository_storage_path, deleted_disk_path_temp)
 
if project.repository_exists? && !gitlab_shell.mv_repository(project.repository_storage_path, repository.disk_path, deleted_disk_path_temp)
# Make sure we have a namespace directory
gitlab_shell.add_namespace(project.repository_storage_path, deleted_disk_path_temp)
# Make sure we have the most current state of exists?
repository.expire_exists_cache
if repository.exists? && !gitlab_shell.mv_repository(project.repository_storage_path, repository.disk_path, deleted_disk_path_temp)
raise Gitlab::Shell::Error, 'Can not move original repository out of the way'
end
 
Loading
Loading
Loading
Loading
@@ -24,6 +24,7 @@ def sync_repository(redownload = false)
fail_registry!('Invalid wiki', e, force_to_redownload_wiki: true)
ensure
clean_up_temporary_repository if redownload
expire_repository_caches
end
 
def ssh_url_to_wiki
Loading
Loading
@@ -38,6 +39,11 @@ def ensure_repository
project.wiki.ensure_repository
end
 
def expire_repository_caches
log_info('Expiring caches')
repository.after_sync
end
def mark_sync_as_successful
update_registry!(finished_at: DateTime.now, attrs: { last_wiki_sync_failure: nil })
 
Loading
Loading
---
title: 'Geo: Fix Wiki resync when Wiki repository does not exist'
merge_request:
author:
type: fixed
Loading
Loading
@@ -289,6 +289,9 @@
force_to_redownload_repository: true
)
 
expect(project.repository).to receive(:expire_exists_cache).twice.and_call_original
expect(subject).not_to receive(:fail_registry!)
subject.execute
end
end
Loading
Loading
Loading
Loading
@@ -164,6 +164,23 @@
expect(registry.last_wiki_sync_failure).to eq('Error syncing wiki repository: shell error')
end
end
context 'no Wiki repository' do
let(:project) { create(:project, :repository) }
it 'does not raise an error' do
create(
:geo_project_registry,
project: project,
force_to_redownload_wiki: true
)
expect(project.wiki.repository).to receive(:expire_exists_cache).twice.and_call_original
expect(subject).not_to receive(:fail_registry!)
subject.execute
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