s3ng: Provide objectSize when uploading to reduce memory usage #1940
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.
According to the documentation for
PutObject
, settingobjectSize
to-1
causes a multipart Put operation until the input stream reaches EOF, which can result in high memory usage. Something similar has already been reported in minio/minio-go#1496This PR changes the behavior so it tries to determine the file size before uploading it. Should the given
io.Reader
not be a file, it falls back to using-1
.In my testing this change has reduced the memory usage when uploading files to OICS quite a bit: From over 1GB for a single user, down to <300MB.
Closes #1933