Skip to content

release FileStoragePresignedMultipartServlet#36

Closed
karle0wne wants to merge 1 commit intomasterfrom
add-s3-multipart
Closed

release FileStoragePresignedMultipartServlet#36
karle0wne wants to merge 1 commit intomasterfrom
add-s3-multipart

Conversation

@karle0wne
Copy link
Copy Markdown
Contributor

@karle0wne karle0wne commented Mar 24, 2026

Этот PR добавляет в file-storage поддержку нового multipart-сценария, где сервиc не участвует в передаче содержимого частей файла и не держит на себе лишний поток данных. Раньше при multipart-загрузке сервис был промежуточным звеном между клиентом и S3-совместимым хранилищем: части приходили в file-storage, и уже он отправлял их дальше. Для больших и заранее не ограниченных по размеру файлов это даёт лишнюю нагрузку и усложняет жизненный цикл загрузки. В новой реализации сервис берёт на себя только управление процессом: открывает multipart upload в object storage, выдаёт ссылку для загрузки конкретной части, хранит состояние загрузки и затем завершает или прерывает её. То есть file-storage здесь работает как координатор multipart-сессии поверх S3, а сами части уходят напрямую в бакет.

На уровне реализации для этого добавлен отдельный thrift endpoint /file_storage/presigned-multipart/v1 и новый обработчик FileStoragePresignedMultipartHandler. Внутри S3-логика разделена по ответственности: обычная работа с файлами вынесена в S3StorageService, старый multipart flow остался в S3LegacyMultipartStorageService, новый сценарий прямой multipart-загрузки реализован в S3PresignedMultipartStorageService. Состояние multipart upload теперь хранится в metadata object versions в S3: сервис сохраняет fileId, multipartUploadId, время создания, пользовательскую metadata и текущий статус загрузки, за счёт чего умеет отдавать текущее состояние upload, проверять корректность uploadId, запрещать операции после завершения или отмены и возвращать ссылку на файл только после успешного complete. Заодно сервис переведён на обновлённый proto-контракт, убраны старые deprecated-методы, добавлен TTL для presigned part URL и обновлены зависимости и документация под новую схему работы.

@karle0wne karle0wne requested a review from a team as a code owner March 24, 2026 14:12
@@ -0,0 +1,128 @@
package dev.vality.file.storage.service;
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

S3LegacyMultipartStorageService и S3StorageService это распиленный S3V2Service , тут не менялось ни строчки хоть и отображает что новый код. в плане того что их можно и не смотреть

@karle0wne karle0wne closed this Mar 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant