Похоже, что некоторая переработка конфигурации Subversion могла привести к повреждению зеркала Subversion. Подробности: у нас есть набор репозиториев Subversion, размещенных на главном сервере, а затем зеркалированных на два внешних сервера с помощью snvsync. Все транзакции выполняются с использованием HTTPS, поэтому Apache настроен на всех трех серверах, чтобы разрешить HTTPS-доступ к мастерам и зеркалам. В прошлую пятницу я настроил новый репозиторий на главном сервере, но в конфигурации Apache для нового репозитория я установил SVNPath таким же, как существующий репозиторий. Через несколько часов я исправил эту ошибку. Я не совсем уверен, что ошибки, которые я вижу сейчас, связаны с этой опечаткой или просто случайны, но какой бы ни была причина, репозиторий, который фактически владеет этим SVNPath, сообщил об ошибках во время попыток svnsync, и теперь одно из двух зеркал в этом репозитории отсутствует хотя бы один файл. Вот сообщение, которое я получаю при попытке выполнить svnsync на этом зеркале:
svnsync: '/Repo-proxy-sync/path/to/missing/file/MissingFile.pm' path not found
Проверка последней версии зеркала подтверждает, что файл отсутствует. Отсутствующий файл был впервые зафиксирован в редакции # 16166 главного репозитория. Оглядываясь назад на журналы svnsync, кажется, что ревизия была полностью зафиксирована на зеркале (до создания нового репозитория):
Fri Aug 21 06:03:20 CDT 2015
Committed revision 16166.
Copied properties for revision 16166.
Ошибки начали происходить чуть позже 8 утра. Я также подозреваю, что мой перезапуск Apache для применения новой конфигурации может быть фактором. Среди ошибок, которые я видел в течение дня, было сообщение о ревизии №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'
Несмотря на ошибки, с главным репозиторием все в порядке; Я выполнил "svnadmin verify" для последних ревизий, включая несколько исправлений, сделанных до создания другого репозитория и после исправления его конфигурации. Все были чистыми. Второе внешнее зеркало не столкнулось с какими-либо проблемами при синхронизации затронутого репозитория, и в настоящее время имеет последние версии без недостающих файлов.
Сейчас на ревизии №16168 стоит плохое зеркало. Можно ли принудительно вернуть зеркало назад на несколько ревизий, например, до # 16165, а затем снова разрешить синхронизацию? Или мне придется переделывать зеркало с нуля?
Прибегал к полной перестройке зеркала. Более 16000 коммитов облететь полмира - неприятное занятие, но, по крайней мере, это рабочее решение. Спасибо всем, кто прочитал!