Files
wt bff609097b
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
- Уменьшено число последовательных синхронизаций до доставки: 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; отчёты
  сохраняются.

Измерения, ограничения и эксплуатация:
[docs/DURABLE-MESSAGE-IO.md](docs/DURABLE-MESSAGE-IO.md),
[docs/VALIDATION-0.8.3.md](docs/VALIDATION-0.8.3.md).
2026-10-21 13:14:19 +07:00

256 lines
6.6 KiB
JSON

{
"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
]
}
]
}