сообщения больше не выполняется полный 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": "74882319fcb467dd1e1813ab61e85441ffd3dae2f9f7961b28fd98ec5da7c89a",
|
|
"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": 5.10814599999776,
|
|
"p95_ms": 6.436508999968282,
|
|
"max_ms": 6.436508999968282,
|
|
"samples_ms": [
|
|
4.687508000017715,
|
|
5.018378999977813,
|
|
5.10814599999776,
|
|
5.499873000019306,
|
|
6.436508999968282
|
|
]
|
|
},
|
|
"direct_application_rtt": {
|
|
"samples": 5,
|
|
"median_ms": 10.949089000007461,
|
|
"p95_ms": 11.194100000011531,
|
|
"max_ms": 11.194100000011531,
|
|
"samples_ms": [
|
|
9.188771000026463,
|
|
9.251739999967867,
|
|
10.949089000007461,
|
|
11.097223999968264,
|
|
11.194100000011531
|
|
]
|
|
},
|
|
"muc_sender_echo": {
|
|
"samples": 5,
|
|
"median_ms": 6.3955159999977695,
|
|
"p95_ms": 10.028454999996939,
|
|
"max_ms": 10.028454999996939,
|
|
"samples_ms": [
|
|
5.6768890000284955,
|
|
6.070047000036993,
|
|
6.3955159999977695,
|
|
6.783154999993712,
|
|
10.028454999996939
|
|
]
|
|
},
|
|
"muc_peer": {
|
|
"samples": 5,
|
|
"median_ms": 7.227664999959416,
|
|
"p95_ms": 10.73728499994786,
|
|
"max_ms": 10.73728499994786,
|
|
"samples_ms": [
|
|
6.249474000014743,
|
|
6.710089000023345,
|
|
7.227664999959416,
|
|
7.554007000010188,
|
|
10.73728499994786
|
|
]
|
|
}
|
|
},
|
|
"inactive": {
|
|
"direct_peer": {
|
|
"samples": 5,
|
|
"median_ms": 4.543079999962174,
|
|
"p95_ms": 5.169351999995797,
|
|
"max_ms": 5.169351999995797,
|
|
"samples_ms": [
|
|
3.9885659999754353,
|
|
4.165818999979365,
|
|
4.543079999962174,
|
|
4.987367000012455,
|
|
5.169351999995797
|
|
]
|
|
},
|
|
"direct_application_rtt": {
|
|
"samples": 5,
|
|
"median_ms": 9.515092000015102,
|
|
"p95_ms": 12.47698700001365,
|
|
"max_ms": 12.47698700001365,
|
|
"samples_ms": [
|
|
8.106691999955729,
|
|
8.858637999992425,
|
|
9.515092000015102,
|
|
9.874779000028866,
|
|
12.47698700001365
|
|
]
|
|
},
|
|
"muc_sender_echo": {
|
|
"samples": 5,
|
|
"median_ms": 5.794529000013426,
|
|
"p95_ms": 7.275404999973034,
|
|
"max_ms": 7.275404999973034,
|
|
"samples_ms": [
|
|
5.51126799996382,
|
|
5.724920000034217,
|
|
5.794529000013426,
|
|
6.444504000000961,
|
|
7.275404999973034
|
|
]
|
|
},
|
|
"muc_peer": {
|
|
"samples": 5,
|
|
"median_ms": 6.479804000036893,
|
|
"p95_ms": 8.207588000004762,
|
|
"max_ms": 8.207588000004762,
|
|
"samples_ms": [
|
|
6.077395999966484,
|
|
6.479181999964112,
|
|
6.479804000036893,
|
|
7.2692859999961,
|
|
8.207588000004762
|
|
]
|
|
}
|
|
},
|
|
"urgent_flush": {
|
|
"samples": 1,
|
|
"median_ms": 4.576559000042835,
|
|
"p95_ms": 4.576559000042835,
|
|
"max_ms": 4.576559000042835,
|
|
"samples_ms": [
|
|
4.576559000042835
|
|
]
|
|
},
|
|
"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": 8.454973000027621,
|
|
"p95_ms": 9.086850000016966,
|
|
"max_ms": 9.086850000016966,
|
|
"samples_ms": [
|
|
7.875873999978467,
|
|
7.919512999990275,
|
|
8.454973000027621,
|
|
8.744820000003983,
|
|
9.086850000016966
|
|
]
|
|
},
|
|
"direct_application_rtt": {
|
|
"samples": 5,
|
|
"median_ms": 15.02084100002321,
|
|
"p95_ms": 18.49304000000984,
|
|
"max_ms": 18.49304000000984,
|
|
"samples_ms": [
|
|
14.658381000003828,
|
|
15.0033279999775,
|
|
15.02084100002321,
|
|
16.241458000024522,
|
|
18.49304000000984
|
|
]
|
|
},
|
|
"muc_sender_echo": {
|
|
"samples": 5,
|
|
"median_ms": 8.695557000010012,
|
|
"p95_ms": 10.132943000030536,
|
|
"max_ms": 10.132943000030536,
|
|
"samples_ms": [
|
|
6.247895000001336,
|
|
8.190369000033115,
|
|
8.695557000010012,
|
|
8.886856000003718,
|
|
10.132943000030536
|
|
]
|
|
},
|
|
"muc_peer": {
|
|
"samples": 5,
|
|
"median_ms": 9.425391000036143,
|
|
"p95_ms": 11.220557999990888,
|
|
"max_ms": 11.220557999990888,
|
|
"samples_ms": [
|
|
6.928168999991158,
|
|
9.00288799999771,
|
|
9.425391000036143,
|
|
9.836486999972749,
|
|
11.220557999990888
|
|
]
|
|
}
|
|
},
|
|
"inactive": {
|
|
"direct_peer": {
|
|
"samples": 5,
|
|
"median_ms": 8.574552000027325,
|
|
"p95_ms": 11.412799000027007,
|
|
"max_ms": 11.412799000027007,
|
|
"samples_ms": [
|
|
7.429673999979514,
|
|
8.434421999993447,
|
|
8.574552000027325,
|
|
10.991448000027049,
|
|
11.412799000027007
|
|
]
|
|
},
|
|
"direct_application_rtt": {
|
|
"samples": 5,
|
|
"median_ms": 16.801955000005364,
|
|
"p95_ms": 20.960896000019602,
|
|
"max_ms": 20.960896000019602,
|
|
"samples_ms": [
|
|
15.289625999969303,
|
|
16.07350099999394,
|
|
16.801955000005364,
|
|
19.067943000038667,
|
|
20.960896000019602
|
|
]
|
|
},
|
|
"muc_sender_echo": {
|
|
"samples": 5,
|
|
"median_ms": 9.673966000036671,
|
|
"p95_ms": 10.545491000016227,
|
|
"max_ms": 10.545491000016227,
|
|
"samples_ms": [
|
|
8.954777999974795,
|
|
9.244574000035755,
|
|
9.673966000036671,
|
|
10.407988999986628,
|
|
10.545491000016227
|
|
]
|
|
},
|
|
"muc_peer": {
|
|
"samples": 5,
|
|
"median_ms": 10.7329940000227,
|
|
"p95_ms": 11.54250500002263,
|
|
"max_ms": 11.54250500002263,
|
|
"samples_ms": [
|
|
9.77221699997699,
|
|
10.012581000012233,
|
|
10.7329940000227,
|
|
11.414449999961107,
|
|
11.54250500002263
|
|
]
|
|
}
|
|
},
|
|
"urgent_flush": {
|
|
"samples": 1,
|
|
"median_ms": 8.784937999962494,
|
|
"p95_ms": 8.784937999962494,
|
|
"max_ms": 8.784937999962494,
|
|
"samples_ms": [
|
|
8.784937999962494
|
|
]
|
|
},
|
|
"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": 7.590319999962958,
|
|
"p95_ms": 8.892007999975249,
|
|
"max_ms": 8.892007999975249,
|
|
"samples_ms": [
|
|
5.31427799995754,
|
|
6.9214119999969625,
|
|
7.590319999962958,
|
|
7.624421999992137,
|
|
8.892007999975249
|
|
]
|
|
},
|
|
"direct_application_rtt": {
|
|
"samples": 5,
|
|
"median_ms": 13.376056000026892,
|
|
"p95_ms": 15.464272999963669,
|
|
"max_ms": 15.464272999963669,
|
|
"samples_ms": [
|
|
12.23329399999784,
|
|
13.25195099997245,
|
|
13.376056000026892,
|
|
14.078856999958589,
|
|
15.464272999963669
|
|
]
|
|
},
|
|
"muc_sender_echo": {
|
|
"samples": 5,
|
|
"median_ms": 31.94280399998206,
|
|
"p95_ms": 35.83487499997773,
|
|
"max_ms": 35.83487499997773,
|
|
"samples_ms": [
|
|
30.683405999980096,
|
|
31.05138800003715,
|
|
31.94280399998206,
|
|
34.427220999987185,
|
|
35.83487499997773
|
|
]
|
|
},
|
|
"muc_peer": {
|
|
"samples": 5,
|
|
"median_ms": 32.718170999999074,
|
|
"p95_ms": 36.99477299994669,
|
|
"max_ms": 36.99477299994669,
|
|
"samples_ms": [
|
|
31.32484000002478,
|
|
31.708390999995117,
|
|
32.718170999999074,
|
|
35.15474099998528,
|
|
36.99477299994669
|
|
]
|
|
}
|
|
},
|
|
"inactive": {
|
|
"direct_peer": {
|
|
"samples": 5,
|
|
"median_ms": 6.955795000010312,
|
|
"p95_ms": 7.9194580000034875,
|
|
"max_ms": 7.9194580000034875,
|
|
"samples_ms": [
|
|
6.15931200002251,
|
|
6.666912000014236,
|
|
6.955795000010312,
|
|
7.675652999978411,
|
|
7.9194580000034875
|
|
]
|
|
},
|
|
"direct_application_rtt": {
|
|
"samples": 5,
|
|
"median_ms": 13.159411000003729,
|
|
"p95_ms": 15.27061000001595,
|
|
"max_ms": 15.27061000001595,
|
|
"samples_ms": [
|
|
12.274962999981653,
|
|
13.057566999975734,
|
|
13.159411000003729,
|
|
14.08330199996044,
|
|
15.27061000001595
|
|
]
|
|
},
|
|
"muc_sender_echo": {
|
|
"samples": 5,
|
|
"median_ms": 34.13865300001362,
|
|
"p95_ms": 36.99340499997561,
|
|
"max_ms": 36.99340499997561,
|
|
"samples_ms": [
|
|
30.982952999977442,
|
|
32.71812099995941,
|
|
34.13865300001362,
|
|
35.38880100001052,
|
|
36.99340499997561
|
|
]
|
|
},
|
|
"muc_peer": {
|
|
"samples": 5,
|
|
"median_ms": 36.06873300003599,
|
|
"p95_ms": 38.31650299997591,
|
|
"max_ms": 38.31650299997591,
|
|
"samples_ms": [
|
|
33.48175599995784,
|
|
34.2965520000007,
|
|
36.06873300003599,
|
|
36.353186000042115,
|
|
38.31650299997591
|
|
]
|
|
}
|
|
},
|
|
"urgent_flush": {
|
|
"samples": 1,
|
|
"median_ms": 12.115028999971855,
|
|
"p95_ms": 12.115028999971855,
|
|
"max_ms": 12.115028999971855,
|
|
"samples_ms": [
|
|
12.115028999971855
|
|
]
|
|
},
|
|
"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": 9.04404400000658,
|
|
"p95_ms": 12.927059999981338,
|
|
"max_ms": 12.927059999981338,
|
|
"samples_ms": [
|
|
8.594286000004558,
|
|
9.04279899998528,
|
|
9.04404400000658,
|
|
10.732668000002832,
|
|
12.927059999981338
|
|
]
|
|
},
|
|
"direct_application_rtt": {
|
|
"samples": 5,
|
|
"median_ms": 18.81452300000319,
|
|
"p95_ms": 21.198468999955367,
|
|
"max_ms": 21.198468999955367,
|
|
"samples_ms": [
|
|
17.06366100000878,
|
|
17.834419999985585,
|
|
18.81452300000319,
|
|
18.89581300002874,
|
|
21.198468999955367
|
|
]
|
|
},
|
|
"muc_sender_echo": {
|
|
"samples": 5,
|
|
"median_ms": 258.5251909999897,
|
|
"p95_ms": 269.03445800002146,
|
|
"max_ms": 269.03445800002146,
|
|
"samples_ms": [
|
|
243.74590799999396,
|
|
244.56996899999695,
|
|
258.5251909999897,
|
|
260.5109279999738,
|
|
269.03445800002146
|
|
]
|
|
},
|
|
"muc_peer": {
|
|
"samples": 5,
|
|
"median_ms": 259.47216499997694,
|
|
"p95_ms": 269.0669140000068,
|
|
"max_ms": 269.0669140000068,
|
|
"samples_ms": [
|
|
244.58446500000264,
|
|
245.61970199999905,
|
|
259.47216499997694,
|
|
261.3186459999497,
|
|
269.0669140000068
|
|
]
|
|
}
|
|
},
|
|
"inactive": {
|
|
"direct_peer": {
|
|
"samples": 5,
|
|
"median_ms": 9.321043999989342,
|
|
"p95_ms": 11.691385000005994,
|
|
"max_ms": 11.691385000005994,
|
|
"samples_ms": [
|
|
9.130955999978596,
|
|
9.257138999998915,
|
|
9.321043999989342,
|
|
9.393109000029654,
|
|
11.691385000005994
|
|
]
|
|
},
|
|
"direct_application_rtt": {
|
|
"samples": 5,
|
|
"median_ms": 22.537706999969487,
|
|
"p95_ms": 22.7979030000256,
|
|
"max_ms": 22.7979030000256,
|
|
"samples_ms": [
|
|
18.378415999961817,
|
|
18.92694800000072,
|
|
22.537706999969487,
|
|
22.614556000007724,
|
|
22.7979030000256
|
|
]
|
|
},
|
|
"muc_sender_echo": {
|
|
"samples": 5,
|
|
"median_ms": 257.6139750000266,
|
|
"p95_ms": 278.14462699996056,
|
|
"max_ms": 278.14462699996056,
|
|
"samples_ms": [
|
|
248.2455429999959,
|
|
251.84251700000004,
|
|
257.6139750000266,
|
|
262.41991000000553,
|
|
278.14462699996056
|
|
]
|
|
},
|
|
"muc_peer": {
|
|
"samples": 5,
|
|
"median_ms": 258.46415800003797,
|
|
"p95_ms": 278.8930929999651,
|
|
"max_ms": 278.8930929999651,
|
|
"samples_ms": [
|
|
250.01428399997394,
|
|
253.1065140000237,
|
|
258.46415800003797,
|
|
263.1856349999566,
|
|
278.8930929999651
|
|
]
|
|
}
|
|
},
|
|
"urgent_flush": {
|
|
"samples": 1,
|
|
"median_ms": 11.461830000030204,
|
|
"p95_ms": 11.461830000030204,
|
|
"max_ms": 11.461830000030204,
|
|
"samples_ms": [
|
|
11.461830000030204
|
|
]
|
|
},
|
|
"headline_durably_buffered": true,
|
|
"activation_drained_queue": true,
|
|
"personal_archive_records": 42,
|
|
"muc_archive_records": 10010,
|
|
"wire_body_deliveries": 43,
|
|
"status": "pass"
|
|
}
|
|
]
|
|
}
|