- 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).
This commit is contained in:
1 parent
c260d7bab8
commit
b30fc524d8
41 files changed
+5936
-152
No files matched your search
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"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
|
||||
}
|
||||
Reference in new issue
Block a user