[--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).
31 lines
2.3 KiB
Markdown
31 lines
2.3 KiB
Markdown
# 0.7.8
|
||
|
||
- Несколько XEP-0363 `http_file_share` components на общих HTTP listeners:
|
||
маршрутизация по Host и mount, отдельные discovery/IQ slots, квоты и tokens.
|
||
- Разные HTTP hosts могут использовать одинаковые mounts; один host — разные
|
||
непересекающиеся paths. Неоднозначные одинаковые/вложенные mounts отвергаются
|
||
при startup с именами components и конфликтующими путями.
|
||
- Upload dispatcher компонуется с WebSocket, BOSH и `http_altconnect` без
|
||
объединения конфликтующих fallback routers.
|
||
- Сохранён local backend; добавлен S3-compatible gateway с SigV4, path-style
|
||
addressing, HTTPS и loopback HTTP для изолированных тестов. Credentials
|
||
можно получать через поля `*_env`.
|
||
- Multipart передача частями 8 MiB, максимум восемь активных S3 uploads
|
||
на component,
|
||
проверка stream size, single-use PUT, abort при ошибке/отмене и recovery
|
||
сохранённых multipart records перед открытием listeners.
|
||
- Native XMPP metadata остаются локальными; backend identity guard запрещает
|
||
скрытую смену хранилища при существующих slots. Rotation S3 credentials
|
||
не меняет identity backend.
|
||
- Добавлены network regressions для нескольких components и независимый
|
||
локальный S3 protocol fixture с повторной проверкой SigV4. Fixture не
|
||
подтверждает совместимость с production AWS S3 или MinIO.
|
||
|
||
Настройка, lifecycle `AbortIncompleteMultipartUpload`, recovery и ограничения:
|
||
[docs/HTTP-UPLOAD.md](docs/HTTP-UPLOAD.md).
|
||
|
||
Реальная передача 10 GiB по HTTPS с local backend проверена: полный PUT/GET,
|
||
совпадение SHA-256, Range за 4 GiB и выборочное измерение памяти. Полная
|
||
регрессия, нагрузка 500 TLS клиентов и native reference tests пройдены.
|
||
Результаты: [docs/VALIDATION-0.7.8.md](docs/VALIDATION-0.7.8.md).
|