O espelho do Subversion possui problemas. É possível cancelar as revisões mais recentes no espelho e depois ressincronizar?

1

Parece que alguns detalhes da configuração do Subversion podem ter levado a um espelho do Subversion corrompido. Detalhes: Temos um conjunto de repositórios Subversion hospedados em um servidor mestre e depois espelhados em dois servidores externos usando o snvsync. Todas as transações são feitas usando HTTPS e, portanto, o Apache é configurado em todos os três servidores para permitir o acesso HTTPS aos mestres e espelhos. Sexta-feira passada eu configurei um novo repositório no servidor master, mas na configuração do Apache para o novo repo, eu configurei o SVNPath para o mesmo que um repositório existente. Algumas horas depois eu consertei esse erro. Não tenho certeza se os erros que estou vendo agora se devem a esse erro de digitação ou se são mera coincidência, mas qualquer que seja a causa, o repositório que realmente possui o SVNPath relatou erros durante as tentativas do svnsync e agora um dos dois espelhos esse repositório tem pelo menos um arquivo ausente. Aqui está a mensagem que recebo ao tentar executar um svnsync nesse espelho agora:

svnsync: '/Repo-proxy-sync/path/to/missing/file/MissingFile.pm' path not found

Um check-out da última revisão do espelho confirma que o arquivo não está presente. O arquivo ausente foi confirmado pela primeira vez na revisão # 16166 do repositório principal. Olhando para os logs do svnsync, parece que a revisão foi confirmada no espelho (antes da criação do novo repositório):

Fri Aug 21 06:03:20 CDT 2015
Committed revision 16166.
Copied properties for revision 16166.

Um pouco depois das 8 da manhã foi quando os erros começaram a acontecer. Eu também suspeito que minhas reinicializações do Apache para aplicar a nova configuração podem ser um fator. Entre os erros que vi no decorrer do dia estava uma mensagem especificamente sobre a revisão # 16166.

Fri Aug 21 08:01:58 CDT 2015
svnsync: Server sent unexpected return value (500 Internal Server Error) in response to OPTIONS request for 'http://master-ip/Repo'

Fri Aug 21 09:00:02 CDT 2015
svnsync: Server sent unexpected return value (500 Internal Server Error) in response to PROPFIND request for '/Repo/!svn/bln/16166'

Fri Aug 21 10:00:01 CDT 2015
svnsync: Server sent unexpected return value (500 Internal Server Error) in response to PROPFIND request for '/Repo'

Fri Aug 21 14:00:01 CDT 2015
svnsync: Server sent unexpected return value (500 Internal Server Error) in response to OPTIONS request for 'http://master-ip/Repo'

Apesar dos erros, o repositório principal parece estar bem; Eu executei um "svnadmin verify" nas últimas revisões, incluindo várias revisões cometidas antes de criar o outro repositório e depois de corrigir sua configuração. Todos estavam limpos. O segundo espelho off-site não encontrou nenhum problema ao sincronizar o repositório afetado e atualmente possui as revisões mais recentes sem arquivos ausentes.

Neste momento, o espelho ruim está na revisão # 16168. É possível forçar o espelho de volta várias revisões, talvez para # 16165, e então permitir que as sincronizações progridam novamente? Ou eu vou ter que reconstruir o espelho do zero?

    
por K. Kelley 24.08.2015 / 19:20

1 resposta

0

Eu recorri a uma reconstrução completa do espelho. Mais de 16.000 commits indo para o outro lado do mundo não são uma experiência agradável, mas pelo menos é uma solução funcional. Obrigado a todos que leram!

    
por 01.09.2015 / 15:30