Page MenuHomePhabricator

Allow "inactive" repositories to be read over SSH for cluster sync
ClosedPublic

Authored by epriestley on Thu, Jan 31, 7:47 PM.

Details

Summary

Fixes T13192. See PHI1015. When you deactivate a repository, we currently stop serving it.

This creates a problem for intracluster sync, since new nodes can't sync it. If nothing else, this means that if you "ship of theseus" your cluster and turn nodes over one at a time, you will eventually lose the entire repository. Since that's clearly a bad outcome, support sync.

Test Plan

Testing this requires a "real" cluster, so I mostly used secure.

I deactivated rGITTEST and ran this on secure002:

./bin/repository thaw --demote secure002.phacility.net --force GITTEST && ./bin/repository update GITTEST

Before the patch, this failed:

[2019-01-31 19:40:37] EXCEPTION: (CommandException) Command failed with error #128!
COMMAND
git fetch --prune -- 'ssh://172.30.0.64:22/diffusion/GITTEST/' '+refs/*:refs/*'

STDOUT
(empty)

STDERR
Warning: Permanently added '172.30.0.64' (RSA) to the list of known hosts.
phabricator-ssh-exec: This repository ("rGITTEST") is not available over SSH.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

After applying (a similar patch to) this patch to secure001, the sync worked.

I'll repeat this test with the actual patch once this deploys to secure.

Diff Detail

Repository
rP Phabricator
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

epriestley created this revision.Thu, Jan 31, 7:47 PM
epriestley requested review of this revision.Thu, Jan 31, 7:49 PM
amckinley accepted this revision.Fri, Feb 1, 4:22 AM
This revision is now accepted and ready to land.Fri, Feb 1, 4:22 AM
This revision was automatically updated to reflect the committed changes.