Однажды от руководителя техподдержки пришло письмо, суть которого сводилась к следующему:
"В выгрузке потерялось обращение 58122. Его кто-то удалил?"
Руководитель техподдержки регулярно выгружал себе обращения, с которыми работали его сотрудники и менеджеры других отделов. Там была история движения по статусам, время, кто работал и т.д.
В качестве номера обращения использовался id записи в БД. Обычно обращения шли по порядку, но в этой выгрузке были такие номера:
58120
58121
58123
58124
58122 отсутствовал.
Команда, которая поддерживала функциональность модуля техподдержки, начинает проверять.
БД PostgreSQL. В таблице ticket id объявлен как BIGSERIAL (при вставке значение автоматически берется из связанной sequence).
Проверяют в БД: нет обращения с таким id.
Могли ли его удалить?
Эндпойнта удаления обращений вообще нет, то есть через API удалить обращение нельзя.
Доступа к продовой БД у техподдержки нет, у разработчиков тоже нет. Есть у лида 🤔
Подключаются ко всем репликам БД и мастеру, нигде нет такой записи.
Смотрят соседние записи:
58121 - создано в 12:23
58123 - создано в 12:49
Это дает примерный ориентир по времени.
Делают поиск в логах приложения по этому id. Находят!
12:41:03 Creating ticket, id=58122
То есть обращение создавалось, но в базе его нет и других строк в логах с id=58122 нет.
Как вы думаете, куда пропала запись 58122? Удалил кто-то из тех, у кого был доступ?
Чуть позже напишу, чем закончилось расследование 👀