После праздников

Было прекрасное майское утро. Несмотря на послепраздничную прохладу, чувствовалось приближение лета. Очередная поездка на велосипеде из дома к офису подходила к концу. Наконец-то можно расстегнуть ветровку, без которой ещё холодно, но в которой уже жарковато крутить педали.
До создания первых LLM было более 10 лет.
Я открыл дверь в здание, поднялся на второй этаж, зашёл в офис. Почти восемь утра — в офисе почти пусто. Я закатил велосипед и первым делом встретил того, кого меньше всего ожидал там увидеть.
— Привет. Что ты делаешь тут в такую рань?
— Привет. У нас сервак упал. Пришлось срочно выезжать, — ответил Иван, помощник админа.
— Понятно. У него тоже, видимо, праздники удались.
Я поставил велосипед в специально выделенное под него место и вошёл в пустой отдел разработки. Повесив ветровку на стул, я, как обычно, открыл окно, "Окна" и список задач на сегодня — мне предстояло протестировать сделанную ранее мной функциональность.
Неожиданно браузер показал всплывающее уведомление об отключении БД. Я открыл самописное расширение для браузера, которое показывало текущее состояние всех систем — всё горело зелёным. "Видимо, Иван что-то делает", — подумал я и продолжил работу. Через полчаса сообщение повторилось, но дашбоард показывал, что всё в порядке. Я перепроверил код расширения — он в порядке — оно не толерантно даже к малейшим переходам за границы допустимого. Так что ему я верю. А Иван уже сидел за соседним столом — сервак работал.
Уже почти девять утра. Народ стал подтягиваться. Комната наполнилась людьми, разговорами и шумом вентиляторов. Начался ленивый послепраздничный рабочий день. К нам уже успели заглянуть из отдела продаж, чтобы поздороваться, а кто-то написал в чат о возможно найденной ошибке. Даже сисадмин уже здесь — начался рабочий день.
Уведомление повторилось: "Production database down".
— Парни и Ксюша, у нас какая-то фигня с базой на проде происходит. Она в среднем раз в полчаса как будто теряет связь. Надо бы проверить и вылечить, — обратился я ко всем разом.
— Ничего не падает. Всё работает, — сказал старый сисадмин с умным видом.
Он тут с самого открытия компании и уверен, что только на нём одном всё и держится. А программисты лишь портят всё.
— Моё расширение мне кидает нотификации. Уже третья за сегодня.
— Значит не работает твоё расширение. С базой всё в порядке. У нас всё работает.
Остальные особого желания в разрешении проблемы не проявили.
Спустя минут 25 всё повторилось.
— Только что база теряла связь. И, судя по всему, она совсем вырубается, т.к. после этого у нас одна настройка всё время слетает, — обратился я к сисадмину. — Что делать будем?
— Да, я подтверждаю. Было отключение, — донёсся голос Артёма, сидевшего напротив.
— Надо смотреть, — я снова обратился к сисадмину.
— У меня на графиках всё в порядке.
— Дай мне графики посмотреть.
Он скинул ссылку на Графану, где график базы на проде показывал уверенную прямую горизонтальную линию стабильной работы. График показывал данные последних нескольких часов. Усреднённые. Я поменял диапазон на последние 5 минут и показал админу линию жизни базы, уходящую в пике ровно на одну секунду:
— А это что такое?
— Видимо, что-то было, — пробормотал он.
— Надо решать. У нас на проде пользователи могут данные потерять.
— Зайди на сервер и посмотри логи.
— Я?
— Да. Ты же обнаружил проблему. Вот и будешь ответственным за её решение.
Я немного обалдел от такого поворота событий, но доступ получил. Всё-таки, было интересно разобраться самому, в чём проблема.

Ещё до того, как взяться за логи, я предложил быстрое решение, обратившись ко всем:
— Я не знаю, сколько займёт фикс по времени, но уже сейчас мы могли бы сделать копию базы и поднять её на новой виртуалке, после чего будем спокойно разбираться с причинами. Так хотя бы и клиенты, и мы сможем нормально работать.
Логи показали, что база действительно вырубается через разные промежутки времени, но ровно на одну секунду. После чего сама поднимается и продолжает работать. Я начал гуглить. Через пару часов я в нашем самописном таск-трекере создал задачу на сисадмина с полным отчётом того, что могло произойти, и возможными решениями. Три штуки по пунктам, со ссылками. В общем, ему оставалось только попробовать сделать то, что было описано. У меня доступа нет — это его часть работы.
Пока я искал решения, к нам зашёл Алексей из отдела сопровождения клиентов и сказал, что у него не сохранились данные клиента, которые он пытался добавить в базу. А она падала пару минут назад. Мы сказали, что в курсе проблемы, разбираемся.
Я посмотрел на админа. Он сделал вид, будто даже не заметил, что кто-то сейчас заходил.
Постоянные отключения базы начинали раздражать.
Я вернулся к основной работе с чувством выполненного долга. После пары очередных падений я обратился к админу с вопросом, есть ли продвижения по задаче. — Какой задаче? — удивился он.
Я открыл трекер, чтобы скинуть ему ссылку, но во мной созданных задач её не нашёл, в назначенных на него тоже. В таблице задач в базе её тоже не было, но была дыра в целочисленном идентификаторе.
— Ты удалил задачу, которую я создал для решения проблемы?
— Тебе по должности не положено назначать на меня задачи.
"Да ты совсем уже е*нулся?", — подумал я.
— Тогда сам ищи решения, — спокойно ответил я вслух. — Я свою часть сделал, решения предложил. Всё, что будет после, — уже не моя проблема. А начальству я об этом доложу.
Спустя пару дней поговорили с начальством на троих, после чего я понял, с чего этот сисадмин решил, что он весь такой важный. Решать проблему назначили 1С-ника Костяна. После саботажа сисадмином ещё нескольких моих задач, решение которых зависело напрямую от него, я пожелал остальным разработчикам удачи и уволился через месяц после случая с базой.
А что с ней стало в итоге?
Через две недели после увольнения я списался с одним из бывших коллег:
— Привет. Как жизнь?
— Да потихоньку. Работаем.
— Мне интересно, с базой в итоге разобрались или Костян до сих пор её ковыряет?
— Ты не поверишь!
— Что такое?
— Они на днях развернули копию на другой виртуалке и проблема исчезла. Решение они так и не нашли.
Все имена вымышлены. Все совпадения не случайны.
Желаю вам адекватных коллег!
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.