Сегодня, 2-го июня 2016-го года, произошла техническая накладка, которую я запомню надолго. Неудачным образом сложились сразу несколько обстоятельств, что привело к серьезному сбою в работе системы Полигон.
Дело в том, что в середине мая Полигон был перенесен на серверы, расположенные в Mail.Ru. Для осуществления переноса почти без даунтайма (а данных немало, около терабайта) была настроена утилита lsyncd, которая оперативно проталкивала изменения со старого сервера на новый. Ей же осуществляется один из вариантов бэкапа данных.
Сегодня случился ребут старого сервера, который привел к незапланированному запуску lsyncd и как результат — синхронизации данных со старого сервера опять на новый. В результате данные, находящиеся в файловой системе, были откатаны до версии на момент переноса (13 мая). Значительная неудача состоит в том, что в отличие от старого сервера, где система бэкапов была настроена хорошо и давно, на новом сервере я оперативно успел настроить тот же lsyncd, который не помогает в случае удаления файлов (так как форсирует удаление и на реплике). Очевидно, не помог RAID-1, который мы используем всюду для хранения данных.
Как результат, сделанные в трехнедельный период файлы изменений были утеряны. Некоторая информация (условия задач, данные о запусках и немного еще) сохраняется и в базе данных, поэтому доступна.
В экстренном порядке ночью мной была реализована специальная ссылка "Scraps" для задач, чтобы выкачивать архив с доступными данными. Если задача была использована в инфраструктуре Codeforces, то её пакеты остались в кэше тестирующей системы и доступны в том же архиве.
Мне очень паршиво осознавать, что моё недостаточное внимание к деталям привело к таким последствиям. Я отлично помню черный день Codeforces — и в результате него многое было пересмотрено (всюду зеркальные дисковые массивы, реплики и бэкапы). К сожалению, в этот раз после переезда на новое железо я оперативно не вернул все используемые скрипты и вот результат. Приношу свои глубочайшие извинения авторам задач.
М.