[--execute]`: dry run по умолчанию, local ↔ S3 и S3 ↔ S3 без удаления source. - Последовательное копирование с проверкой размера и полным SHA-256 readback destination; конфликтующий объект не перезаписывается. Временный диск — максимум один переносимый файл дополнительно к постоянному destination. - Durable migration journal позволяет продолжить прерванную операцию с теми же конфигурациями. Незавершённый или повреждённый journal блокирует startup; backend identity меняется только после проверки всех файлов. - Native `uploads`/`upload_stats`, slots и JWT сохраняются; поддерживаются native локальные файлы без Rust completion sidecar. Миграция требует остановки RustXMPP и Prosody, использующих общий `data_path`. - Multipart intent сохраняется до создания удалённого upload. Recovery находит потерянный UploadId через paginated listing и очищает только точный key принадлежащего slot. При сохранных metadata cleanup не зависит от lifecycle; lifecycle остаётся дополнительной защитой, а не гарантией. - Перед completion сохраняется durable marker. Неопределённый результат completion при отсутствии подтверждённого объекта помещает только этот slot в quarantine: PUT 409, retention не удаляет его, maintenance повторяет сверку. Startup продолжается; сохраняется single-use семантика. - Добавлены network regressions миграции и расширены проверки multipart recovery, потерянных ответов, отмены запросов и конфликтов destination. Настройка, команды миграции, recovery и ограничения отката: [docs/HTTP-UPLOAD.md](docs/HTTP-UPLOAD.md). Команды, результаты и границы подтверждения, включая qualification реального object store и 10 GiB: [docs/VALIDATION-0.7.9.md](docs/VALIDATION-0.7.9.md). Итог: 265 тестов, нагрузка 500 TLS клиентов и native reference — успешно. Реальные 10 GiB через MinIO (описанный test adapter), 1280parts и полный SHA-256 пройдены; подробности — [VALIDATION-0.7.9](docs/VALIDATION-0.7.9.md).
34 lines
3.0 KiB
Markdown
34 lines
3.0 KiB
Markdown
# Проверка 0.7.8
|
||
|
||
Linux x86_64, Rust 1.99.1, 2026-10-20. Полный лог: validation-logs-0.7.8/verify.txt.
|
||
Структурированный отчёт: validation-results.json; large.json содержит измерения реальной передачи.
|
||
|
||
| Проверка | Результат |
|
||
|---|---|
|
||
| cargo test --locked | 262 passed, 0 failed, 11 ignored |
|
||
| fmt / Clippy all-targets -D warnings / release | Успешно |
|
||
| Несколько upload components | Hosts/paths, discovery, quota/JWT/object isolation, restart, WS/BOSH/host-meta composition, ambiguous mount rejection — успешно |
|
||
| S3 wire | Независимая проверка SigV4, multipart, ошибки/abort/retry, ambiguous completion, SIGKILL и startup recovery, range/conditional/expiry — успешно |
|
||
| Реальный HTTPS local upload | 10737418240 байт PUT и полный GET, SHA-256 совпал; реально выделены дисковые блоки |
|
||
| Большой файл | PUT 14.39 с; GET 69.22 с; Range за 4 GiB, HEAD, reuse409, quota — успешно |
|
||
| Выборочный RSS каждые 50 мс | Сервер 17.24 MiB; клиент 20.19 MiB |
|
||
| Native reference | 8 module/storage + 1 TLS/SASL EXTERNAL federation — успешно |
|
||
| Нагрузка | 100 аккаунтов, 500 TLS клиентов, 5000 ping, 5000 сообщений, 10000 MAM; failures=[] |
|
||
|
||
Команда полного прогона: XMPP_LOAD_CHECK=1 bash scripts/verify-local.sh с native
|
||
reference env согласно scripts/prosody_compat/README.md.
|
||
Большой файл отдельно: python3 tests/upload_large_network.py --binary target/release/rust-xmpp.
|
||
Его 10 GiB временные данные удалены после проверки. Ошибка PID namespace в первом
|
||
измерителе RSS исправлена; итоговый прогон выполнен повторно с ненулевыми измерениями.
|
||
RSS — выборочный максимум, а не гарантия точного пика при любой нагрузке.
|
||
|
||
S3 проверен на независимом локальном HTTP protocol fixture; AWS/MinIO и реальная
|
||
передача 10 GiB в object store не проверены. Сервер использует multipart 8 MiB,
|
||
до восьми активных uploads на component. Для остаточных multipart sessions в
|
||
окне аварии до сохранения UploadId требуется bucket lifecycle
|
||
AbortIncompleteMultipartUpload. Настройка и ограничения: HTTP-UPLOAD.md.
|
||
|
||
Полная совместимость с Prosody и работа настоящих клиентов в production этим
|
||
прогоном не заявляются. Остальные ограничения: COMPATIBILITY.md. После финального
|
||
прогона исходники сервера не изменялись; менялись только отчёты и упаковка.
|