Удельта

РелизВерсия v2.37.2

Редакция Удельты

ntfy 2.37.2: выбор реплик PostgreSQL и тайм-аут пропавших узлов

В ntfy 2.37.2 изменены выбор реплики PostgreSQL для чтения и обработка оборванных соединений с базой. Релиз опубликован на GitHub 4 ноября 2026 года в 01:45 UTC (04:45 МСК); в документации проекта выпуск датирован 3 ноября.

Для запросов чтения сервер теперь выбирает исправную реплику с наименьшим числом занятых соединений. Между одинаково загруженными репликами сохраняется поочерёдное распределение. По описанию разработчиков, прежний алгоритм продолжал посылать каждый второй запрос на зависавшую реплику ntfy.sh, хотя другая оставалась свободной; новый выбор учитывает занятые соединения.

Если пулы всех исправных реплик заполнены, запрос ждёт соединения на наименее занятой из них. Основная база, принимающая записи, используется для чтения только при отсутствии исправных реплик. Новая метрика ntfy_db_ping_seconds показывает длительность последней проверки доступности базы, включая ожидание свободного соединения.

Для TCP-соединений PostgreSQL на Linux устанавливается TCP_USER_TIMEOUT в 30 секунд. Это ограничивает ожидание подтверждения отправленных данных от исчезнувшего узла, например при изменении ресурсов сервера базы. Медленный SQL-запрос по исправному соединению не прерывается только потому, что выполняется дольше 30 секунд: TCP-подтверждения продолжает отправлять сетевой стек сервера.

Тайм-аут не является гарантией ответа всей операции за 30 секунд. В опубликованном автором PR испытании исчезновение узла до отправки запроса приводило к ошибке примерно через 60 секунд из-за повторной попытки библиотеки. Unix-сокеты не затронуты; на других платформах сохранён прежний механизм соединения. Изменения выбора реплик относятся к установкам PostgreSQL с репликами чтения, а не к SQLite.

Команда ntfy cluster status теперь выводит текущий узел первой строкой таблицы, помечая его как текущий и, при необходимости, как лидер. Формат JSON и режим --all не изменены. Хотя ранние описания PR относили эти правки к будущей 2.38.0, примечания в теге v2.37.2 и итоговый PR подготовки релиза подтверждают их включение в 2.37.2.

Материал был полезен?

Сообщить об ошибке или задать вопрос редакции

Сообщение увидит редакция. Не указывайте пароли и личные данные. Текст удаляется через 180 дней.

Все новости

Обсуждение

Комментарии проходят подтверждение адреса и проверку редакцией.