РелизВерсия v2.31.0
ntfy 2.31.0: восстановление пропущенных сообщений и проверка готовности
В стабильном ntfy server 2.31.0 добавлена повторная доставка из кэша сообщений, пропущенных при переподключении клиента или передаче между узлами. Также появился отдельный endpoint готовности для балансировщиков нагрузки.
Пакеты версии 2.31.0 опубликованы на GitHub 15 октября 2026 года в 19:05 UTC; выпуск не помечен предварительным. При этом release notes в самом теге датированы 16 октября. Дата публикации пакетов и дата в документации здесь различаются; речь идёт о сервере ntfy, а не о новом выпуске Android- или iOS-приложения.
Дополнительный путь доставки из кэша
Клиент мог переподключиться до того, как только что опубликованное сообщение успевало записаться в кэш. Чтение истории тогда не находило его, а прямая доставка уже произошла. Новый механизм раз в секунду читает недавно записанные сообщения и передаёт их локальным подписчикам, которые их пропустили. Он работает как на одном сервере, так и при потере передачи сообщения между узлами кластера.
Прямая доставка не заменяется опросом: чтение кэша дополняет её. Это не гарантия отсутствия потерь. В PR отдельно отмечены сообщения с cache: no, которые вообще не записываются, и аварийное завершение процесса до сохранения накопленной пачки. Такие случаи новый механизм не устраняет.
Повторная выдача меняется для собственных клиентов
При переподключении с since=<message ID> сервер теперь также возвращает сообщения из той же секунды, что и указанный идентификатор. Это помогает не пропускать записи, которые несколько серверов сохраняют в другом порядке. По release notes, приложения ntfy и веб-клиент отсеивают повторы по ID; собственные скрипты могут увидеть дубли. Поэтому изменение затрагивает не только серверную надёжность, но и семантику чтения истории.
Готовность отделена от исправности узла
Новый /v1/ready отвечает успешно только для активного узла, готового обслуживать клиентов. Пассивный узел может быть исправен и возвращать успех через /v1/health, но не должен попадать в обычный поток балансировщика; проверка готовности различает эти состояния. В ответ проверки здоровья также добавлена роль узла.
Для экспериментальной кластеризации появилась настройка experimental-cluster-role со значениями active и passive. Пассивный узел не становится лидером, но продолжает получать сообщения и обслуживать прямые подключения. Если других недавно активных узлов не было, единственный активный сервер может стать лидером без прежней минутной задержки после запуска; для переключения между недавно работавшими активными узлами защитная задержка сохраняется.
Кластерный реестр узлов мигрирует со схемы версии 1 на 2. Release notes предупреждают: обратный переход кластерного сервера на 2.30.0 требует отдельного ручного шага со схемой. Это ограничение экспериментального кластера, не общее требование к одиночной установке.
Изменения проверены по документации выпущенного тега и полным описаниям PR; собственных испытаний Удельты не проводилось. Обложка — экран из официальной документации ntfy, сохранённый в каталоге, а не подтверждение проверки версии 2.31.0.