Files
rust-xmpp/docs/validation-logs-0.7.8/large.json
T
wt b30fc524d8 - Offline CLI `upload-migrate OLD_CONFIG NEW_CONFIG --component HOST
[--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).
2026-10-20 17:06:14 +07:00

36 lines
1.1 KiB
JSON

{
"status": "passed",
"requested_bytes": 10737418240,
"python_chunk_bytes": 1048576,
"transport": "verified TLS HTTPS",
"storage": "local streaming file",
"rss_sample_interval_seconds": 0.05,
"free_disk_before_bytes": 14037065728,
"max_rss_bytes": {
"server": 18079744,
"client": 21168128
},
"rss_proc_status_paths": {
"server": "/proc/68012/status",
"client": "/proc/self/status"
},
"put_bytes": 10737418240,
"put_seconds": 14.389516601999276,
"sha256": "e4c296c41d3a9605f0348961e41ed835b5f42c220751ed2269a726951546c935",
"stored_bytes": 10737418240,
"allocated_bytes": 10737422336,
"free_disk_after_put_bytes": 2734645248,
"head_status": 200,
"get_bytes": 10737418240,
"get_read_calls": 10241,
"get_seconds": 69.22072244599985,
"get_sha256": "e4c296c41d3a9605f0348961e41ed835b5f42c220751ed2269a726951546c935",
"range_status": 206,
"range_offset": 4294967289,
"reuse_status": 409,
"over_quota_condition": "not-acceptable",
"temporary_files_cleaned": true,
"free_disk_after_cleanup_bytes": 12774170624,
"total_seconds": 84.19309745400096
}