Случайности, которые меняют PostgreSQL: история о багах, которые прятались годами
Аннотация:
Что общего между репликой, которая внезапно зависает в ожидании IPC/MultixactCreation, и командой MERGE, которая генерирует дублирующиеся значения? Оба случая — это редкие, но критические баги в PostgreSQL, которые годами оставались незамеченными. И оба были обнаружены одной командой инженеров, которые просто запустили синтетические тесты на своей инфраструктуре.
В этом докладе пойдет рассказ о том, как мы столкнулись с необычными проблемами при использовании PostgreSQL 17, какие методы использовали для их воспроизведения, и как наши отчеты привели к крупным исправлениям в коде PostgreSQL:
Некорректные обновления в MERGE: Как команда MERGE в конкурентной среде могла генерировать дублирующиеся значения, нарушая монотонность последовательностей, и почему эта проблема была связана с неправильным использованием TM_FailureData.
Проблема с multixact на standby-сервере: Как репликация начинала зависать при высокой нагрузке с генерацией multixact ID, и почему это было связано с редким "corner case", который существовал потенциально с момента введения multitransactions.
Для кого: DBA, разработчики приложений с высокими требованиями к надежности, участники сообщества PostgreSQL.