Накатывали не очень сложное изменение на прод, и он упал. Откат не помог, потому что база была в неконсистентном состоянии. Ладно, починили, но 20 минут прод лежал.

Стали разбираться — эволюция базы повисла на переименовании таблицы. Сервис — монолит, кроме него в базу только метрики ходят (но не в эту таблицу). Однако переименование таблицы — это действие, которое требует ACCESS EXCLUSIVE лок, и ни одна операция, хоть как-то трогающая таблицу, не может выполняться параллельно.

“Убийцей” оказалась IntelliJ Idea Ultimate, в которой коллега запускал проверки на проде перед деплоем. На препроде воспроизвести не удалось, но при повторном деплое опять “все повисло” и только когда прибили Idea, все накатилось. Судя по всему, она запрашивала метаданные для автодополнения и т.п. и где-то висела незакрытая транзакция. psql такого бы себе не позволил (по умолчанию, по крайней мере) :/ А вообще еще лучше никаких лишних открытых соединений не держать при накатке изменений.