release FileStoragePresignedMultipartServlet#36
Closed
Conversation
karle0wne
commented
Mar 25, 2026
| @@ -0,0 +1,128 @@ | |||
| package dev.vality.file.storage.service; | |||
Contributor
Author
There was a problem hiding this comment.
S3LegacyMultipartStorageService и S3StorageService это распиленный S3V2Service , тут не менялось ни строчки хоть и отображает что новый код. в плане того что их можно и не смотреть
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Этот 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 и обновлены зависимости и документация под новую схему работы.