Перейти к основному содержимому

Золотой костыль

·204 слов·1 минута
Оригинал опубликован в Telegram

Золотой костыль

Разработчики Яндекса строили веб-сервисы на базе самописного движка xscript. Эта платформа собирала данные в xml формате, накладывала поверх xslt и получилась готовая html страничка или json в случае HTTP API.

Однажды один из таких HTTP API начал падать. Я закрыл проблемный сервер от входящего трафика, перезапустил xscript, проблема исчезла и я вернул нагрузку.

“Сетевые барабашки…”, — решил я. Проблема повторилась спустя полдня. Через сутки “заболел” второй сервер. Это уже не случайность, а проблема.

Пошел расследовать. HTTP сервис не менялся год, так же как и сам xscript. Зависимости также не менялись. Я дернул курлом сервис на проблемном сервере — ошибка воспроизводится. Далее решил локализовать проблему и удалил часть кода. Я перезапустил xscript — заработало. Вернул удаленный код обратно и ошибка не воспроизвелась.

Перезапуск помогает, но причину выяснить не удалось.

Мы дебажили эту проблему вместе с SRE, а затем и с бывшим мейнтейнером xscript. Не помогло. Нам удалось только выяснить, что проблема исчезает даже после обновления времени изменения файла.

Профессиональные разработчики нашли “элегантное” решение и для этой проблемы.

На серверах с этим сервисом запустили cron. Каждый час делался touch у одного единственного файлика 🙈 Иногда самым доступным и рабочим решением оказывается костылик.

P.S. Переход на nodejs повысили в приоритете.

#байки