Commit Graph

  • e17ce5504e some develop wt 2026-10-21 20:03:10 +07:00
  • d1492f3b44 test wt 2026-10-21 19:49:17 +07:00
  • 29176eb90b ci: run mam_broken_baseline_network in verify-local wt 2026-10-21 18:59:20 +07:00
  • 75bb730d3c docs: MAM baseline 0.8.4 — best-effort archival and offline repair wt 2026-10-21 18:57:51 +07:00
  • 100005379b MAM archive storage fault must not drop live message delivery wt 2026-10-21 18:52:53 +07:00
  • c71aca637c Update server.rs wt 2026-10-21 17:54:18 +07:00
  • 5b8ee4f4ad Revert "Версия 0.8.3 удерживала глобальный Store.slots mutex на весь durable" wt 2026-10-21 15:23:34 +07:00
  • 821e1c3e2f Версия 0.8.3 удерживала глобальный Store.slots mutex на весь durable commit (включая fsync/append). fsync одного канала задерживал SM-коммиты всех остальных сессий; при медленном диске и нескольких пользователях это выглядело как «сервер перестал отвечать на запросы» и секундная доставка сообщений. wt 2026-10-21 14:43:59 +07:00
  • bff609097b - Уменьшено число последовательных синхронизаций до доставки: ordinary MAM append использует один sync вместо четырёх, SM checkpoint — один вместо двух. Checksummed redo journals сохраняют commit-before-ACK и восстанавливают native archive/SM JSON exports после аварии. - Ограничены рост журналов, ротация и tombstone GC. Старый .rappend и legacy JSON импортируются. Retain/save/purge не возвращают удалённые записи. - Recovery синхронизирует валидный journal перед публикацией состояния; проверка checksum не заменяет durability barrier. EIO при adoption блокирует startup или offline handoff. Новые fault fixtures проверяют сохранность журнала и retry. - Replay SM проверяет checksum/JSON всех frames, но создаёт и валидирует полный Record только для последнего snapshot, сокращая работу с superseded queues. - message-processing-slow содержит времена MAM отправителя/получателя, доставки, carbons, offline/push и handled, а также число ресурсов/копий. Payload и секреты не добавляются в логи. - Добавлена offline команда storage-checkpoint CONFIG: durable экспорт и передача archive writer/подготовка отката на legacy Rust. Не запускайте другого writer и не удаляйте journals до успешного завершения команды. - Новые crash, partial-write, corruption, EIO, recovery, handoff и latency регрессии включены в GitHub Actions через verify-local.sh; отчёты сохраняются. wt 2026-10-21 13:14:19 +07:00
  • e9329ccbb2 - Исправлена задержка доставки MUC с растущим архивом: после каждого сообщения больше не выполняется полный scan/rewrite архива для expiry. Очистка остаётся в maintenance и перед MAM-запросами; append и crash checkpoint до fanout сохранены. - Неизменённые native config/persistent index не перезаписываются при каждом сообщении. Удалённые файлы восстанавливаются, ошибки экспорта повторяются. - CSI больше не сохраняет SM snapshot при отсутствии изменения durable очереди. Изменённая очередь сохраняется до отправки; при ошибке записи очередь откатывается. - Личные сообщения, IQ и входящая федерация к аккаунтам больше не захватывают общий MUC mutex, ожидая несвязанную работу с комнатными архивами. - Добавлены регрессии native exports/archive scanning/CSI rollback и реальный TLS latency check в verify-local.sh, автоматически включённый и в CI. wt 2026-10-21 11:20:09 +07:00
  • b798b3f9b7 added AGENTS.md wt 2026-10-20 17:50:43 +07:00
  • 25fa51c76d added ci wt 2026-10-20 17:41:56 +07:00
  • 7f60661eef - MUC сохраняет согласованный журнал конфигурации, affiliations, nick, ролей, членства и ограниченной истории без MAM. Изменение фиксируется до публикации ответа; при ошибке записи состояние комнаты откатывается. - Crash recovery использует последнее сохранённое поколение после SIGKILL, включая временные комнаты. Heartbeat обновляет живое членство; ожидающие записи сохраняют исходный deadline через повторные перезапуски. muc_recovery_grace_period: по умолчанию 300 секунд, пределы 1..604800. - Подтверждённые выходы, смена nick, ролей и политик комнаты не заменяются старой записью восстановления. Native config/state остаются экспортом для Prosody; согласованное восстановление Rust использует собственный sidecar. - Исправлены MUC probe, неизвестные типы presence, вход без MUC <x/>, ошибки доставки и статус 333. Обычные presence extensions сохраняются в живом обмене; поддельная MUC identity фильтруется. subject вместе с body либо thread не изменяет тему комнаты. - Подключены muc_max_rooms, restrict_room_creation, политики регистрации и зарегистрированного nick, muc_tombstone_expiry; добавлены встроенные административные ad-hoc команды уничтожения комнат и изменения affiliation. - Hub сохраняет resumable XEP-0198 сессии, счётчики и очередь. Resume после перезапуска доступен на новом TLS/SASL-транспорте через legacy SASL и SASL2. Действующие приватные SM-записи восстанавливают логические сессии и MUC до открытия listeners: offline-доставка попадает в очередь, синтетический join и история повторно не отправляются. SM resume не требует дополнительной available presence; без SM восстановление MUC требует новой аутентификации точного полного JID и available presence либо явного MUC-входа. Входящий handled-счётчик обновляется после обработки. Сокеты TCP/TLS не сохраняются; неопределённая сетевая отправка допускает повторную доставку. - Известные встроенные MUC-возможности Prosody отображаются на Rust-реализацию. Произвольные Lua/community-модули не исполняются; неизвестные явно включённые MUC-модули отклоняются при запуске. Общие и host modules_disabled учитываются для vCard и occupant-id. wt 2026-10-20 17:34:43 +07:00
  • b30fc524d8 - Offline CLI upload-migrate OLD_CONFIG NEW_CONFIG --component HOST [--execute]: dry run по умолчанию, local ↔ S3 и S3 ↔ S3 без удаления source. - Последовательное копирование с проверкой размера и полным SHA-256 readback destination; конфликтующий объект не перезаписывается. Временный диск — максимум один переносимый файл дополнительно к постоянному destination. - Durable migration journal позволяет продолжить прерванную операцию с теми же конфигурациями. Незавершённый или повреждённый journal блокирует startup; backend identity меняется только после проверки всех файлов. - Native uploads/upload_stats, slots и JWT сохраняются; поддерживаются native локальные файлы без Rust completion sidecar. Миграция требует остановки RustXMPP и Prosody, использующих общий data_path. - Multipart intent сохраняется до создания удалённого upload. Recovery находит потерянный UploadId через paginated listing и очищает только точный key принадлежащего slot. При сохранных metadata cleanup не зависит от lifecycle; lifecycle остаётся дополнительной защитой, а не гарантией. - Перед completion сохраняется durable marker. Неопределённый результат completion при отсутствии подтверждённого объекта помещает только этот slot в quarantine: PUT 409, retention не удаляет его, maintenance повторяет сверку. Startup продолжается; сохраняется single-use семантика. - Добавлены network regressions миграции и расширены проверки multipart recovery, потерянных ответов, отмены запросов и конфликтов destination. main wt 2026-10-20 17:06:14 +07:00
  • c260d7bab8 initial commit wt 2026-10-20 15:59:55 +07:00