сообщения больше не выполняется полный 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. Измерения и границы подтверждения: [docs/MESSAGE-LATENCY.md](docs/MESSAGE-LATENCY.md). Результаты итогового прогона: [docs/VALIDATION-0.8.1.md](docs/VALIDATION-0.8.1.md). - Личные сообщения и SM ACK больше не ждут сетевую отправку push. Уведомления отправляются через очередь1024 с максимум8параллельных маршрутов; worker и его задачи отменяются при завершении serve. Ошибки очереди/маршрута логируются. - Offline сообщение сохраняется до публикации push, чтобы проснувшийся клиент мог сразу получить его. Подтверждена очередь при первом TLS stream push gateway. - По умолчанию CSI считает важными bodyless OMEMO legacy/2, delivery receipts и chat markers. Явный список `csi_important_payloads` заменяет расширенные defaults. Низкоприоритетный headline по-прежнему буферизуется. Policy обновляется и при SM resume. - Выбор адресатов и carbons фильтрует владельцев до захвата session mutex; зависшая сессия чужого аккаунта не задерживает этот путь. Duplicate SM ACK без изменения durable counters/queue не переписывает snapshot. - Bind2 и MAM metadata IQ читают только первый/последний native record вместо сканирования всей истории. Индекс не требуется; recovery/лимиты записи сохранены. - Добавлен `message-processing-slow`: обработка message дольше250мс, поля duration_ms/route, без payload/токенов. Это время обработки сервером, не peer receipt. - Новые сетевые регрессии включены в verify-local.sh/GitHub CI. Причины, изменение CSI policy, измерения и ограничения: [docs/PERSONAL-MESSAGE-LATENCY.md](docs/PERSONAL-MESSAGE-LATENCY.md).
523 lines
14 KiB
JSON
523 lines
14 KiB
JSON
{
|
|
"binary_sha256": "c57757476f2019c60ac877e4a66364b17283218e3cc244ae3f29cde1d3be2977",
|
|
"scope": "loopback STARTTLS; isolated fixture; no production latency claim",
|
|
"cases": [
|
|
{
|
|
"mam_enabled": false,
|
|
"sm_enabled": true,
|
|
"rounds": 5,
|
|
"seeded_muc_archive_records": 0,
|
|
"active": {
|
|
"direct_peer": {
|
|
"samples": 5,
|
|
"median_ms": 2.2083669999801714,
|
|
"p95_ms": 2.7524509999921065,
|
|
"max_ms": 2.7524509999921065,
|
|
"samples_ms": [
|
|
2.0349779999833117,
|
|
2.1022979999543168,
|
|
2.2083669999801714,
|
|
2.581427999984953,
|
|
2.7524509999921065
|
|
]
|
|
},
|
|
"direct_application_rtt": {
|
|
"samples": 5,
|
|
"median_ms": 4.559320999987904,
|
|
"p95_ms": 5.448408999995991,
|
|
"max_ms": 5.448408999995991,
|
|
"samples_ms": [
|
|
3.9975349999394894,
|
|
4.301345000044421,
|
|
4.559320999987904,
|
|
4.565895999917302,
|
|
5.448408999995991
|
|
]
|
|
},
|
|
"muc_sender_echo": {
|
|
"samples": 5,
|
|
"median_ms": 4.29816700000174,
|
|
"p95_ms": 11.835469999937231,
|
|
"max_ms": 11.835469999937231,
|
|
"samples_ms": [
|
|
3.717826999945828,
|
|
3.95383000000038,
|
|
4.29816700000174,
|
|
11.782627000002321,
|
|
11.835469999937231
|
|
]
|
|
},
|
|
"muc_peer": {
|
|
"samples": 5,
|
|
"median_ms": 4.366868000033719,
|
|
"p95_ms": 11.859378999929504,
|
|
"max_ms": 11.859378999929504,
|
|
"samples_ms": [
|
|
3.7456439999914437,
|
|
4.002205000006143,
|
|
4.366868000033719,
|
|
11.841935000006742,
|
|
11.859378999929504
|
|
]
|
|
}
|
|
},
|
|
"inactive": {
|
|
"direct_peer": {
|
|
"samples": 5,
|
|
"median_ms": 2.1559959999422063,
|
|
"p95_ms": 2.7428159999089985,
|
|
"max_ms": 2.7428159999089985,
|
|
"samples_ms": [
|
|
1.889266000034695,
|
|
2.07170299995596,
|
|
2.1559959999422063,
|
|
2.2102450000147655,
|
|
2.7428159999089985
|
|
]
|
|
},
|
|
"direct_application_rtt": {
|
|
"samples": 5,
|
|
"median_ms": 4.291513999987728,
|
|
"p95_ms": 4.628346999993482,
|
|
"max_ms": 4.628346999993482,
|
|
"samples_ms": [
|
|
4.097702999956709,
|
|
4.117672000006678,
|
|
4.291513999987728,
|
|
4.321024999967449,
|
|
4.628346999993482
|
|
]
|
|
},
|
|
"muc_sender_echo": {
|
|
"samples": 5,
|
|
"median_ms": 3.607771000019966,
|
|
"p95_ms": 4.329054999971049,
|
|
"max_ms": 4.329054999971049,
|
|
"samples_ms": [
|
|
3.0511659999774565,
|
|
3.3668879999595447,
|
|
3.607771000019966,
|
|
3.629876999980297,
|
|
4.329054999971049
|
|
]
|
|
},
|
|
"muc_peer": {
|
|
"samples": 5,
|
|
"median_ms": 3.669854000008854,
|
|
"p95_ms": 4.375101999926301,
|
|
"max_ms": 4.375101999926301,
|
|
"samples_ms": [
|
|
3.109387999984392,
|
|
3.436124000018026,
|
|
3.669854000008854,
|
|
3.692369999953371,
|
|
4.375101999926301
|
|
]
|
|
}
|
|
},
|
|
"urgent_flush": {
|
|
"samples": 1,
|
|
"median_ms": 3.450391999990643,
|
|
"p95_ms": 3.450391999990643,
|
|
"max_ms": 3.450391999990643,
|
|
"samples_ms": [
|
|
3.450391999990643
|
|
]
|
|
},
|
|
"headline_durably_buffered": true,
|
|
"activation_drained_queue": true,
|
|
"personal_archive_records": 0,
|
|
"muc_archive_records": 0,
|
|
"wire_body_deliveries": 43,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"mam_enabled": true,
|
|
"sm_enabled": true,
|
|
"rounds": 5,
|
|
"seeded_muc_archive_records": 0,
|
|
"active": {
|
|
"direct_peer": {
|
|
"samples": 5,
|
|
"median_ms": 5.680922999999893,
|
|
"p95_ms": 5.92475899998135,
|
|
"max_ms": 5.92475899998135,
|
|
"samples_ms": [
|
|
4.959245000009105,
|
|
5.657132000010279,
|
|
5.680922999999893,
|
|
5.683216000079483,
|
|
5.92475899998135
|
|
]
|
|
},
|
|
"direct_application_rtt": {
|
|
"samples": 5,
|
|
"median_ms": 10.62067800000932,
|
|
"p95_ms": 11.266418999980488,
|
|
"max_ms": 11.266418999980488,
|
|
"samples_ms": [
|
|
9.56820900000821,
|
|
10.354214000017237,
|
|
10.62067800000932,
|
|
11.083625999958713,
|
|
11.266418999980488
|
|
]
|
|
},
|
|
"muc_sender_echo": {
|
|
"samples": 5,
|
|
"median_ms": 4.932548000056158,
|
|
"p95_ms": 7.615871999973933,
|
|
"max_ms": 7.615871999973933,
|
|
"samples_ms": [
|
|
4.048796000006405,
|
|
4.207175000033203,
|
|
4.932548000056158,
|
|
5.545106999989002,
|
|
7.615871999973933
|
|
]
|
|
},
|
|
"muc_peer": {
|
|
"samples": 5,
|
|
"median_ms": 5.05425800008652,
|
|
"p95_ms": 7.6429759999427915,
|
|
"max_ms": 7.6429759999427915,
|
|
"samples_ms": [
|
|
4.07517700000426,
|
|
4.236438000020826,
|
|
5.05425800008652,
|
|
5.570927000007941,
|
|
7.6429759999427915
|
|
]
|
|
}
|
|
},
|
|
"inactive": {
|
|
"direct_peer": {
|
|
"samples": 5,
|
|
"median_ms": 5.44478100005108,
|
|
"p95_ms": 5.556554000008873,
|
|
"max_ms": 5.556554000008873,
|
|
"samples_ms": [
|
|
4.727472000013222,
|
|
4.8114250000708125,
|
|
5.44478100005108,
|
|
5.505089000052976,
|
|
5.556554000008873
|
|
]
|
|
},
|
|
"direct_application_rtt": {
|
|
"samples": 5,
|
|
"median_ms": 10.183787000073607,
|
|
"p95_ms": 10.890477999964787,
|
|
"max_ms": 10.890477999964787,
|
|
"samples_ms": [
|
|
9.888724000006732,
|
|
9.945942000058494,
|
|
10.183787000073607,
|
|
10.306656000011571,
|
|
10.890477999964787
|
|
]
|
|
},
|
|
"muc_sender_echo": {
|
|
"samples": 5,
|
|
"median_ms": 5.1263200000448705,
|
|
"p95_ms": 5.255117000046994,
|
|
"max_ms": 5.255117000046994,
|
|
"samples_ms": [
|
|
4.305390000013176,
|
|
5.036372000063238,
|
|
5.1263200000448705,
|
|
5.168275000073663,
|
|
5.255117000046994
|
|
]
|
|
},
|
|
"muc_peer": {
|
|
"samples": 5,
|
|
"median_ms": 5.184012999961851,
|
|
"p95_ms": 5.310040000040317,
|
|
"max_ms": 5.310040000040317,
|
|
"samples_ms": [
|
|
4.368295000062972,
|
|
5.154129000061403,
|
|
5.184012999961851,
|
|
5.191530000047351,
|
|
5.310040000040317
|
|
]
|
|
}
|
|
},
|
|
"urgent_flush": {
|
|
"samples": 1,
|
|
"median_ms": 5.2187170000479455,
|
|
"p95_ms": 5.2187170000479455,
|
|
"max_ms": 5.2187170000479455,
|
|
"samples_ms": [
|
|
5.2187170000479455
|
|
]
|
|
},
|
|
"headline_durably_buffered": true,
|
|
"activation_drained_queue": true,
|
|
"personal_archive_records": 42,
|
|
"muc_archive_records": 10,
|
|
"wire_body_deliveries": 43,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"mam_enabled": true,
|
|
"sm_enabled": true,
|
|
"rounds": 5,
|
|
"seeded_muc_archive_records": 1000,
|
|
"active": {
|
|
"direct_peer": {
|
|
"samples": 5,
|
|
"median_ms": 5.179283999950712,
|
|
"p95_ms": 5.702402999986589,
|
|
"max_ms": 5.702402999986589,
|
|
"samples_ms": [
|
|
4.691908000040712,
|
|
5.172169999923426,
|
|
5.179283999950712,
|
|
5.635785999970722,
|
|
5.702402999986589
|
|
]
|
|
},
|
|
"direct_application_rtt": {
|
|
"samples": 5,
|
|
"median_ms": 9.836759999984679,
|
|
"p95_ms": 10.818348000043443,
|
|
"max_ms": 10.818348000043443,
|
|
"samples_ms": [
|
|
9.177894999993441,
|
|
9.73506099990118,
|
|
9.836759999984679,
|
|
10.593198000037773,
|
|
10.818348000043443
|
|
]
|
|
},
|
|
"muc_sender_echo": {
|
|
"samples": 5,
|
|
"median_ms": 4.2178580000609145,
|
|
"p95_ms": 6.532151999977032,
|
|
"max_ms": 6.532151999977032,
|
|
"samples_ms": [
|
|
3.8601360000711793,
|
|
4.174319999947329,
|
|
4.2178580000609145,
|
|
4.571829000042271,
|
|
6.532151999977032
|
|
]
|
|
},
|
|
"muc_peer": {
|
|
"samples": 5,
|
|
"median_ms": 4.280302000097436,
|
|
"p95_ms": 6.605132999993657,
|
|
"max_ms": 6.605132999993657,
|
|
"samples_ms": [
|
|
3.8853840000001583,
|
|
4.233521999935874,
|
|
4.280302000097436,
|
|
4.673529000001508,
|
|
6.605132999993657
|
|
]
|
|
}
|
|
},
|
|
"inactive": {
|
|
"direct_peer": {
|
|
"samples": 5,
|
|
"median_ms": 5.289302999926804,
|
|
"p95_ms": 5.9182850000070175,
|
|
"max_ms": 5.9182850000070175,
|
|
"samples_ms": [
|
|
4.637428000023647,
|
|
4.646944000000985,
|
|
5.289302999926804,
|
|
5.336470000088411,
|
|
5.9182850000070175
|
|
]
|
|
},
|
|
"direct_application_rtt": {
|
|
"samples": 5,
|
|
"median_ms": 9.881779000011193,
|
|
"p95_ms": 11.126878000027318,
|
|
"max_ms": 11.126878000027318,
|
|
"samples_ms": [
|
|
9.666927000012038,
|
|
9.780869999985953,
|
|
9.881779000011193,
|
|
9.893610999938574,
|
|
11.126878000027318
|
|
]
|
|
},
|
|
"muc_sender_echo": {
|
|
"samples": 5,
|
|
"median_ms": 5.337903999929949,
|
|
"p95_ms": 6.605088000014803,
|
|
"max_ms": 6.605088000014803,
|
|
"samples_ms": [
|
|
4.4430670000110695,
|
|
4.566451999949095,
|
|
5.337903999929949,
|
|
5.398619999937182,
|
|
6.605088000014803
|
|
]
|
|
},
|
|
"muc_peer": {
|
|
"samples": 5,
|
|
"median_ms": 5.365761999996721,
|
|
"p95_ms": 6.657663000055436,
|
|
"max_ms": 6.657663000055436,
|
|
"samples_ms": [
|
|
4.503487999954814,
|
|
4.589735999957156,
|
|
5.365761999996721,
|
|
5.456013999946663,
|
|
6.657663000055436
|
|
]
|
|
}
|
|
},
|
|
"urgent_flush": {
|
|
"samples": 1,
|
|
"median_ms": 6.4426129999901605,
|
|
"p95_ms": 6.4426129999901605,
|
|
"max_ms": 6.4426129999901605,
|
|
"samples_ms": [
|
|
6.4426129999901605
|
|
]
|
|
},
|
|
"headline_durably_buffered": true,
|
|
"activation_drained_queue": true,
|
|
"personal_archive_records": 42,
|
|
"muc_archive_records": 1010,
|
|
"wire_body_deliveries": 43,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"mam_enabled": true,
|
|
"sm_enabled": true,
|
|
"rounds": 5,
|
|
"seeded_muc_archive_records": 10000,
|
|
"active": {
|
|
"direct_peer": {
|
|
"samples": 5,
|
|
"median_ms": 5.5639299999938885,
|
|
"p95_ms": 6.427136000070277,
|
|
"max_ms": 6.427136000070277,
|
|
"samples_ms": [
|
|
4.3693179999308995,
|
|
5.252241999983198,
|
|
5.5639299999938885,
|
|
6.115242999953807,
|
|
6.427136000070277
|
|
]
|
|
},
|
|
"direct_application_rtt": {
|
|
"samples": 5,
|
|
"median_ms": 10.580320000030952,
|
|
"p95_ms": 11.34455600004003,
|
|
"max_ms": 11.34455600004003,
|
|
"samples_ms": [
|
|
8.862616999977035,
|
|
10.534624999991138,
|
|
10.580320000030952,
|
|
10.863696000001255,
|
|
11.34455600004003
|
|
]
|
|
},
|
|
"muc_sender_echo": {
|
|
"samples": 5,
|
|
"median_ms": 4.871052999988024,
|
|
"p95_ms": 6.248740000046382,
|
|
"max_ms": 6.248740000046382,
|
|
"samples_ms": [
|
|
4.298133000020243,
|
|
4.364993999956823,
|
|
4.871052999988024,
|
|
5.0552000000152475,
|
|
6.248740000046382
|
|
]
|
|
},
|
|
"muc_peer": {
|
|
"samples": 5,
|
|
"median_ms": 4.894828000033158,
|
|
"p95_ms": 6.306694000045354,
|
|
"max_ms": 6.306694000045354,
|
|
"samples_ms": [
|
|
4.328496999960407,
|
|
4.393286999970769,
|
|
4.894828000033158,
|
|
5.0838870000688985,
|
|
6.306694000045354
|
|
]
|
|
}
|
|
},
|
|
"inactive": {
|
|
"direct_peer": {
|
|
"samples": 5,
|
|
"median_ms": 4.837865000013153,
|
|
"p95_ms": 6.154906000006122,
|
|
"max_ms": 6.154906000006122,
|
|
"samples_ms": [
|
|
4.644825000013952,
|
|
4.6781300000020565,
|
|
4.837865000013153,
|
|
6.011097999930826,
|
|
6.154906000006122
|
|
]
|
|
},
|
|
"direct_application_rtt": {
|
|
"samples": 5,
|
|
"median_ms": 9.839443999908326,
|
|
"p95_ms": 11.105878999956076,
|
|
"max_ms": 11.105878999956076,
|
|
"samples_ms": [
|
|
9.05296900009489,
|
|
9.732880000001387,
|
|
9.839443999908326,
|
|
10.890076000009685,
|
|
11.105878999956076
|
|
]
|
|
},
|
|
"muc_sender_echo": {
|
|
"samples": 5,
|
|
"median_ms": 4.868799000064428,
|
|
"p95_ms": 5.506852999928924,
|
|
"max_ms": 5.506852999928924,
|
|
"samples_ms": [
|
|
4.652097999951366,
|
|
4.654195000057371,
|
|
4.868799000064428,
|
|
5.197563999900012,
|
|
5.506852999928924
|
|
]
|
|
},
|
|
"muc_peer": {
|
|
"samples": 5,
|
|
"median_ms": 4.921641999999338,
|
|
"p95_ms": 5.567783999936182,
|
|
"max_ms": 5.567783999936182,
|
|
"samples_ms": [
|
|
4.707422999899791,
|
|
4.71425300008832,
|
|
4.921641999999338,
|
|
5.261014999973668,
|
|
5.567783999936182
|
|
]
|
|
}
|
|
},
|
|
"urgent_flush": {
|
|
"samples": 1,
|
|
"median_ms": 6.844148000027417,
|
|
"p95_ms": 6.844148000027417,
|
|
"max_ms": 6.844148000027417,
|
|
"samples_ms": [
|
|
6.844148000027417
|
|
]
|
|
},
|
|
"headline_durably_buffered": true,
|
|
"activation_drained_queue": true,
|
|
"personal_archive_records": 42,
|
|
"muc_archive_records": 10010,
|
|
"wire_body_deliveries": 43,
|
|
"status": "pass"
|
|
}
|
|
]
|
|
}
|