[--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).
2.3 KiB
2.3 KiB
0.7.8
- Несколько XEP-0363
http_file_sharecomponents на общих 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.
Реальная передача 10 GiB по HTTPS с local backend проверена: полный PUT/GET, совпадение SHA-256, Range за 4 GiB и выборочное измерение памяти. Полная регрессия, нагрузка 500 TLS клиентов и native reference tests пройдены. Результаты: docs/VALIDATION-0.7.8.md.