- Уменьшено число последовательных синхронизаций до доставки: ordinary
Test, build and publish / All tests and Linux binary (push) Failing after 30s
Test, build and publish / Container smoke test and Gitea publish (push) Skipped

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; отчёты
  сохраняются.

Измерения, ограничения и эксплуатация:
[docs/DURABLE-MESSAGE-IO.md](docs/DURABLE-MESSAGE-IO.md),
[docs/VALIDATION-0.8.3.md](docs/VALIDATION-0.8.3.md).
This commit is contained in:
wt committed 2026-10-21 13:14:19 +07:00
1 parent e9329ccbb2
commit bff609097b
53 files changed
+8924 -1792

No files matched your search

+6
View File
@@ -166,3 +166,9 @@ ad-hoc destroy/set-affiliation. Общие и host `modules_disabled` приме
Ограничения журнала, native-экспорта и отката:
[MUC-RECOVERY.md](MUC-RECOVERY.md). Итоги проверки:
[VALIDATION-0.8.0.md](VALIDATION-0.8.0.md).
## Durable IO0.8.3
MAM/SM используют authoritative redo sidecars. Перед сменой writer или откатом
на старую версию требуется offline `storage-checkpoint CONFIG`; после аварии
нельзя просто удалить sidecars. Подробности — [DURABLE-MESSAGE-IO.md](DURABLE-MESSAGE-IO.md).
+103
View File
@@ -0,0 +1,103 @@
# Личные сообщения и durable IO в 0.8.3
В присланном журнале сервера 0.8.2 есть три `message-processing-slow` с 4792–5549 мс,
route=local. Этот таймер начинается после приёма XML и заканчивается после
`mark_handled`: ожидание происходит внутри обработчика. Старые события не
содержат разбивки по этапам и сами по себе не доказывают причину медленного IO.
Исходный пользовательский журнал не включён в архив проекта.
## Изменение записи
До 0.8.3 append в MAM требовал 4 последовательных sync: rollback marker file+dir,
native list, удаление marker+dir. Обычное сохранение SM требовало 2: JSON file+dir.
В TLS fixture1:1 с двумя аккаунтами, четырьмя SM-ресурсами и carbons это обычно
16 sync на сообщение. Увеличение задержки каждого настоящего fsync/fdatasync
внутри изолированного data_path воспроизводит задержку в несколько секунд.
Interposer не пропускает sync и не меняет системные настройки/production.
В 0.8.3 принятые данные сначала фиксируются в журнале восстановления с checksum:
- MAM `.rredo`: native `.list` сохраняет формат Prosody; обычный append требует
одного sync журнала. Replay восстанавливает недостающий native suffix и
отбрасывает незавершённый хвост. Полностью записанная повреждённая запись
вызывает ошибку. Ротация —128 frames/1 MiB плюс максимум одна 16 MiB запись.
- SM `.wal`: authoritative полные snapshots и tombstones; readable JSON —
восстанавливаемый экспорт. Обычное сохранение требует одного sync_data.
Ротация —16 MiB плюс максимум один snapshot; aggregate WAL cap 512 MiB,
logical slots по-прежнему 256 MiB/8 MiB на slot/4096 stanzas и 4096 sessions.
Tombstone GC сначала синхронизирует удаление JSON, затем удаляет WAL.
Recovery синхронизирует полностью проверенный журнал перед публикацией
восстановленного состояния: полный frame после SIGKILL может остаться
только в page cache. Checksum подтверждает целостность, но не запись на диск. Ошибка этого sync запрещает startup/handoff.
Создание журналов, восстановление и ротация дополнительно синхронизируют файлы
и каталог. Экономия относится к обычной записи, не каждому возможному запросу.
Отключения durability или периодической записи вместо commit-before-ACK нет.
При неопределённой ошибке SM IO store блокирует дальнейшие изменения до
восстановления. После успешного WAL commit ошибка экспорта не откатывает память.
Queues/archives не образуют общей транзакции с сетью: гарантия replay остаётся
at least once, а не exactly once между всеми хранилищами.
## Передача данных Prosody и откат версии
После SIGKILL/OS crash сначала используйте 0.8.3 для восстановления redo. Не
удаляйте `.wal`/`.rredo` вручную и не редактируйте JSON export как источник истины.
Для смены writer или отката на старую версию остановите сервер и выполните:
```bash
rust-xmpp storage-checkpoint /etc/prosody/prosody.cfg.lua
```
Команда берёт data-directory lock и SM store lock, восстанавливает журналы,
синхронизирует native archives и актуальные JSON, затем durably удаляет redo.
При ошибке передача владения не завершена; разберите ошибку, не запускайте
другой writer. Перед работой с production данными сохраните обычную резервную
копию всего data_path. Native Prosody не понимает resumable SM snapshots Rust;
checkpoint SM обеспечивает совместимый JSON для старого Rust, не переносит
TLS/TCP/SM-сессию в Prosody. Простой graceful stop не заменяет эту явную команду.
Нельзя одновременно изменять `.list` средствами Prosody и Rust. Неjournaled
in-place append при активном redo считается незавершённым и может быть отброшен.
При восстановлении согласованной копии всего data_path журнал остаётся
авторитетным независимо от смены inode файла. Любая внешняя модификация,
включая atomic replacement, требует handoff. Внутренний rewrite сначала
фиксирует старый native snapshot и удаление redo, затем атомарно заменяет native
файл: авария в промежутке сохраняет старый snapshot, после замены — старый/новый.
Редактирование baseline in place без handoff не поддержано. Anchor проверяет
последние 4 KiB baseline, не является checksum всего старого архива.
## Диагностика
`message-processing-slow` по-прежнему имеет threshold 250 мс, duration_ms, route
и connection. Новые поля в integer milliseconds:
|Поле|Измеряемый этап|
|---|---|
|pre_routing_ms|Работа до личного MAM; для MUC/ранних выходов — обработка до handled|
|sender_mam_ms|Политика и архивирование отправителя|
|recipient_mam_ms|Проверка аккаунта, политика и архивирование получателя|
|delivery_ms|Маршрутизация, targets, mutex и transmit|
|carbons_ms|Выбор ресурсов и отправка carbon|
|offline_push_ms|Offline commit и подготовка/enqueue push|
|handled_ms|Session mutex и durable mark_handled|
Неисполненные этапы равны 0. target_count — выбранные локальные ресурсы,
carbon_count — успешные carbon transmit. Это серверные этапы, не время
отображения клиентом. Тексты сообщений, SASL и токены не логируются.
## Проверки и границы
`tests/slow_storage_latency_network.py` — реальный STARTTLS, MAM/carbons/PEP,
контролируемый sync delay и счётчик операций. `tests/slow_storage_crash_network.py`
— sender SM ACK, немедленный SIGKILL, проверка committed journals/обоих архивов
до повторной аутентификации и replay всех ресурсов. Rust regressions проверяют
partial tails, corruption, ротацию, tombstones, migration и offline handoff.
Отдельный `journal_recovery_sync_network.py` вводит scoped EIO для WAL/redo
и проверяет отказ startup/handoff без потери journal и успешный повтор.
Точные измерения и результаты этой сборки — [VALIDATION.md](VALIDATION.md).
Общий mutex SM store, обязательное durable IO, большие pending snapshots,
полные MAM queries/maintenance, PEP storage и federation всё ещё имеют стоимость.
Медленный диск не становится быстрым от сокращения числа sync. Проверка на
loopback не устанавливает причину каждого production warning; новые phase
fields позволяют проверить это на целевой системе.
+4 -1
View File
@@ -80,7 +80,10 @@ Native state без подтверждающих Rust-метаданных са
восстановление. Это не универсальное слияние параллельных записей двух серверов.
Для отката на Prosody остановите Rust и сохраните резервную копию всего
`data_path`. Prosody использует native-экспорт и не читает Rust-журнал. Перед
`data_path`. Начиная с0.8.3 перед сменой writer выполните новым binary
`rust-xmpp storage-checkpoint CONFIG`: он фиксирует MAM redo и SM JSON exports.
Это не перенос Rust SM-сессий в Prosody и не универсальная конверсия MUC journal.
Подробности — [DURABLE-MESSAGE-IO.md](DURABLE-MESSAGE-IO.md). Prosody использует native-экспорт и не читает Rust-журнал. Перед
возвратом с Prosody на Rust согласуйте данные и устраните устаревший
`rust_muc_checkpoint` в остановленном экземпляре: иначе неизменившиеся native
файлы могут быть приняты за экспорт предыдущего поколения Rust. Удаление
+5
View File
@@ -100,3 +100,8 @@ SM Store пока использует общий mutex для durable slot IO;
и внешняя федерация имеют собственную стоимость. Производственная квалификация
клиентов и полная замена Prosody остаются за рамками этих fixtures.
Итоговые тесты/сырые отчёты: VALIDATION-0.8.2.md и validation-logs-0.8.2/.
## Продолжение0.8.3
Новые логи показали seconds-level серверную обработку. Добавлены redo MAM/SM
и разбивка времени на этапы: [DURABLE-MESSAGE-IO.md](DURABLE-MESSAGE-IO.md).
+21 -14
View File
@@ -1,13 +1,14 @@
79f3f5cd46255826869c9151151d3471dd7139c2ea8fb2da4b2b6fbea113f0cf .github/workflows/ci.yml
d9732ba55b93d2907cd1a2a0fa20bc1f46e0f2970de0e9f2bf730048212cfc31 AGENTS.md
f8e6a12039b067ed5af42320bca42fb0555d9a5f438d1652860a5be4534469d1 Cargo.lock
4e8d7ee328f044be284e0cb436f13a468adcac3058bbb1be381f8bff96603e5a Cargo.toml
9984392a77fcbb6d0ee70b536ecdcfc4349101bb300a509e32353aaa1134979e .github/workflows/ci.yml
6593266e57a718762fbca26fd893fcabf1ea842dcc53dd0fd11844b2def2a543 AGENTS.md
b83b20e991af384b349825ca39aad157d8b412d0143cc34c68567ca011bccf58 Cargo.lock
3ecc46532a7fb1a231dbbd5337221d0c0c32ba36574e74655854f1a1d54d4581 Cargo.toml
6be2fbcd1da8a07dda7daf3ddd727b38f363751ebace9c0b87c282f8961cffed Dockerfile
7136ea911bb6b6d352f703f80efeebde921028ea9dc39cd0d2cd55ea465f8c37 examples/config.json
8a65739eb5c24f10b9f2c509f0bd050fb1115706e6a41fdf804b9e0e44f583fd examples/config.toml
ca86274bcf4dc5daebbf69c9f003854afca92954719aff068f810e0a3d615dea examples/config.yaml
bbc2591581d382fef5fb918a480e6c338c7e3e3f2025df5509f51708534631e7 examples/converse-origin.fragment.yaml
66ea9e2b58f6a39b70911b9981cae5e99625483af7a41168e24923464de8ae56 examples/reverse-proxy.fragment.yaml
d13306be0ecda81ce779baa290ffb417380d525928477f16200884b5169cca33 rust-toolchain.toml
c08bd5923906f4d2163a258c8b68dbef39ea6a3e07032f67e5c12d3d9ca81c5e scripts/ci/image-tags.py
8820d262f8018a822b27eb9e5f0d3b9ca0c1272001164ca8a59fcd13911a5426 scripts/ci/prepare-minio.sh
5bcd646c6c9159bbdce3a4eadce4d80d6c7422748e47c6ad04e5769efb4f2920 scripts/ci/prepare-reference.sh
@@ -25,10 +26,10 @@ b1018e1b279c89f6cf14b4017e4f1b14e9165afef2f668cec6ac8bbe0c710d85 scripts/integr
e08ac6136cce27cda2ddbd510da0f25750766ab0150a9f4b8f87c953276d16e9 scripts/prosody_compat/oracle.lua
2c7a2c946885205e9df38b97305073a8ac72f58ac8ff84fc6f9af320c35bbc96 scripts/prosody_compat/verify.sh
1b9ed063daf3e0320819b4fe0135c96dd27e49877044aa2f5093b8ab4fbda41d scripts/smoke.py
c32bc7ed2d5f954a2b3de06db31fb1580378259edfc8ce574aa5cd5719cc2a59 scripts/verify-local.sh
2cd5e17cdf0902ceaaca9b6e8d36ca766e33e66a06784ec97ad99165571eaf91 scripts/verify-local.sh
a2e47f547ab9349f84ee6c4f8e51c147b7110b41a82c17cdb938027a84d82ef3 src/account_modules.rs
5637f816586f0613b83e14d0ed478bd539f325b70ccbfc9fdf893adbe494453d src/admin.rs
7b844cbe377b057555436378ab8bd784f99b85e7c9992cb3c5a044f40326951f src/archive.rs
1b2011fb38482eba69dc245c367ddf496089d0cbde8a000b1ff5e9bbf8c3dea8 src/archive.rs
e15b079a420227ee59e3b7ac305783c51eb59d76a8fb5dd12760547b0f812107 src/auth.rs
83ac35a4c9d20debf006fe80fba8e423c09806fb2526ff384b188ca28d612a5e src/config.rs
175ab07f17ba14c51c76857c4905b0a587d8be68e2be5179456e9c71a523c487 src/csi.rs
@@ -43,7 +44,7 @@ c604a0a764ffac6bae0c9aa15c9ef7022d35cb1f8c9159eb66257114445621c5 src/http_trans
5b27b6c719537af919bd6fe089574eba5e2c7bbe0d32249164914a4bb57a1427 src/lib.rs
a21e1119ea0271b63935e92eb106ab6076f0035e6d3a06c21a352f152b9b37db src/logging.rs
58ce2a9daa36ac26b39c8f263a16f4fa8cc4e57c91bbbf5b24a6aad3f1a326e0 src/lua.rs
a264e2765a31c8c096462551aca229530cad356e39e338370d1a0bdd97860680 src/main.rs
f103c15e11d61b5818e9a9491b8533b904cade7b3654c481cc61d3a7d0bb8173 src/main.rs
68d97d96aa3a370474c144ccfdbf16109c46a6b14123d55d30464237ae29a958 src/mam.rs
f17b06fe5b76381b5cdbfc2b668107f6c2b0b456c05b7a7709bea6a284531ff5 src/muc.rs
c7ba46a140b9dce65cc573176265d6f77049ae657a70ffe59611a1c0f3ef89af src/muc_admin.rs
@@ -56,10 +57,10 @@ f09a6479b76c9c601a169b5f1f9cf1364e82df5ae27e4bab8d1b1428b5cad457 src/preauth.rs
8dbb7a6b43a5f0562a775df42a959ab8badc466135a8b32da86cd79615b5acbf src/pubsub.rs
913cd033f60a68f6c7cf9b3adbaf76db1c5c9bc88a0599196d373b16b64c0a1e src/push.rs
bec477f2520af6a9d7ca54e43eb12158b53e3cf09057653e504dfdeab956885e src/sasl.rs
a445dcab6d0275861b08412a4bd622cb72c3f462ebba5eaedad360e740a6513c src/server.rs
c7450f9058528e3030df559840f87dae591a2b88be8503872956e9b78435d916 src/session_store.rs
1bcc6995e221f316bd4765eeb79c2ad67c9fe9e93d4254e6f6679244fc733e6f src/server.rs
c37f6c478d45b3c0741f0b1bed95f499e67d4d3eb50b78fe606e2b518170e45f src/session_store.rs
1d4e890315886bc4fd0b824e034a5c1833a1f2c1347e8c3ca77254e13a2acab9 src/sessions.rs
71d7ce1036a091d8c27016ea7ce4cffedf904dfca9d1cc4891b7dc66a1e06a4e src/storage.rs
c9fb5d18da148a6366a18afb86eaee26a67d20c7b6664e425e612d44e79a2988 src/storage.rs
462b00edb2c1e02dd34524bafe4f82b5ef902028b44310ba31b085d31f4dc2aa src/tls_binding.rs
a78592aa79d8f01c22af1457d0c3f5922863ccd3e8ebb1aa05e043cc44579b8a src/upload_migration.rs
f9b023565711e0217238b53fb678c5fb14849cdcd2efcd0fce249018274fad69 src/wire.rs
@@ -68,6 +69,7 @@ b4eb7a230570dfde0fd0d301a6ace36559a5eae3e1402e42c76f014f61739c24 tests/_wire_cl
0645fda01bede4362d998ef22aefdd2c02578dd2c2aae3878d0cff87b3679835 tests/android_sasl_network.py
ad225ade463f55bfd0734e67f5306e274cd9aab59e10e91469bf7263547cdf79 tests/archive_edges.rs
366b315521bd4f4448c0bac17bf74ddb77a728ff41fc48e29d46377625e0330f tests/archive_mam.rs
df8530d69beaf36c34e78f0f050930b7e0d6a296c22ca543dfc7533180ba0543 tests/archive_redo.rs
cb6b7bbcd1bc7ee01a4ccf892d4b6074765685c56c4b8bb46e0381b834577b6a tests/auth.rs
011bbdd00c8ff8b648076d133086c395f6784cdcbb0c9f4e1efcbc15c1e79d9c tests/bind2_archive_latency_network.py
b3c3470f0b9b64584abf98c26a4578b0b90089086d00f7b07187aa5f6db6a417 tests/cli.rs
@@ -78,6 +80,7 @@ d4d8d982c6f4ab96a809b598ea9ead7f64fa9d916547f1eb9d797aa71db64fdb tests/data_loc
be18a83fb5884cfdbd2ddc542cb25fd07b70f139cbdce1ae67562568df42a2e2 tests/debug_legacy.rs
63753c2e3524e8e7826bc2d48e2bd78e36e1cc56fde9da19950d5c35e1c38f77 tests/federation_tls.rs
1aaf06ba872cb5dbe0545afffdd8efddd0eae7305de06f3b3b75c19289581865 tests/fixtures/prosody.cfg.lua
33a8a5d9980bb9aa1162a1e3e562a9d889edd3d2f96a7073e14acc8e504bf9c7 tests/fixtures/slow_sync.c
19d570b92075d1355257c3798e4c52e404cc356dfe5dfd0c8fb384e4e7150682 tests/gajim_discovery_network.py
4398bf0639c31f0df328f0b0f1a5df17f2e69d2df84514845bba882146de06bc tests/gajim_features.rs
a346e70af3657fbf56e0bb1c39c427f630de8c349e6858b8933c52f42a21ab46 tests/http_altconnect.rs
@@ -86,6 +89,7 @@ f1ea3eb78d5c716f4281cf17cb41b9fb22e08dbb4cf08ed9c8477c79b7d2382b tests/http_pro
7c599c83eb999cd8776f0ce6811db8f478366b840311f2e513823f70b5d7cd30 tests/http_transport.rs
278db32ba0dec882b0af8f1969da87670ff3d2d749d32320154dabef51cff191 tests/http_upload.rs
da2fc65e931ec74fbcdcd26d04f2cb073e2dc1e354139135166c79580973a477 tests/iq_errors.rs
ec993a6e31d38f82abd13bd46ad99286cf13e8abea63c0385c848037a12b0cd4 tests/journal_recovery_sync_network.py
05160f17f8098466a67c9b069c165dc9d94a84ab03a49896169f110baf8e869a tests/logging.rs
dfc3429e3e755d4c99ec1bd8ee6fb0f1f6aaf86414d5adaca7e9e3b18c7fe3f7 tests/logging_network.py
0141961eadf9246ce287d7ee0dbbbf5243fd6e1332e09ccd2f6a591be419c2c3 tests/message_latency_network.py
@@ -98,7 +102,7 @@ dfc3429e3e755d4c99ec1bd8ee6fb0f1f6aaf86414d5adaca7e9e3b18c7fe3f7 tests/logging_
a8a01faf51bf82bce6cbb2616cdaabb6337047d1c5f17d5f39975c0528a1d5ae tests/muc_flow.rs
b24bd920f096576c2009ff1ccc0366eb8734c5f0b2feb39f04ad7087268a94b9 tests/muc_history.rs
1b34ab721eec69295e1274e44bfd108c0e117dd383624cb6c98d851eb20e7a9a tests/muc_latency_storage.rs
1f3df5f3f39143adc2b2a419fac0cd74b2229337ffa86570261d1f6ac61137a1 tests/muc_native.rs
18f18362f26710043b51168675daee91ae88c071fb44e48210b49686011f8722 tests/muc_native.rs
3df2736ccfd25a6cab290df80ceb7474ea44bb02af6cf768a9216d6b8f7f8630 tests/muc_optional_admin.rs
5dc93407a658b45e504b89e26cfc8f495cd28ad90d0a308b7d228a472435ff9f tests/muc_protocol.rs
ac1caa62a3cd91e74bd7100a5e542c404e97aec61a34e9627900b458c2ee3806 tests/muc_recovery.rs
@@ -124,7 +128,7 @@ b8dd71798f96931f7ab4489cdb1e258556f41411815ef38d3a03e80e4e8fbdfc tests/push_dis
44c8e642f725be2292dfc5282feac8772ac34824927b63058f03f7c98285e5b6 tests/push_latency_network.py
abf5e6a32ab542ccba5861eaaf7aed9a86b8306abfe2c329646d54e43176dc0c tests/reference/COPYING
1ecd0a5c122910cbd066922c95ff0c32e945a07e2c9b0a37a30e5f035b5ecea6 tests/reference/configmanager.lua
f407c6565fa73b6653e7e73204daa65ae1d87111e82c6b96154aea76497ad65d tests/reference_prosody.rs
78fb639a334846c884f2d438407d7fa8491778b695f9e6218a161ebf8acaeced tests/reference_prosody.rs
5ab78e9319d6004d65d35cd4d04dbb99d4ea5ffd8da00473d874bb26000fce35 tests/resource_rebind.py
2e79de5ef8d3be81ac8f715bb96797b6e8e39cdcd61c13d8d873a96b53cb52e4 tests/resource_sessions.rs
cefd1001c9619456402223fa89e449f65599c4397f523860e965ca192a4fd915 tests/sasl2_bind.py
@@ -135,9 +139,12 @@ a7d1519f4f44cc7bfad3d20bcfdf455e92abdd084feed493ffc9e0267a387740 tests/sasl_net
4748fa227743686f78a0fa0364735d2dda5995f8d70a79ad03c1aa1decb42978 tests/sasl_retry_network.py
d8882b8aabd6ff603c81fbbc259eefa68772afb2b3eec2e003ac29efd65d146b tests/sasl_web_network.py
7d69c14ced7884450b9a1ff63cd984cdb9dfe948d6c56631c7593b6fabdabf7f tests/session_routing_isolation.rs
7636b0767fdf24e3d4bde03779ec40309ed2b3301d4e35c6ae5f59aa065e4b2e tests/slow_storage_crash_network.py
7492523bb226b68f72b97b028a7fafeb4fb5375b1efc6fb516400279dd0743d4 tests/slow_storage_latency_network.py
d9eef5c37fcd99404619d61dbf7a2bf7673087924d93e69b08769e716afe297b tests/sm_durable_slots.rs
0b74b2ff47b8ae681b5613bc87e914fdf8e5033156180df06ff2174df2781a5a tests/sm_restart_network.py
72f2d60e47e5295b82d497289b78925a64a1d986c70c277015ae228d211d32bb tests/storage_accounts.rs
b4c9422cdba8fd133572c0fa3a0ae6cda14edbd14db6d984d76f4409eefd1262 tests/sm_journal.rs
8fa5de6a2291a7c35e7bbbc6334d42b4e0836a36bec252d0ef4703e8ee17aecb tests/sm_restart_network.py
f76ad9de4c7e0140b1a4c3da06e849e28bb0562cf9b576ed85a5257f7394506b tests/storage_accounts.rs
5c38afd5f77b5774552d12c461902ffaae21de11735560c6f0088e3dda8afa58 tests/storage_compat.rs
8724991fdf22471952cf1a0fac863abe837069c93d3c8d2fa751af4f6bbc3e38 tests/tls_binding.rs
5bea9b5546d3a6ae4fe78d17acbc3f6e6a1d5e1d13b32f2aa88d0e320892b7c5 tests/tls_plus_network.rs
+79
View File
@@ -0,0 +1,79 @@
# Проверка 0.8.3
2026-10-21, Linux x86_64, Rust 1.99.1. Итоговый единый прогон после заморозки
исходников: [verify.txt](validation-logs-0.8.3/verify.txt).
[Machine-readable results](validation-results-0.8.3.json).
|Проверка|Результат|
|---|---|
|Rust ordinary tests|334 passed, 0 failed, 11 ignored|
|fmt / Clippy all-targets -D warnings / release|Успешно|
|Новые Rust regressions|13 archive redo + 2 rewrite crash boundaries + 14 SM journal, успешно|
|Native reference|8 module/storage + 1 TLS/SASL EXTERNAL federation, успешно|
|Archive >128 MiB|Отдельно выполненный ignored streaming test, успешно|
|Copy/restore и rewrite|Новый inode, потеря suffix, baseline0/nonzero, crash до/после rename — успешно|
|Все network regressions verify-local.sh|Успешно, включая Android, WSS/BOSH, PEP, push, MUC crash/SM resume, upload/migration|
|Slow durable IO|0/100 мс: 3 samples/scenario; 200 мс: 1 sample/scenario; exact MAM/carbons/queues и phase logs проверены|
|SIGKILL сразу после sender SM ACK|100 мс/sync, 3 сообщения, оба MAM архива, 4 resume, 9 replay, до reauth; успешно|
|Recovery sync EIO|WAL/redo: отказ handoff без удаления journal; WAL startup до listeners; retry и данные проверены|
|Offline storage-checkpoint|4 SM exports, 2 archives, durable journal removal, повтор идемпотентен|
|Общая нагрузка|500 TLS, 100 accounts, 5000 ping, 5000 messages, 10000 MAM, failures=[]|
|MUC+SM нагрузка|500 resources, 10 rooms, 25000 presence, 1500 deliveries, SIGKILL и 10 resume; успешно|
## Личная доставка
Медианы для 3 samples, при 200 мс — одна проба; числа в миллисекундах.
|Sync delay / сценарий|Body 0.8.2 → 0.8.3|Sender SM ACK 0.8.2 → 0.8.3|Проб|
|---|---:|---:|---:|
|0 мс / 1:1|25.11 → 7.87|33.41 → 15.08|3|
|0 мс / PEP → 1:1|29.71 → 20.94|32.25 → 21.86|3|
|100 мс / 1:1|1232.47 → 419.68|1641.60 → 644.08|3|
|100 мс / PEP → 1:1|2683.29 → 1378.23|3195.21 → 1581.98|3|
|200 мс / 1:1|2836.64 → 2042.56|3643.30 → 2441.99|1|
|200 мс / PEP → 1:1|5782.02 → 2676.28|6595.92 → 3094.95|1|
0 мс — отдельная последовательная quiet pair, без full verify. Финальные
100/200 мс выполнялись при фоновой работе verify; это не изолированный CPU benchmark.
Первый append включает создание/migration MAM journal. В обычном warm сообщении
6 sync вместо 16; первый — 12. Окна счётчиков могут включать heartbeat, а PEP
сценарий включает предшествующую publication. Реальные fsync/fdatasync сохранены;
interposer замедляет только isolated data_path, не меняет host mount/DNS.
Raw samples, hashes, sync counts и phase fields — validation-logs-0.8.3/*.json.
В production log 0.8.2 серверный handler занимал 4792–5549 мс; старых полей
недостаточно, чтобы доказать конкретный IO stage. Новый таймер разделяет MAM,
доставку, carbons и handled, без payload. Эти loopback результаты не доказывают
время отображения реальным Conversations/Monocles на wthome.ru.
## Нагрузка и сопоставимость
Сопоставимый повтор 0.8.2 в текущей среде: total 151.334 с,
join 104.226 с. Финальный 0.8.3: total 128.380 с,
join 94.493 с, restart 7.557 с,
peak RSS 40.87 MiB. По одной пробе; фоновые условия
различаются, вывод о CPU efficiency не делается. Исторические 45.54 с из другой
среды не являются baseline этого сравнения. Все счётчики доставки и replay
проверены, а не только открытие порта.
## Durability и native handoff
SM WAL и archive redo авторитетны после аварии. Recovery durably adopts полный
валидный journal перед публикацией; EIO regression выявляла отсутствие barrier
в предварительном кандидате a5f5b3a…, теперь проходит на final binary. Отчёты
preliminary-recovery-sync-* сохранены именно как предварительные, не результаты
0.8.2 или final. Изначальный native MUC fixture делал in-place append без передачи
владения: теперь он явно вызывает checkpoint_all перед оригинальным Prosody.
Неjournaled suffix при активном redo намеренно не объявляется external commit.
Copy/restore с новым inode сохраняет авторитет redo; внутренний rewrite
фиксирует старый native и удаление redo перед atomic replacement. Проверены
оба crash boundaries, потеря suffix после копирования и обе baseline длины.
Перед native writer/откатом требуется остановка и `storage-checkpoint CONFIG`.
[Формат, ограничения и эксплуатация](DURABLE-MESSAGE-IO.md).
Release SHA-256: `8ceb8de3a2d02bc4399b8ae817dff7e3c3fe9bff83dc0c6669b7f19210a3847a`.
Один final verify с XMPP_LOAD_CHECK=1 и native env; отдельно archive ignored test
и подробные latency/crash/EIO fixtures. Исторические результаты сохранены.
Оставшийся AF_UNIX ignored test не запускался; 10 GiB upload и реальный MinIO/AWS,
Docker build/run, GitHub/Gitea publish и настоящие APNs/FCM не повторялись.
Общие границы полной совместимости: [COMPATIBILITY.md](COMPATIBILITY.md).
+68 -40
View File
@@ -1,51 +1,79 @@
# Проверка0.8.2
# Проверка 0.8.3
2026-10-21, Linux x86_64, Rust1.99.1. Итоговый единый прогон:
[verify.txt](validation-logs-0.8.2/verify.txt). Machine-readable report:
[validation-results.json](validation-results.json).
2026-10-21, Linux x86_64, Rust 1.99.1. Итоговый единый прогон после заморозки
исходников: [verify.txt](validation-logs-0.8.3/verify.txt).
[Machine-readable results](validation-results-0.8.3.json).
|Проверка|Результат|
|---|---|
|Rust ordinary tests|305passed,0failed,11ignored|
|Rust ordinary tests|334 passed, 0 failed, 11 ignored|
|fmt / Clippy all-targets -D warnings / release|Успешно|
|Новые Rust regressions|6archive endpoints/recovery/limits +2account-lock/duplicateACK — успешно|
|Личная доставка|6fixtures:100000MAM/user, roster0/5000/10000,500SMpending, default/native CSI — успешно|
|Неподвижный push gateway|Настоящий STARTTLS; hibernating+offline: bothmessagesdurable, senderACKh=4 до ответа gateway; offline сохранён до первого postTLSstream|
|Bind2 и MAM metadata|100000records,5reconnects+5IQ, exactIDs/timestamps — успешно|
|Сетевые регрессии|Весь verify-local.sh, включаяprivate WSS/BOSH chat, PEP/push,AndroidSASL,MUCcrash/SMrestart,S3/migration — успешно|
|Native reference|8module/storage +1TLS/SASL EXTERNAL federation — успешно|
|Общая нагрузка|500TLS,100accounts,5000ping,5000messages,10000MAM,failures=[]|
|MUC+SM нагрузка|500resources,10rooms,25000presence,1500messages,SIGKILL+10resume — успешно|
|Новые Rust regressions|13 archive redo + 2 rewrite crash boundaries + 14 SM journal, успешно|
|Native reference|8 module/storage + 1 TLS/SASL EXTERNAL federation, успешно|
|Archive >128 MiB|Отдельно выполненный ignored streaming test, успешно|
|Copy/restore и rewrite|Новый inode, потеря suffix, baseline0/nonzero, crash до/после rename — успешно|
|Все network regressions verify-local.sh|Успешно, включая Android, WSS/BOSH, PEP, push, MUC crash/SM resume, upload/migration|
|Slow durable IO|0/100 мс: 3 samples/scenario; 200 мс: 1 sample/scenario; exact MAM/carbons/queues и phase logs проверены|
|SIGKILL сразу после sender SM ACK|100 мс/sync, 3 сообщения, оба MAM архива, 4 resume, 9 replay, до reauth; успешно|
|Recovery sync EIO|WAL/redo: отказ handoff без удаления journal; WAL startup до listeners; retry и данные проверены|
|Offline storage-checkpoint|4 SM exports, 2 archives, durable journal removal, повтор идемпотентен|
|Общая нагрузка|500 TLS, 100 accounts, 5000 ping, 5000 messages, 10000 MAM, failures=[]|
|MUC+SM нагрузка|500 resources, 10 rooms, 25000 presence, 1500 deliveries, SIGKILL и 10 resume; успешно|
MUC+SM total 45.54с, peak sampled RSS 40.94MiB.
## Личная доставка
Воспроизведение личного push-stall: прежний0.8.1 за2с сохраняет только первое
сообщение и не отвечаетSMACK при зависшем postTLSfeatures gateway. Новый0.8.2
сохраняет оба и отвечаетh=4 в том же2сокне; тестовое окно не является latency SLA.
Offline ordering baseline проверен на0.8.0; его точный hash указан отдельно.
Медианы для 3 samples, при 200 мс — одна проба; числа в миллисекундах.
Bind2 authenticate→success median2742.353→1.976мс; metadataIQ2437.945→0.355мс.
Baseline0.8.0hash74882319… содержит тот же прежний scan path. Все raw samples,
IDs, timestamps и hashes — validation-logs-0.8.2/bind2-*.json.
|Sync delay / сценарий|Body 0.8.2 → 0.8.3|Sender SM ACK 0.8.2 → 0.8.3|Проб|
|---|---:|---:|---:|
|0 мс / 1:1|25.11 → 7.87|33.41 → 15.08|3|
|0 мс / PEP → 1:1|29.71 → 20.94|32.25 → 21.86|3|
|100 мс / 1:1|1232.47 → 419.68|1641.60 → 644.08|3|
|100 мс / PEP → 1:1|2683.29 → 1378.23|3195.21 → 1581.98|3|
|200 мс / 1:1|2836.64 → 2042.56|3643.30 → 2441.99|1|
|200 мс / PEP → 1:1|5782.02 → 2676.28|6595.92 → 3094.95|1|
Default inactive OMEMO доставлен за2.58–4.06мс, receipts7.36–35.56мс в checked
fixtures; explicit[] сохраняет удержание доactive. Намеренный CSI dwell2с
отдельно обозначен в отчёте и не выдаётся за время вычисления/доставки.
Каждый personalarchive содержит ровно100523records/user. Детали и настройка:
[PERSONAL-MESSAGE-LATENCY.md](PERSONAL-MESSAGE-LATENCY.md).
0 мс — отдельная последовательная quiet pair, без full verify. Финальные
100/200 мс выполнялись при фоновой работе verify; это не изолированный CPU benchmark.
Первый append включает создание/migration MAM journal. В обычном warm сообщении
6 sync вместо 16; первый — 12. Окна счётчиков могут включать heartbeat, а PEP
сценарий включает предшествующую publication. Реальные fsync/fdatasync сохранены;
interposer замедляет только isolated data_path, не меняет host mount/DNS.
Raw samples, hashes, sync counts и phase fields — validation-logs-0.8.3/*.json.
Release SHA-256: `130431025c4c7c2f72e28b77a31c83867f857ef8bb56d1f71b10e4b19d7caaf5`. Все новые final reports содержат этот hash.
Команда: `XMPP_LOAD_CHECK=1 bash scripts/verify-local.sh` с native env согласно
scripts/prosody_compat/README.md. Использованы CARGO_INCREMENTAL=0,
CARGO_PROFILE_DEV_DEBUG=0, CARGO_PROFILE_TEST_DEBUG=0. Перед итоговым прогоном
устранены stale package linker artifacts очисткой package build outputs;
исходники не менялись после финальной сборки. Воспроизведение прошло одним
последующим полным прогоном; preliminary compiler errors не являются test failures.
В production log 0.8.2 серверный handler занимал 4792–5549 мс; старых полей
недостаточно, чтобы доказать конкретный IO stage. Новый таймер разделяет MAM,
доставку, carbons и handled, без payload. Эти loopback результаты не доказывают
время отображения реальным Conversations/Monocles на wthome.ru.
Это loopback, не production клиента/диска/сети. Fsync и durable commit до
подтверждения сохранены; boundedpushqueue не обещает durable notification delivery.
SMglobalIOmutex, полные MAMqueries и maintenance остаются отдельной стоимостью.
9nativeignoredtests выполнены; остальные AF_UNIX/largearchiveignoredtests и
10GiBtransfers в этом локальном прогоне не запускались (полный CI entrypoint
по-прежнему включает их). Старые largeupload результаты не приписываются0.8.2.
Общие границы: [COMPATIBILITY.md](COMPATIBILITY.md).
## Нагрузка и сопоставимость
Сопоставимый повтор 0.8.2 в текущей среде: total 151.334 с,
join 104.226 с. Финальный 0.8.3: total 128.380 с,
join 94.493 с, restart 7.557 с,
peak RSS 40.87 MiB. По одной пробе; фоновые условия
различаются, вывод о CPU efficiency не делается. Исторические 45.54 с из другой
среды не являются baseline этого сравнения. Все счётчики доставки и replay
проверены, а не только открытие порта.
## Durability и native handoff
SM WAL и archive redo авторитетны после аварии. Recovery durably adopts полный
валидный journal перед публикацией; EIO regression выявляла отсутствие barrier
в предварительном кандидате a5f5b3a…, теперь проходит на final binary. Отчёты
preliminary-recovery-sync-* сохранены именно как предварительные, не результаты
0.8.2 или final. Изначальный native MUC fixture делал in-place append без передачи
владения: теперь он явно вызывает checkpoint_all перед оригинальным Prosody.
Неjournaled suffix при активном redo намеренно не объявляется external commit.
Copy/restore с новым inode сохраняет авторитет redo; внутренний rewrite
фиксирует старый native и удаление redo перед atomic replacement. Проверены
оба crash boundaries, потеря suffix после копирования и обе baseline длины.
Перед native writer/откатом требуется остановка и `storage-checkpoint CONFIG`.
[Формат, ограничения и эксплуатация](DURABLE-MESSAGE-IO.md).
Release SHA-256: `8ceb8de3a2d02bc4399b8ae817dff7e3c3fe9bff83dc0c6669b7f19210a3847a`.
Один final verify с XMPP_LOAD_CHECK=1 и native env; отдельно archive ignored test
и подробные latency/crash/EIO fixtures. Исторические результаты сохранены.
Оставшийся AF_UNIX ignored test не запускался; 10 GiB upload и реальный MinIO/AWS,
Docker build/run, GitHub/Gitea publish и настоящие APNs/FCM не повторялись.
Общие границы полной совместимости: [COMPATIBILITY.md](COMPATIBILITY.md).
+2
View File
@@ -0,0 +1,2 @@
Checking rust-xmpp v0.8.3 (/workspace/scratch/362577cdf2e0/recovered/rust-xmpp)
Finished `dev` profile [unoptimized] target(s) in 14.04s
@@ -0,0 +1,35 @@
{
"status": "pass",
"delay_ms_per_sync": 100,
"acknowledged_messages": 3,
"mam_records_per_account": [
3,
3
],
"resumed_resources": 4,
"replayed_personal_deliveries": 9,
"offline_checkpoint": {
"exported_sessions": 4,
"native_archives": 2,
"journals_removed": true,
"second_invocation_idempotent": true
},
"pending_before_reauthentication": [
2,
3,
4,
3
],
"sync_between_publication_and_sigkill": {
"total": 32,
"by_store_kind_op": {
"mam:directory:fsync": 2,
"mam:file:fsync": 10,
"pep:directory:fsync": 2,
"pep:file:fsync": 2,
"sm:file:fdatasync": 16
}
},
"binary_sha256": "8ceb8de3a2d02bc4399b8ae817dff7e3c3fe9bff83dc0c6669b7f19210a3847a",
"scope": "loopback STARTTLS; real delayed fsync/fdatasync; sender SM acknowledgement then SIGKILL; authoritative queues and MAM checked before reauthentication; at-least-once replay"
}
@@ -0,0 +1,9 @@
Compiling rust-xmpp v0.8.3 (/workspace/scratch/362577cdf2e0/recovered/rust-xmpp)
Finished `test` profile [unoptimized] target(s) in 3.26s
Running tests/archive_mam.rs (target/debug/deps/archive_mam-1243a5e0f6034fe2)
running 1 test
test archive_larger_than_128mib_streams ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 13 filtered out; finished in 2.76s
@@ -0,0 +1,62 @@
{
"clients": 500,
"accounts": 100,
"rooms": 10,
"message_rounds": 3,
"concurrency": 20,
"binary": "/tmp/xmpp-durable-muc-load-ssixqqk9/rust-xmpp",
"binary_sha256": "8ceb8de3a2d02bc4399b8ae817dff7e3c3fe9bff83dc0c6669b7f19210a3847a",
"before": {
"rss_kib": 9516,
"cpu_seconds": 0.01,
"fd_count": 12
},
"connect_seconds": 12.048,
"connect_latency": {
"samples": 500,
"median_ms": 398.044,
"p95_ms": 1086.236,
"max_ms": 1403.7
},
"phase": "completed",
"status": "pass",
"elapsed_seconds": 128.38,
"join_seconds": 94.493,
"joined": {
"rss_kib": 41828,
"cpu_seconds": 55.61,
"fd_count": 513
},
"join_presence_deliveries": 25000,
"slots_joined": {
"count": 500,
"bytes": 309790
},
"message_seconds": 9.585,
"room_messages_sent": 30,
"room_messages_delivered": 1500,
"before_kill": {
"rss_kib": 41740,
"cpu_seconds": 62.6,
"fd_count": 512
},
"slots_before_kill": {
"count": 500,
"bytes": 514030
},
"restart_seconds": 7.557,
"resumed_resources": 10,
"replayed_pending_room_messages": 10,
"membership_groupchat_deliveries_after_resume": 10,
"after_resume": {
"rss_kib": 20896,
"cpu_seconds": 7.09,
"fd_count": 22
},
"slots_after_resume": {
"count": 500,
"bytes": 671070
},
"total_seconds": 128.38,
"peak_rss_kib": 41852
}
@@ -0,0 +1,62 @@
{
"clients": 500,
"accounts": 100,
"rooms": 10,
"message_rounds": 3,
"concurrency": 20,
"binary": "/tmp/xmpp-durable-muc-load-wgcesopv/rust-xmpp",
"binary_sha256": "130431025c4c7c2f72e28b77a31c83867f857ef8bb56d1f71b10e4b19d7caaf5",
"before": {
"rss_kib": 9468,
"cpu_seconds": 0.0,
"fd_count": 12
},
"connect_seconds": 8.677,
"connect_latency": {
"samples": 500,
"median_ms": 337.216,
"p95_ms": 475.311,
"max_ms": 632.696
},
"phase": "completed",
"status": "pass",
"elapsed_seconds": 151.334,
"join_seconds": 104.226,
"joined": {
"rss_kib": 41468,
"cpu_seconds": 39.74,
"fd_count": 513
},
"join_presence_deliveries": 25000,
"slots_joined": {
"count": 500,
"bytes": 309790
},
"message_seconds": 17.857,
"room_messages_sent": 30,
"room_messages_delivered": 1500,
"before_kill": {
"rss_kib": 41464,
"cpu_seconds": 48.58,
"fd_count": 512
},
"slots_before_kill": {
"count": 500,
"bytes": 514030
},
"restart_seconds": 10.083,
"resumed_resources": 10,
"replayed_pending_room_messages": 10,
"membership_groupchat_deliveries_after_resume": 10,
"after_resume": {
"rss_kib": 20660,
"cpu_seconds": 9.73,
"fd_count": 22
},
"slots_after_resume": {
"count": 500,
"bytes": 671070
},
"total_seconds": 151.334,
"peak_rss_kib": 41476
}
@@ -0,0 +1,6 @@
{
"status": "fail",
"cases": [],
"binary_sha256": "a5f5b3a552be44fb8ab8b6525dc228bc2dc97f81aecfbc559e12cc29b3e8c00b",
"failure": ".rredo recovery skipped journal sync and falsely reported successful handoff"
}
@@ -0,0 +1,6 @@
{
"status": "fail",
"cases": [],
"binary_sha256": "a5f5b3a552be44fb8ab8b6525dc228bc2dc97f81aecfbc559e12cc29b3e8c00b",
"failure": ".wal recovery skipped journal sync and falsely reported successful handoff"
}
@@ -0,0 +1,95 @@
{
"binary_source": "/workspace/scratch/362577cdf2e0/recovered/rust-xmpp/target/release/rust-xmpp",
"binary_sha256": "8ceb8de3a2d02bc4399b8ae817dff7e3c3fe9bff83dc0c6669b7f19210a3847a",
"scope": "real loopback TCP/STARTTLS/SASL2 Bind2; isolated personal MAM fixture; no production latency claim",
"timing": "raw ordered samples; auth timer starts before authenticate and ends at parsed success; full timer includes TCP/STARTTLS/features; metadata IQ timer runs from send to parsed result",
"result": {
"status": "pass",
"seeded_personal_archive_records": 10000,
"archive_bytes": 2138890,
"archive_expires_after": "never",
"index_present_before_start": false,
"reconnect_samples": 2,
"expected_metadata": {
"start": {
"id": "seed-0",
"timestamp": "2026-01-01T00:00:00Z"
},
"end": {
"id": "seed-9999",
"timestamp": "2026-01-01T02:46:39Z"
}
},
"observed_metadata": [
{
"start": {
"id": "seed-0",
"timestamp": "2026-01-01T00:00:00Z"
},
"end": {
"id": "seed-9999",
"timestamp": "2026-01-01T02:46:39Z"
}
},
{
"start": {
"id": "seed-0",
"timestamp": "2026-01-01T00:00:00Z"
},
"end": {
"id": "seed-9999",
"timestamp": "2026-01-01T02:46:39Z"
}
}
],
"mam_metadata_iq": {
"samples_ms": [
1.066574000105902,
0.6786549997741531
],
"median_ms": 0.8726144999400276,
"p95_ms": 1.066574000105902,
"max_ms": 1.066574000105902
},
"observed_iq_metadata": [
{
"start": {
"id": "seed-0",
"timestamp": "2026-01-01T00:00:00Z"
},
"end": {
"id": "seed-9999",
"timestamp": "2026-01-01T02:46:39Z"
}
},
{
"start": {
"id": "seed-0",
"timestamp": "2026-01-01T00:00:00Z"
},
"end": {
"id": "seed-9999",
"timestamp": "2026-01-01T02:46:39Z"
}
}
],
"sasl2_bind2_success": {
"samples_ms": [
5.694160000075499,
4.350195999904827
],
"median_ms": 5.022177999990163,
"p95_ms": 5.694160000075499,
"max_ms": 5.694160000075499
},
"tcp_starttls_to_bind2_success": {
"samples_ms": [
51.93691700014824,
9.144003000074008
],
"median_ms": 30.540460000111125,
"p95_ms": 51.93691700014824,
"max_ms": 51.93691700014824
}
}
}
@@ -0,0 +1,418 @@
{
"binary_sha256": "8ceb8de3a2d02bc4399b8ae817dff7e3c3fe9bff83dc0c6669b7f19210a3847a",
"scope": "loopback STARTTLS; fixture only; forced CSI dwell explicitly separated",
"cases": [
{
"active": {
"delivery": {
"samples": 1,
"median_ms": 42.84763399982694,
"p95_ms": 42.84763399982694,
"max_ms": 42.84763399982694,
"samples_ms": [
42.84763399982694
]
},
"sender_sm_handled": {
"samples": 1,
"median_ms": 41.45799199977773,
"p95_ms": 41.45799199977773,
"max_ms": 41.45799199977773,
"samples_ms": [
41.45799199977773
]
},
"client_receipt_end_to_end": {
"samples": 1,
"median_ms": 51.320845000191184,
"p95_ms": 51.320845000191184,
"max_ms": 51.320845000191184,
"samples_ms": [
51.320845000191184
]
},
"receipt_return_leg": {
"samples": 1,
"median_ms": 8.362257000044337,
"p95_ms": 8.362257000044337,
"max_ms": 8.362257000044337,
"samples_ms": [
8.362257000044337
]
}
},
"inactive": {
"delivery": {
"samples": 1,
"median_ms": 7.461921999947663,
"p95_ms": 7.461921999947663,
"max_ms": 7.461921999947663,
"samples_ms": [
7.461921999947663
]
},
"sender_sm_handled": {
"samples": 1,
"median_ms": 6.771670000034646,
"p95_ms": 6.771670000034646,
"max_ms": 6.771670000034646,
"samples_ms": [
6.771670000034646
]
},
"client_receipt_end_to_end": {
"samples": 1,
"median_ms": 12.700967000000674,
"p95_ms": 12.700967000000674,
"max_ms": 12.700967000000674,
"samples_ms": [
12.700967000000674
]
},
"receipt_return_leg": {
"samples": 1,
"median_ms": 5.201973000112048,
"p95_ms": 5.201973000112048,
"max_ms": 5.201973000112048,
"samples_ms": [
5.201973000112048
]
}
},
"receipt_only-active": {
"delivery_ms": 23.464398000214715,
"sender_sm_handled_ms": 23.388774000068224,
"durably_csi_buffered": false,
"forced_dwell_seconds": 0,
"after_activation_ms": null
},
"receipt_only-inactive": {
"delivery_ms": 11.619346000316,
"sender_sm_handled_ms": 11.170642000251974,
"durably_csi_buffered": false,
"forced_dwell_seconds": 0,
"after_activation_ms": null
},
"omemo_legacy_only-active": {
"delivery_ms": 3.3123490002253675,
"sender_sm_handled_ms": 3.2682549999663024,
"durably_csi_buffered": false,
"forced_dwell_seconds": 0,
"after_activation_ms": null
},
"omemo_legacy_only-inactive": {
"delivery_ms": 5.355494000014005,
"sender_sm_handled_ms": 4.585807000239583,
"durably_csi_buffered": false,
"forced_dwell_seconds": 0,
"after_activation_ms": null
},
"omemo_2_only-active": {
"delivery_ms": 6.6929370000252675,
"sender_sm_handled_ms": 5.942287999914697,
"durably_csi_buffered": false,
"forced_dwell_seconds": 0,
"after_activation_ms": null
},
"omemo_2_only-inactive": {
"delivery_ms": 7.484531000045536,
"sender_sm_handled_ms": 7.103434999862657,
"durably_csi_buffered": false,
"forced_dwell_seconds": 0,
"after_activation_ms": null
},
"omemo_with_eme-active": {
"delivery_ms": 8.187372000065807,
"sender_sm_handled_ms": 7.642809000117268,
"durably_csi_buffered": false,
"forced_dwell_seconds": 0,
"after_activation_ms": null
},
"omemo_with_eme-inactive": {
"delivery_ms": 8.972958999947878,
"sender_sm_handled_ms": 8.508876000178134,
"durably_csi_buffered": false,
"forced_dwell_seconds": 0,
"after_activation_ms": null
},
"marker_received-active": {
"delivery_ms": 7.674009000311344,
"sender_sm_handled_ms": 7.3800410000330885,
"durably_csi_buffered": false,
"forced_dwell_seconds": 0,
"after_activation_ms": null
},
"marker_received-inactive": {
"delivery_ms": 5.613406000065879,
"sender_sm_handled_ms": 5.646823999995831,
"durably_csi_buffered": false,
"forced_dwell_seconds": 0,
"after_activation_ms": null
},
"marker_displayed-active": {
"delivery_ms": 5.180439000014303,
"sender_sm_handled_ms": 4.853748000186897,
"durably_csi_buffered": false,
"forced_dwell_seconds": 0,
"after_activation_ms": null
},
"marker_displayed-inactive": {
"delivery_ms": 8.705914999609377,
"sender_sm_handled_ms": 8.28981999984535,
"durably_csi_buffered": false,
"forced_dwell_seconds": 0,
"after_activation_ms": null
},
"marker_acknowledged-active": {
"delivery_ms": 6.910242000230937,
"sender_sm_handled_ms": 6.799871000112034,
"durably_csi_buffered": false,
"forced_dwell_seconds": 0,
"after_activation_ms": null
},
"marker_acknowledged-inactive": {
"delivery_ms": 8.707511000011436,
"sender_sm_handled_ms": 8.398837999720854,
"durably_csi_buffered": false,
"forced_dwell_seconds": 0,
"after_activation_ms": null
},
"low_priority_headline-active": {
"delivery_ms": 4.267847999926744,
"sender_sm_handled_ms": 4.236566000145103,
"durably_csi_buffered": false,
"forced_dwell_seconds": 0,
"after_activation_ms": null
},
"low_priority_headline-inactive": {
"delivery_ms": 108.03854200003116,
"sender_sm_handled_ms": 2.853955999853497,
"durably_csi_buffered": true,
"forced_dwell_seconds": 0.1,
"after_activation_ms": 3.106009000021004
},
"sm_backlog": {
"seeded_messages": 30,
"durable_pending_before_sample": 30,
"delivery_ms": 8.070619000136503,
"sender_sm_handled_ms": 7.959626000229036
},
"status": "pass",
"final_personal_mam_records_per_user": [
1045,
1045
],
"csi_policy": "default",
"baseline_expect_held": false,
"roster_contacts_per_user": 0,
"seeded_personal_mam_records_per_user": 1000,
"archive_policy": "always"
},
{
"active": {
"delivery": {
"samples": 1,
"median_ms": 9.351153999887174,
"p95_ms": 9.351153999887174,
"max_ms": 9.351153999887174,
"samples_ms": [
9.351153999887174
]
},
"sender_sm_handled": {
"samples": 1,
"median_ms": 9.169040999950084,
"p95_ms": 9.169040999950084,
"max_ms": 9.169040999950084,
"samples_ms": [
9.169040999950084
]
},
"client_receipt_end_to_end": {
"samples": 1,
"median_ms": 13.487032000284671,
"p95_ms": 13.487032000284671,
"max_ms": 13.487032000284671,
"samples_ms": [
13.487032000284671
]
},
"receipt_return_leg": {
"samples": 1,
"median_ms": 4.101098000319325,
"p95_ms": 4.101098000319325,
"max_ms": 4.101098000319325,
"samples_ms": [
4.101098000319325
]
}
},
"inactive": {
"delivery": {
"samples": 1,
"median_ms": 5.198949999794422,
"p95_ms": 5.198949999794422,
"max_ms": 5.198949999794422,
"samples_ms": [
5.198949999794422
]
},
"sender_sm_handled": {
"samples": 1,
"median_ms": 5.164645999684581,
"p95_ms": 5.164645999684581,
"max_ms": 5.164645999684581,
"samples_ms": [
5.164645999684581
]
},
"client_receipt_end_to_end": {
"samples": 1,
"median_ms": 13.508577999800764,
"p95_ms": 13.508577999800764,
"max_ms": 13.508577999800764,
"samples_ms": [
13.508577999800764
]
},
"receipt_return_leg": {
"samples": 1,
"median_ms": 8.226426999954128,
"p95_ms": 8.226426999954128,
"max_ms": 8.226426999954128,
"samples_ms": [
8.226426999954128
]
}
},
"receipt_only-active": {
"delivery_ms": 8.37234799973885,
"sender_sm_handled_ms": 7.964516999891202,
"durably_csi_buffered": false,
"forced_dwell_seconds": 0,
"after_activation_ms": null
},
"receipt_only-inactive": {
"delivery_ms": 109.20343799989496,
"sender_sm_handled_ms": 5.452117000004364,
"durably_csi_buffered": true,
"forced_dwell_seconds": 0.1,
"after_activation_ms": 2.879265000046871
},
"omemo_legacy_only-active": {
"delivery_ms": 4.961447999903612,
"sender_sm_handled_ms": 4.207620999750361,
"durably_csi_buffered": false,
"forced_dwell_seconds": 0,
"after_activation_ms": null
},
"omemo_legacy_only-inactive": {
"delivery_ms": 107.77542400001039,
"sender_sm_handled_ms": 4.299592999814195,
"durably_csi_buffered": true,
"forced_dwell_seconds": 0.1,
"after_activation_ms": 1.5704200000072888
},
"omemo_2_only-active": {
"delivery_ms": 3.2654749998073385,
"sender_sm_handled_ms": 3.3216599999832397,
"durably_csi_buffered": false,
"forced_dwell_seconds": 0,
"after_activation_ms": null
},
"omemo_2_only-inactive": {
"delivery_ms": 109.47085399993739,
"sender_sm_handled_ms": 5.282463000185089,
"durably_csi_buffered": true,
"forced_dwell_seconds": 0.1,
"after_activation_ms": 2.073672999813425
},
"omemo_with_eme-active": {
"delivery_ms": 6.262568000238389,
"sender_sm_handled_ms": 6.371549000050436,
"durably_csi_buffered": false,
"forced_dwell_seconds": 0,
"after_activation_ms": null
},
"omemo_with_eme-inactive": {
"delivery_ms": 5.960880999737128,
"sender_sm_handled_ms": 5.667837000146392,
"durably_csi_buffered": false,
"forced_dwell_seconds": 0,
"after_activation_ms": null
},
"marker_received-active": {
"delivery_ms": 7.435425000039686,
"sender_sm_handled_ms": 7.0634520002386125,
"durably_csi_buffered": false,
"forced_dwell_seconds": 0,
"after_activation_ms": null
},
"marker_received-inactive": {
"delivery_ms": 110.35115000004225,
"sender_sm_handled_ms": 5.86408199978905,
"durably_csi_buffered": true,
"forced_dwell_seconds": 0.1,
"after_activation_ms": 2.434945000004518
},
"marker_displayed-active": {
"delivery_ms": 3.6287610000727,
"sender_sm_handled_ms": 3.696032999869203,
"durably_csi_buffered": false,
"forced_dwell_seconds": 0,
"after_activation_ms": null
},
"marker_displayed-inactive": {
"delivery_ms": 112.26732199975231,
"sender_sm_handled_ms": 8.923948999836284,
"durably_csi_buffered": true,
"forced_dwell_seconds": 0.1,
"after_activation_ms": 1.43316000003324
},
"marker_acknowledged-active": {
"delivery_ms": 4.8418340002172044,
"sender_sm_handled_ms": 4.916578000120353,
"durably_csi_buffered": false,
"forced_dwell_seconds": 0,
"after_activation_ms": null
},
"marker_acknowledged-inactive": {
"delivery_ms": 110.98447399990619,
"sender_sm_handled_ms": 5.764318000274216,
"durably_csi_buffered": true,
"forced_dwell_seconds": 0.1,
"after_activation_ms": 3.3109219998550543
},
"low_priority_headline-active": {
"delivery_ms": 4.907228000320174,
"sender_sm_handled_ms": 4.593587000272237,
"durably_csi_buffered": false,
"forced_dwell_seconds": 0,
"after_activation_ms": null
},
"low_priority_headline-inactive": {
"delivery_ms": 106.62631800005329,
"sender_sm_handled_ms": 2.990170999964903,
"durably_csi_buffered": true,
"forced_dwell_seconds": 0.1,
"after_activation_ms": 1.6857880000316072
},
"sm_backlog": {
"seeded_messages": 30,
"durable_pending_before_sample": 30,
"delivery_ms": 8.221272999890061,
"sender_sm_handled_ms": 8.186153000224294
},
"status": "pass",
"final_personal_mam_records_per_user": [
1045,
1045
],
"csi_policy": "native",
"baseline_expect_held": false,
"roster_contacts_per_user": 0,
"seeded_personal_mam_records_per_user": 1000,
"archive_policy": "always"
}
]
}
@@ -0,0 +1,25 @@
{
"status": "pass",
"recipient_state": "hibernating",
"durable_pending_at_gateway_stream": {
"push-first": true,
"push-second": true
},
"observation_seconds": 2,
"elapsed_seconds": 2.013597706999917,
"gateway_post_tls_stream_observed": true,
"gateway_post_tls_stream_at_bound": true,
"blocked_stage": "post-tls-features",
"durable_pending": {
"push-first": true,
"push-second": true
},
"sender_sm_ack_h": [
4
],
"sender_inputs": 4,
"sender_handled_before": 2,
"binary_version": "rust-xmpp 0.8.3 \u2014 experimental XMPP runtime",
"binary_sha256": "8ceb8de3a2d02bc4399b8ae817dff7e3c3fe9bff83dc0c6669b7f19210a3847a",
"scope": "loopback TLS fixture; stalled external XMPP push service; no APNs/FCM"
}
@@ -0,0 +1,25 @@
{
"status": "pass",
"recipient_state": "offline",
"durable_pending_at_gateway_stream": {
"push-first": true,
"push-second": true
},
"observation_seconds": 2,
"elapsed_seconds": 2.1132061280000016,
"gateway_post_tls_stream_observed": true,
"gateway_post_tls_stream_at_bound": true,
"blocked_stage": "post-tls-features",
"durable_pending": {
"push-first": true,
"push-second": true
},
"sender_sm_ack_h": [
4
],
"sender_inputs": 4,
"sender_handled_before": 2,
"binary_version": "rust-xmpp 0.8.3 \u2014 experimental XMPP runtime",
"binary_sha256": "8ceb8de3a2d02bc4399b8ae817dff7e3c3fe9bff83dc0c6669b7f19210a3847a",
"scope": "loopback TLS fixture; stalled external XMPP push service; no APNs/FCM"
}
@@ -0,0 +1,24 @@
{
"status": "pass",
"cases": [
{
"suffix": ".wal",
"status": "pass",
"checkpoint_rejected_sync_failure": true,
"journals_preserved_on_failure": 4,
"serve_rejected_before_listeners": true,
"clean_retry_preserved_sessions": 4,
"clean_retry_preserved_archives": 2
},
{
"suffix": ".rredo",
"status": "pass",
"checkpoint_rejected_sync_failure": true,
"journals_preserved_on_failure": 2,
"serve_rejected_before_listeners": false,
"clean_retry_preserved_sessions": 4,
"clean_retry_preserved_archives": 2
}
],
"binary_sha256": "8ceb8de3a2d02bc4399b8ae817dff7e3c3fe9bff83dc0c6669b7f19210a3847a"
}
@@ -0,0 +1,2 @@
Compiling rust-xmpp v0.8.3 (/workspace/scratch/362577cdf2e0/recovered/rust-xmpp)
Finished `release` profile [optimized] target(s) in 1m 43s
@@ -0,0 +1,99 @@
{
"binary_sha256": "8ceb8de3a2d02bc4399b8ae817dff7e3c3fe9bff83dc0c6669b7f19210a3847a",
"scope": "loopback STARTTLS; four SM resources/two accounts; MAM + pending avatar metadata PEP; fixture-only fsync/fdatasync including data directories; real sync retained; operation windows include background SM heartbeat",
"cases": [
{
"samples": [
{
"phase": "settled",
"round": 0,
"delivery_ms": {
"direct": 2042.56345,
"sent": 2239.283932,
"received": 2442.564925
},
"sender_sm_handled_ms": 2441.985416,
"publication_plus_delivery_ms": 2442.641984,
"sync": {
"total": 12,
"by_store_kind_op": {
"mam:directory:fsync": 2,
"mam:file:fsync": 6,
"sm:file:fdatasync": 4
}
},
"pending_per_resource": [
1,
2,
2,
2
]
},
{
"phase": "avatar_pending",
"round": 0,
"delivery_ms": {
"direct": 2676.283903,
"sent": 2476.200907,
"received": 3095.924978
},
"sender_sm_handled_ms": 3094.949323,
"publication_plus_delivery_ms": 3096.115223,
"sync": {
"total": 15,
"by_store_kind_op": {
"mam:file:fsync": 2,
"pep:directory:fsync": 2,
"pep:file:fsync": 2,
"sm:file:fdatasync": 9
}
},
"pending_per_resource": [
3,
2,
3,
2
]
}
],
"mam_records_per_account": [
102,
102
],
"status": "pass",
"delay_ms_per_sync": 200,
"server_message_processing_slow_events": [
{
"duration_ms": 2440,
"route": "local",
"pre_routing_ms": 0,
"sender_mam_ms": 813,
"recipient_mam_ms": 816,
"delivery_ms": 202,
"carbons_ms": 404,
"offline_push_ms": 0,
"handled_ms": 202,
"target_count": 1,
"carbon_count": 2
},
{
"duration_ms": 1259,
"route": "local",
"pre_routing_ms": 0,
"sender_mam_ms": 204,
"recipient_mam_ms": 208,
"delivery_ms": 223,
"carbons_ms": 410,
"offline_push_ms": 0,
"handled_ms": 211,
"target_count": 1,
"carbon_count": 2
}
],
"server_message_processing_slow_ms": [
2440,
1259
]
}
]
}
@@ -0,0 +1,74 @@
{
"binary_sha256": "130431025c4c7c2f72e28b77a31c83867f857ef8bb56d1f71b10e4b19d7caaf5",
"scope": "loopback STARTTLS; four SM resources/two accounts; MAM + pending avatar PEP; fixture-only fsync/fdatasync including data directories; real sync retained",
"cases": [
{
"samples": [
{
"phase": "settled",
"round": 0,
"delivery_ms": {
"direct": 2836.63993,
"sent": 3238.840305,
"received": 3643.707041
},
"sender_sm_handled_ms": 3643.297905,
"publication_plus_delivery_ms": 3643.772507,
"sync": {
"total": 24,
"by_store_kind_op": {
"mam:directory:fsync": 4,
"mam:file:fsync": 4,
"sm:directory:fsync": 8,
"sm:file:fsync": 8
}
},
"pending_per_resource": [
1,
2,
2,
2
]
},
{
"phase": "avatar_pending",
"round": 0,
"delivery_ms": {
"direct": 5782.018326,
"sent": 5384.85421,
"received": 6596.874338
},
"sender_sm_handled_ms": 6595.924675,
"publication_plus_delivery_ms": 6597.492339,
"sync": {
"total": 30,
"by_store_kind_op": {
"mam:directory:fsync": 4,
"mam:file:fsync": 4,
"pep:directory:fsync": 2,
"pep:file:fsync": 2,
"sm:directory:fsync": 9,
"sm:file:fsync": 9
}
},
"pending_per_resource": [
3,
2,
3,
2
]
}
],
"mam_records_per_account": [
102,
102
],
"status": "pass",
"delay_ms_per_sync": 200,
"server_message_processing_slow_ms": [
3245,
3235
]
}
]
}
@@ -0,0 +1,255 @@
{
"binary_sha256": "8ceb8de3a2d02bc4399b8ae817dff7e3c3fe9bff83dc0c6669b7f19210a3847a",
"scope": "loopback STARTTLS; four SM resources/two accounts; MAM + pending avatar metadata PEP; fixture-only fsync/fdatasync including data directories; real sync retained; operation windows include background SM heartbeat",
"cases": [
{
"samples": [
{
"phase": "settled",
"round": 0,
"delivery_ms": {
"direct": 1083.729337,
"sent": 1183.535171,
"received": 1301.736052
},
"sender_sm_handled_ms": 1300.213796,
"publication_plus_delivery_ms": 1309.067665,
"sync": {
"total": 12,
"by_store_kind_op": {
"mam:directory:fsync": 2,
"mam:file:fsync": 6,
"sm:file:fdatasync": 4
}
},
"pending_per_resource": [
1,
2,
2,
2
]
},
{
"phase": "settled",
"round": 1,
"delivery_ms": {
"direct": 416.413847,
"sent": 521.445561,
"received": 622.692061
},
"sender_sm_handled_ms": 622.557259,
"publication_plus_delivery_ms": 627.341892,
"sync": {
"total": 6,
"by_store_kind_op": {
"mam:file:fsync": 2,
"sm:file:fdatasync": 4
}
},
"pending_per_resource": [
1,
2,
2,
2
]
},
{
"phase": "settled",
"round": 2,
"delivery_ms": {
"direct": 419.683064,
"sent": 551.764241,
"received": 644.751777
},
"sender_sm_handled_ms": 644.082891,
"publication_plus_delivery_ms": 644.882621,
"sync": {
"total": 6,
"by_store_kind_op": {
"mam:file:fsync": 2,
"sm:file:fdatasync": 4
}
},
"pending_per_resource": [
1,
2,
2,
2
]
},
{
"phase": "avatar_pending",
"round": 0,
"delivery_ms": {
"direct": 1376.989787,
"sent": 1273.220821,
"received": 1478.990457
},
"sender_sm_handled_ms": 1477.870242,
"publication_plus_delivery_ms": 1479.132408,
"sync": {
"total": 14,
"by_store_kind_op": {
"mam:file:fsync": 2,
"pep:directory:fsync": 2,
"pep:file:fsync": 2,
"sm:file:fdatasync": 8
}
},
"pending_per_resource": [
3,
2,
3,
2
]
},
{
"phase": "avatar_pending",
"round": 1,
"delivery_ms": {
"direct": 1523.59144,
"sent": 1288.285577,
"received": 1626.311997
},
"sender_sm_handled_ms": 1626.005979,
"publication_plus_delivery_ms": 1626.574287,
"sync": {
"total": 14,
"by_store_kind_op": {
"mam:file:fsync": 2,
"pep:directory:fsync": 2,
"pep:file:fsync": 2,
"sm:file:fdatasync": 8
}
},
"pending_per_resource": [
3,
2,
3,
2
]
},
{
"phase": "avatar_pending",
"round": 2,
"delivery_ms": {
"direct": 1378.231158,
"sent": 1276.210346,
"received": 1582.305858
},
"sender_sm_handled_ms": 1581.975429,
"publication_plus_delivery_ms": 1582.463448,
"sync": {
"total": 15,
"by_store_kind_op": {
"mam:file:fsync": 2,
"pep:directory:fsync": 2,
"pep:file:fsync": 2,
"sm:file:fdatasync": 9
}
},
"pending_per_resource": [
3,
2,
3,
2
]
}
],
"mam_records_per_account": [
106,
106
],
"status": "pass",
"delay_ms_per_sync": 100,
"server_message_processing_slow_events": [
{
"duration_ms": 1298,
"route": "local",
"pre_routing_ms": 0,
"sender_mam_ms": 421,
"recipient_mam_ms": 416,
"delivery_ms": 109,
"carbons_ms": 232,
"offline_push_ms": 0,
"handled_ms": 117,
"target_count": 1,
"carbon_count": 2
},
{
"duration_ms": 621,
"route": "local",
"pre_routing_ms": 0,
"sender_mam_ms": 101,
"recipient_mam_ms": 104,
"delivery_ms": 104,
"carbons_ms": 206,
"offline_push_ms": 0,
"handled_ms": 103,
"target_count": 1,
"carbon_count": 2
},
{
"duration_ms": 638,
"route": "local",
"pre_routing_ms": 0,
"sender_mam_ms": 101,
"recipient_mam_ms": 102,
"delivery_ms": 104,
"carbons_ms": 219,
"offline_push_ms": 1,
"handled_ms": 108,
"target_count": 1,
"carbon_count": 2
},
{
"duration_ms": 625,
"route": "local",
"pre_routing_ms": 1,
"sender_mam_ms": 104,
"recipient_mam_ms": 102,
"delivery_ms": 106,
"carbons_ms": 208,
"offline_push_ms": 0,
"handled_ms": 101,
"target_count": 1,
"carbon_count": 2
},
{
"duration_ms": 756,
"route": "local",
"pre_routing_ms": 1,
"sender_mam_ms": 105,
"recipient_mam_ms": 103,
"delivery_ms": 102,
"carbons_ms": 340,
"offline_push_ms": 0,
"handled_ms": 102,
"target_count": 1,
"carbon_count": 2
},
{
"duration_ms": 617,
"route": "local",
"pre_routing_ms": 1,
"sender_mam_ms": 102,
"recipient_mam_ms": 104,
"delivery_ms": 101,
"carbons_ms": 204,
"offline_push_ms": 0,
"handled_ms": 101,
"target_count": 1,
"carbon_count": 2
}
],
"server_message_processing_slow_ms": [
1298,
621,
638,
625,
756,
617
]
}
]
}
@@ -0,0 +1,350 @@
{
"binary_sha256": "130431025c4c7c2f72e28b77a31c83867f857ef8bb56d1f71b10e4b19d7caaf5",
"scope": "loopback STARTTLS; four SM resources/two accounts; MAM + pending avatar PEP; fixture-only fsync/fdatasync including data directories; real sync retained",
"cases": [
{
"samples": [
{
"phase": "settled",
"round": 0,
"delivery_ms": {
"direct": 13.745165,
"sent": 16.132819,
"received": 18.746494
},
"sender_sm_handled_ms": 18.699594,
"publication_plus_delivery_ms": 18.823329,
"sync": {
"total": 16,
"by_store_kind_op": {
"mam:directory:fsync": 4,
"mam:file:fsync": 4,
"sm:directory:fsync": 4,
"sm:file:fsync": 4
}
},
"pending_per_resource": [
1,
2,
2,
2
]
},
{
"phase": "settled",
"round": 1,
"delivery_ms": {
"direct": 15.636949,
"sent": 18.138746,
"received": 20.807559
},
"sender_sm_handled_ms": 20.705943,
"publication_plus_delivery_ms": 20.843968,
"sync": {
"total": 16,
"by_store_kind_op": {
"mam:directory:fsync": 4,
"mam:file:fsync": 4,
"sm:directory:fsync": 4,
"sm:file:fsync": 4
}
},
"pending_per_resource": [
1,
2,
2,
2
]
},
{
"phase": "settled",
"round": 2,
"delivery_ms": {
"direct": 21.358818,
"sent": 24.788203,
"received": 26.125405
},
"sender_sm_handled_ms": 26.090729,
"publication_plus_delivery_ms": 26.187115,
"sync": {
"total": 16,
"by_store_kind_op": {
"mam:directory:fsync": 4,
"mam:file:fsync": 4,
"sm:directory:fsync": 4,
"sm:file:fsync": 4
}
},
"pending_per_resource": [
1,
2,
2,
2
]
},
{
"phase": "avatar_pending",
"round": 0,
"delivery_ms": {
"direct": 32.67965,
"sent": 29.361139,
"received": 35.870217
},
"sender_sm_handled_ms": 35.819252,
"publication_plus_delivery_ms": 35.991777,
"sync": {
"total": 28,
"by_store_kind_op": {
"mam:directory:fsync": 4,
"mam:file:fsync": 4,
"pep:directory:fsync": 2,
"pep:file:fsync": 2,
"sm:directory:fsync": 8,
"sm:file:fsync": 8
}
},
"pending_per_resource": [
3,
2,
3,
2
]
},
{
"phase": "avatar_pending",
"round": 1,
"delivery_ms": {
"direct": 30.47626,
"sent": 28.128456,
"received": 32.654735
},
"sender_sm_handled_ms": 32.540092,
"publication_plus_delivery_ms": 32.738534,
"sync": {
"total": 28,
"by_store_kind_op": {
"mam:directory:fsync": 4,
"mam:file:fsync": 4,
"pep:directory:fsync": 2,
"pep:file:fsync": 2,
"sm:directory:fsync": 8,
"sm:file:fsync": 8
}
},
"pending_per_resource": [
3,
2,
3,
2
]
},
{
"phase": "avatar_pending",
"round": 2,
"delivery_ms": {
"direct": 30.492529,
"sent": 28.027238,
"received": 33.697165
},
"sender_sm_handled_ms": 33.576139,
"publication_plus_delivery_ms": 33.786933,
"sync": {
"total": 28,
"by_store_kind_op": {
"mam:directory:fsync": 4,
"mam:file:fsync": 4,
"pep:directory:fsync": 2,
"pep:file:fsync": 2,
"sm:directory:fsync": 8,
"sm:file:fsync": 8
}
},
"pending_per_resource": [
3,
2,
3,
2
]
}
],
"mam_records_per_account": [
106,
106
],
"status": "pass",
"delay_ms_per_sync": 0
},
{
"samples": [
{
"phase": "settled",
"round": 0,
"delivery_ms": {
"direct": 1226.407308,
"sent": 1431.404759,
"received": 1837.301696
},
"sender_sm_handled_ms": 1633.73631,
"publication_plus_delivery_ms": 1837.391548,
"sync": {
"total": 18,
"by_store_kind_op": {
"mam:directory:fsync": 4,
"mam:file:fsync": 4,
"sm:directory:fsync": 5,
"sm:file:fsync": 5
}
},
"pending_per_resource": [
1,
2,
2,
2
]
},
{
"phase": "settled",
"round": 1,
"delivery_ms": {
"direct": 1234.414585,
"sent": 1436.607311,
"received": 1642.84668
},
"sender_sm_handled_ms": 1641.598264,
"publication_plus_delivery_ms": 1642.913856,
"sync": {
"total": 16,
"by_store_kind_op": {
"mam:directory:fsync": 4,
"mam:file:fsync": 4,
"sm:directory:fsync": 4,
"sm:file:fsync": 4
}
},
"pending_per_resource": [
1,
2,
2,
2
]
},
{
"phase": "settled",
"round": 2,
"delivery_ms": {
"direct": 1232.468024,
"sent": 1441.824206,
"received": 1872.009731
},
"sender_sm_handled_ms": 1652.92941,
"publication_plus_delivery_ms": 1872.108448,
"sync": {
"total": 18,
"by_store_kind_op": {
"mam:directory:fsync": 4,
"mam:file:fsync": 4,
"sm:directory:fsync": 5,
"sm:file:fsync": 5
}
},
"pending_per_resource": [
1,
2,
2,
2
]
},
{
"phase": "avatar_pending",
"round": 0,
"delivery_ms": {
"direct": 3209.381557,
"sent": 3419.876568,
"received": 3614.69826
},
"sender_sm_handled_ms": 3613.565949,
"publication_plus_delivery_ms": 3615.484237,
"sync": {
"total": 28,
"by_store_kind_op": {
"mam:directory:fsync": 4,
"mam:file:fsync": 4,
"pep:directory:fsync": 2,
"pep:file:fsync": 2,
"sm:directory:fsync": 8,
"sm:file:fsync": 8
}
},
"pending_per_resource": [
3,
2,
3,
2
]
},
{
"phase": "avatar_pending",
"round": 1,
"delivery_ms": {
"direct": 2665.684412,
"sent": 2461.378505,
"received": 2870.784696
},
"sender_sm_handled_ms": 2870.455915,
"publication_plus_delivery_ms": 2871.000834,
"sync": {
"total": 28,
"by_store_kind_op": {
"mam:directory:fsync": 4,
"mam:file:fsync": 4,
"pep:directory:fsync": 2,
"pep:file:fsync": 2,
"sm:directory:fsync": 8,
"sm:file:fsync": 8
}
},
"pending_per_resource": [
3,
2,
3,
2
]
},
{
"phase": "avatar_pending",
"round": 2,
"delivery_ms": {
"direct": 2683.292251,
"sent": 2475.225974,
"received": 3636.635597
},
"sender_sm_handled_ms": 3195.209226,
"publication_plus_delivery_ms": 3640.372412,
"sync": {
"total": 30,
"by_store_kind_op": {
"mam:directory:fsync": 4,
"mam:file:fsync": 4,
"pep:directory:fsync": 2,
"pep:file:fsync": 2,
"sm:directory:fsync": 9,
"sm:file:fsync": 9
}
},
"pending_per_resource": [
3,
2,
3,
2
]
}
],
"mam_records_per_account": [
106,
106
],
"status": "pass",
"delay_ms_per_sync": 100
}
]
}
+111
View File
@@ -0,0 +1,111 @@
Compiling rust-xmpp v0.8.3 (/workspace/scratch/362577cdf2e0/recovered/rust-xmpp)
Finished `test` profile [unoptimized] target(s) in 29.67s
Running unittests src/lib.rs (target/debug/deps/rust_xmpp-792bf902c86621ec)
running 50 tests
test csi::checkpoint_tests::failed_queue_checkpoints_restore_append_and_drain_without_copying_queue ... ok
test federation::tests::external_must_be_in_the_advertised_mechanisms ... ok
test federation::tests::starttls_must_be_an_immediate_stream_feature ... ok
test csi::checkpoint_tests::only_queue_changes_require_a_checkpoint ... ok
test federation::tests::federation_domains_are_dns_names_and_case_insensitive ... ok
test federation::tests::stream_restarts_compare_canonical_domains ... ok
test http_config::tests::literal_pchars_and_percent_encoding_are_supported ... ok
test http_config::tests::invalid_paths_types_urls_and_conflicts_are_errors ... ok
test http_config::tests::external_prefix_and_standard_port ... ok
test http_config::tests::routes_hosts_and_default_without_overriding_known_hosts ... ok
test http_proxy::tests::config_validation_and_network_boundaries ... ok
test http_proxy::tests::empty_native_lua_table_disables_proxy_trust ... ok
test http_config::tests::mounts_inherit_per_app_and_expand_virtual_host ... ok
test http_proxy::tests::forwarded_tls_termination_cannot_upgrade_a_plaintext_chain_hop ... ok
test http_proxy::tests::malformed_forwarded_and_unknown_identifiers_are_ignored ... ok
test http_proxy::tests::untrusted_socket_ignores_spoofed_headers ... ok
test http_proxy::tests::legacy_chain_uses_rightmost_untrusted_and_tls_is_preserved ... ok
test http_proxy::tests::forwarded_mode_stops_at_first_untrusted_hop ... ok
test http_transport::tests::bosh_processing_capacity_is_bounded ... ok
test http_transport::tests::configured_mount_host_origin_and_secure_dispatch ... ok
test http_transport::tests::independent_framing ... ok
test http_transport::tests::websocket_preserves_inherited_namespaces_and_spaced_declarations ... ok
test logging::tests::console_aliases_share_one_sink_with_combined_levels ... ok
test sasl::tests::reject_malformed_and_downgrade ... ok
test archive::redo_rewrite_tests::crash_gap_after_redo_retirement_before_native_rename_keeps_old_snapshot ... ok
test archive::redo_rewrite_tests::crash_gap_after_native_rename_has_no_old_redo_to_resurrect_deletions ... ok
test sasl::tests::rfc5802_sha1_vector ... ok
test server::authorization_tests::http_interfaces_follow_secure_override_wildcards_and_global_fallback ... ok
test server::authorization_tests::pep_diagnostics_count_only_first_item_devices_without_logging_ids ... ok
test server::authorization_tests::pep_diagnostics_exclude_payloads_and_identifiers ... ok
test http_service::tests::upload_claim_refreshes_completion_state_after_an_earlier_snapshot ... ok
test sessions::push_timeout_tests::first_important_push_shortens_extended_hibernation_once ... ok
test sessions::tests::acknowledgement_wraps ... ok
test sessions::tests::graceful_disconnect_is_not_resumable ... ok
test sessions::tests::resume_replays_only_unacked_and_checks_owner ... ok
test sessions::tests::traffic_before_sm_enable_is_not_counted ... ok
test upload_migration::tests::local_spool_checks_size_and_hash_and_preserves_source ... ok
test sasl::tests::sha256_independent_python_vector ... ok
test wire::tests::arbitrary_prefix_and_inherited_namespaces ... ok
test wire::tests::cdata_and_comments_frame_without_counting_brackets ... ok
test wire::tests::declarations_rejected ... ok
test wire::tests::fragmented_and_pipelined ... ok
test wire::tests::invalid_namespace_and_declarations_rejected ... ok
test upload_migration::tests::pending_and_corrupt_journals_block_startup ... ok
test http_service::tests::upload_internal_mount_is_independent_of_advertised_proxy_prefix ... ok
test http_service::tests::abandoned_slots_release_quota_without_pruning_existing_or_active_files ... ok
test sasl::tests::plus_channel_binding_and_ssdp_are_authenticated ... ok
test server::authorization_tests::upload_requires_registered_local_account_or_explicit_remote_access ... ok
test sasl::tests::wrong_proof_nonce_binding_and_duplicates ... ok
test admin::tests::real_admin_xml_protocol_over_duplex ... ok
test result: ok. 50 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.18s
Running tests/archive_edges.rs (target/debug/deps/archive_edges-da556b3567110d0b)
running 6 tests
test missing_empty_whitespace_and_single_record ... ok
test endpoint_read_recovers_partial_append_before_seeking ... ok
test multiline_endpoints_match_native_scanner_with_blank_lines ... ok
test oversized_prefix_and_malformed_endpoints_fail ... ok
test metadata_skips_large_malformed_middle_without_creating_cache ... ok
test tail_padding_respects_record_bound ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.26s
Running tests/archive_redo.rs (target/debug/deps/archive_redo-d041d27370ba29bd)
running 13 tests
test atomic_native_replace_without_handoff_cannot_discard_committed_frames ... ok
test explicit_native_atomic_handoff_and_missing_baseline_fail_closed ... ok
running 1 test
test durable_handoff_allows_native_in_place_append_and_next_rust_append ... ok
test legacy_rollback_marker_is_migrated_before_redo_append ... ok
test committed_redo_recovers_missing_and_partial_native_without_duplicates ... ok
test redo_process_child ... ok
test killed_writer_retains_accepted_records_after_native_data_loss ... ok
test native_baseline_in_place_edits_are_rejected ... ok
test complete_checksum_corruption_fails_without_modifying_native_or_journal ... ok
test copied_archive_replays_committed_redo_despite_new_native_inode ... ok
test incomplete_final_frame_and_uncommitted_native_suffix_are_discarded ... ok
test byte_limit_rotates_before_frame_count_limit ... ok
test bounded_rotation_recovers_suffix_and_rewrites_never_resurrect_deleted_records ... ok
test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.91s
Running tests/sm_journal.rs (target/debug/deps/sm_journal-79fad6209c2b84bb)
running 14 tests
test offline_checkpoint_refuses_live_store_and_preserves_redo ... ok
test complete_corrupt_frame_fails_closed_even_with_valid_export ... ok
test journal_symlink_is_rejected_without_following_target ... ok
test export_failure_after_commit_advances_memory_and_fences_later_writes ... ok
test durable_tombstone_overrides_resurrected_stale_json ... ok
test offline_checkpoint_durably_applies_expiration_and_tombstones ... ok
test legacy_json_migrates_and_baseline_survives_partial_first_append ... ok
test offline_checkpoint_repairs_exports_removes_redo_and_allows_legacy_restart ... ok
test partial_tail_is_discarded_and_subsequent_commits_survive_restart ... ok
test redo_repairs_missing_or_torn_export_before_json_validation ... ok
test superseded_frames_still_require_valid_checksums_json_and_baseline_flags ... ok
test incomplete_baseline_or_magic_never_falls_back_to_json ... ok
test retired_journals_are_collected_in_bounded_batches ... ok
test rotation_preserves_latest_snapshot_and_bounds_redo_size ... ok
test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.97s
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,169 @@
{
"binary_sha256": "8ceb8de3a2d02bc4399b8ae817dff7e3c3fe9bff83dc0c6669b7f19210a3847a",
"scope": "loopback STARTTLS; four SM resources/two accounts; MAM + pending avatar metadata PEP; fixture-only fsync/fdatasync including data directories; real sync retained; operation windows include background SM heartbeat",
"cases": [
{
"samples": [
{
"phase": "settled",
"round": 0,
"delivery_ms": {
"direct": 18.615095,
"sent": 19.940848,
"received": 26.953392
},
"sender_sm_handled_ms": 26.88493,
"publication_plus_delivery_ms": 27.065981,
"sync": {
"total": 12,
"by_store_kind_op": {
"mam:directory:fsync": 2,
"mam:file:fsync": 6,
"sm:file:fdatasync": 4
}
},
"pending_per_resource": [
1,
2,
2,
2
]
},
{
"phase": "settled",
"round": 1,
"delivery_ms": {
"direct": 6.003256,
"sent": 7.461811,
"received": 10.135311
},
"sender_sm_handled_ms": 9.993133,
"publication_plus_delivery_ms": 10.173245,
"sync": {
"total": 6,
"by_store_kind_op": {
"mam:file:fsync": 2,
"sm:file:fdatasync": 4
}
},
"pending_per_resource": [
1,
2,
2,
2
]
},
{
"phase": "settled",
"round": 2,
"delivery_ms": {
"direct": 7.871244,
"sent": 13.331419,
"received": 15.325955
},
"sender_sm_handled_ms": 15.079213,
"publication_plus_delivery_ms": 15.363148,
"sync": {
"total": 6,
"by_store_kind_op": {
"mam:file:fsync": 2,
"sm:file:fdatasync": 4
}
},
"pending_per_resource": [
1,
2,
2,
2
]
},
{
"phase": "avatar_pending",
"round": 0,
"delivery_ms": {
"direct": 38.754553,
"sent": 25.865646,
"received": 40.65703
},
"sender_sm_handled_ms": 40.40549,
"publication_plus_delivery_ms": 40.769686,
"sync": {
"total": 14,
"by_store_kind_op": {
"mam:file:fsync": 2,
"pep:directory:fsync": 2,
"pep:file:fsync": 2,
"sm:file:fdatasync": 8
}
},
"pending_per_resource": [
3,
2,
3,
2
]
},
{
"phase": "avatar_pending",
"round": 1,
"delivery_ms": {
"direct": 20.942607,
"sent": 20.204899,
"received": 22.05411
},
"sender_sm_handled_ms": 21.856674,
"publication_plus_delivery_ms": 23.679041,
"sync": {
"total": 14,
"by_store_kind_op": {
"mam:file:fsync": 2,
"pep:directory:fsync": 2,
"pep:file:fsync": 2,
"sm:file:fdatasync": 8
}
},
"pending_per_resource": [
3,
2,
3,
2
]
},
{
"phase": "avatar_pending",
"round": 2,
"delivery_ms": {
"direct": 17.980156,
"sent": 18.759152,
"received": 21.369599
},
"sender_sm_handled_ms": 21.332607,
"publication_plus_delivery_ms": 21.518131,
"sync": {
"total": 14,
"by_store_kind_op": {
"mam:file:fsync": 2,
"pep:directory:fsync": 2,
"pep:file:fsync": 2,
"sm:file:fdatasync": 8
}
},
"pending_per_resource": [
3,
2,
3,
2
]
}
],
"mam_records_per_account": [
106,
106
],
"status": "pass",
"delay_ms_per_sync": 0,
"server_message_processing_slow_events": [],
"server_message_processing_slow_ms": []
}
]
}
@@ -0,0 +1,180 @@
{
"binary_sha256": "130431025c4c7c2f72e28b77a31c83867f857ef8bb56d1f71b10e4b19d7caaf5",
"scope": "loopback STARTTLS; four SM resources/two accounts; MAM + pending avatar metadata PEP; fixture-only fsync/fdatasync including data directories; real sync retained; operation windows include background SM heartbeat",
"cases": [
{
"samples": [
{
"phase": "settled",
"round": 0,
"delivery_ms": {
"direct": 26.330895,
"sent": 29.575091,
"received": 33.552895
},
"sender_sm_handled_ms": 33.407559,
"publication_plus_delivery_ms": 33.592558,
"sync": {
"total": 16,
"by_store_kind_op": {
"mam:directory:fsync": 4,
"mam:file:fsync": 4,
"sm:directory:fsync": 4,
"sm:file:fsync": 4
}
},
"pending_per_resource": [
1,
2,
2,
2
]
},
{
"phase": "settled",
"round": 1,
"delivery_ms": {
"direct": 25.112248,
"sent": 31.688103,
"received": 39.725842
},
"sender_sm_handled_ms": 39.683719,
"publication_plus_delivery_ms": 39.867826,
"sync": {
"total": 16,
"by_store_kind_op": {
"mam:directory:fsync": 4,
"mam:file:fsync": 4,
"sm:directory:fsync": 4,
"sm:file:fsync": 4
}
},
"pending_per_resource": [
1,
2,
2,
2
]
},
{
"phase": "settled",
"round": 2,
"delivery_ms": {
"direct": 11.894093,
"sent": 11.977544,
"received": 13.638711
},
"sender_sm_handled_ms": 13.371964,
"publication_plus_delivery_ms": 13.720665,
"sync": {
"total": 16,
"by_store_kind_op": {
"mam:directory:fsync": 4,
"mam:file:fsync": 4,
"sm:directory:fsync": 4,
"sm:file:fsync": 4
}
},
"pending_per_resource": [
1,
2,
2,
2
]
},
{
"phase": "avatar_pending",
"round": 0,
"delivery_ms": {
"direct": 42.768972,
"sent": 32.889933,
"received": 48.207819
},
"sender_sm_handled_ms": 47.576405,
"publication_plus_delivery_ms": 51.552818,
"sync": {
"total": 28,
"by_store_kind_op": {
"mam:directory:fsync": 4,
"mam:file:fsync": 4,
"pep:directory:fsync": 2,
"pep:file:fsync": 2,
"sm:directory:fsync": 8,
"sm:file:fsync": 8
}
},
"pending_per_resource": [
3,
2,
3,
2
]
},
{
"phase": "avatar_pending",
"round": 1,
"delivery_ms": {
"direct": 28.176101,
"sent": 26.386914,
"received": 29.822606
},
"sender_sm_handled_ms": 29.714999,
"publication_plus_delivery_ms": 30.011235,
"sync": {
"total": 28,
"by_store_kind_op": {
"mam:directory:fsync": 4,
"mam:file:fsync": 4,
"pep:directory:fsync": 2,
"pep:file:fsync": 2,
"sm:directory:fsync": 8,
"sm:file:fsync": 8
}
},
"pending_per_resource": [
3,
2,
3,
2
]
},
{
"phase": "avatar_pending",
"round": 2,
"delivery_ms": {
"direct": 29.714366,
"sent": 26.01394,
"received": 32.367508
},
"sender_sm_handled_ms": 32.252144,
"publication_plus_delivery_ms": 33.076522,
"sync": {
"total": 28,
"by_store_kind_op": {
"mam:directory:fsync": 4,
"mam:file:fsync": 4,
"pep:directory:fsync": 2,
"pep:file:fsync": 2,
"sm:directory:fsync": 8,
"sm:file:fsync": 8
}
},
"pending_per_resource": [
3,
2,
3,
2
]
}
],
"mam_records_per_account": [
106,
106
],
"status": "pass",
"delay_ms_per_sync": 0,
"server_message_processing_slow_events": [],
"server_message_processing_slow_ms": []
}
]
}
File diff suppressed because it is too large. Load diff
+209
View File
@@ -0,0 +1,209 @@
{
"version": "0.8.3",
"date_utc": "2026-10-21",
"release_binary_sha256": "8ceb8de3a2d02bc4399b8ae817dff7e3c3fe9bff83dc0c6669b7f19210a3847a",
"ordinary_tests": {
"passed": 334,
"failed": 0,
"ignored": 11
},
"fmt": "passed",
"clippy": "passed",
"release": "passed",
"full_verify": "passed in one final frozen-source run",
"native_module_tests": 8,
"native_federation_tests": 1,
"extra_large_archive_tests": 1,
"ignored_not_run": [
"AF_UNIX admin_socket"
],
"load": {
"general_tls_clients": 500,
"general_accounts": 100,
"muc_sm": {
"clients": 500,
"accounts": 100,
"rooms": 10,
"message_rounds": 3,
"concurrency": 20,
"binary": "/tmp/xmpp-durable-muc-load-ssixqqk9/rust-xmpp",
"binary_sha256": "8ceb8de3a2d02bc4399b8ae817dff7e3c3fe9bff83dc0c6669b7f19210a3847a",
"before": {
"rss_kib": 9516,
"cpu_seconds": 0.01,
"fd_count": 12
},
"connect_seconds": 12.048,
"connect_latency": {
"samples": 500,
"median_ms": 398.044,
"p95_ms": 1086.236,
"max_ms": 1403.7
},
"phase": "completed",
"status": "pass",
"elapsed_seconds": 128.38,
"join_seconds": 94.493,
"joined": {
"rss_kib": 41828,
"cpu_seconds": 55.61,
"fd_count": 513
},
"join_presence_deliveries": 25000,
"slots_joined": {
"count": 500,
"bytes": 309790
},
"message_seconds": 9.585,
"room_messages_sent": 30,
"room_messages_delivered": 1500,
"before_kill": {
"rss_kib": 41740,
"cpu_seconds": 62.6,
"fd_count": 512
},
"slots_before_kill": {
"count": 500,
"bytes": 514030
},
"restart_seconds": 7.557,
"resumed_resources": 10,
"replayed_pending_room_messages": 10,
"membership_groupchat_deliveries_after_resume": 10,
"after_resume": {
"rss_kib": 20896,
"cpu_seconds": 7.09,
"fd_count": 22
},
"slots_after_resume": {
"count": 500,
"bytes": 671070
},
"total_seconds": 128.38,
"peak_rss_kib": 41852
}
},
"personal_delivery_comparisons": [
{
"delay_ms_per_sync": 0,
"phase": "settled",
"samples_per_binary": 3,
"body_before_ms": 25.112248,
"body_after_ms": 7.871244,
"sender_ack_before_ms": 33.407559,
"sender_ack_after_ms": 15.079213
},
{
"delay_ms_per_sync": 0,
"phase": "avatar_pending",
"samples_per_binary": 3,
"body_before_ms": 29.714366,
"body_after_ms": 20.942607,
"sender_ack_before_ms": 32.252144,
"sender_ack_after_ms": 21.856674
},
{
"delay_ms_per_sync": 100,
"phase": "settled",
"samples_per_binary": 3,
"body_before_ms": 1232.468024,
"body_after_ms": 419.683064,
"sender_ack_before_ms": 1641.598264,
"sender_ack_after_ms": 644.082891
},
{
"delay_ms_per_sync": 100,
"phase": "avatar_pending",
"samples_per_binary": 3,
"body_before_ms": 2683.292251,
"body_after_ms": 1378.231158,
"sender_ack_before_ms": 3195.209226,
"sender_ack_after_ms": 1581.975429
},
{
"delay_ms_per_sync": 200,
"phase": "settled",
"samples_per_binary": 1,
"body_before_ms": 2836.63993,
"body_after_ms": 2042.56345,
"sender_ack_before_ms": 3643.297905,
"sender_ack_after_ms": 2441.985416
},
{
"delay_ms_per_sync": 200,
"phase": "avatar_pending",
"samples_per_binary": 1,
"body_before_ms": 5782.018326,
"body_after_ms": 2676.283903,
"sender_ack_before_ms": 6595.924675,
"sender_ack_after_ms": 3094.949323
}
],
"durability_crash": {
"status": "pass",
"delay_ms_per_sync": 100,
"acknowledged_messages": 3,
"mam_records_per_account": [
3,
3
],
"resumed_resources": 4,
"replayed_personal_deliveries": 9,
"offline_checkpoint": {
"exported_sessions": 4,
"native_archives": 2,
"journals_removed": true,
"second_invocation_idempotent": true
},
"pending_before_reauthentication": [
2,
3,
4,
3
],
"sync_between_publication_and_sigkill": {
"total": 32,
"by_store_kind_op": {
"mam:directory:fsync": 2,
"mam:file:fsync": 10,
"pep:directory:fsync": 2,
"pep:file:fsync": 2,
"sm:file:fdatasync": 16
}
},
"binary_sha256": "8ceb8de3a2d02bc4399b8ae817dff7e3c3fe9bff83dc0c6669b7f19210a3847a",
"scope": "loopback STARTTLS; real delayed fsync/fdatasync; sender SM acknowledgement then SIGKILL; authoritative queues and MAM checked before reauthentication; at-least-once replay"
},
"recovery_sync_faults": {
"status": "pass",
"cases": [
{
"suffix": ".wal",
"status": "pass",
"checkpoint_rejected_sync_failure": true,
"journals_preserved_on_failure": 4,
"serve_rejected_before_listeners": true,
"clean_retry_preserved_sessions": 4,
"clean_retry_preserved_archives": 2
},
{
"suffix": ".rredo",
"status": "pass",
"checkpoint_rejected_sync_failure": true,
"journals_preserved_on_failure": 2,
"serve_rejected_before_listeners": false,
"clean_retry_preserved_sessions": 4,
"clean_retry_preserved_archives": 2
}
],
"binary_sha256": "8ceb8de3a2d02bc4399b8ae817dff7e3c3fe9bff83dc0c6669b7f19210a3847a"
},
"limitations": [
"Loopback fixture, not production client or disk qualification",
"0ms pair ran sequentially without full verify; 100/200ms final runs had background final verify",
"One200ms sample; startup/migration/rotation and background heartbeat affect sync counts",
"SM global IO mutex and full snapshots remain; no atomic transaction spanning MAM/SM/network",
"Offline storage-checkpoint required before legacy/native writer handoff",
"10GiB transfers, real MinIO/AWS, Docker/Gitea/GitHub run were not repeated in this release"
]
}
+182 -1667
View File
File diff suppressed because it is too large. Load diff