Skip to content
  • epriestley's avatar
    Allow "inactive" repositories to be read over SSH for cluster sync · f3e154eb
    epriestley authored
    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`.
    
    Reviewers: amckinley
    
    Reviewed By: amckinley
    
    Maniphest Tasks: T13192
    
    Differential Revision: https://secure.phabricator.com/D20077
    f3e154eb