Skip to content

Conversation

@L-Applin
Copy link
Contributor

Changes required to run benchmarks using the MultipartS3AsyncClient (Upload and Copy)

Motivation and Context

Performance benchmarks were run as part of the release of the MultipartS3AsyncClient

Modifications

  • New benchmarks classes created for the Java based Multipart S3 Async Client
  • Add a new benchmark target java as a --version=java option
  • Add new options
    • --connAcqTimeoutInSec the connection acquire timout. 30GB benchmark were timing out, increasing this value prevented it.
    • --crtHttp which force using the CRT HTTP Cient for the java based benchmark if --crtHttp=true
    • --maxConcurrency to compare the influence of this parameter on the http clients.

Testing

none - benchmark were run, in an EC2 instance

Screenshots (if appropriate)

none

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)

Checklist

  • I have read the CONTRIBUTING document
  • Local run of mvn install succeeds
  • My code follows the code style of this project
  • My change requires a change to the Javadoc documentation
  • I have updated the Javadoc documentation accordingly
  • I have added tests to cover my changes
  • All new and existing tests passed
  • I have added a changelog entry. Adding a new entry must be accomplished by running the scripts/new-change script and following the instructions. Commit the new file created by the script in .changes/next-release with your changes.
  • My change is to implement 1.11 parity feature and I have updated LaunchChangelog

License

  • I confirm that this pull request can be released under the Apache 2 license

zoewangg and others added 30 commits June 16, 2023 15:14
* Implement multipart upload in Java-based S3 async client
Co-authored-by: Matthew Miller <[email protected]>
* Iterate SdkFields to convert requests

* Fix flaky test

* Rename convertion utils class
…4188)

* Create split method in AsyncRequestBody to return SplittingPublisher

* Fix Javadoc and build
* Handle null response metadata

* Fix build
* Support uploading with unknown content length

* Refactoring
fix merge conflicts
* Multipart API
fix merge conflicts

* getObject(...) throw UnsupportedOperationException

* Use user agent for all requests in MultipartS3Client

* MultipartS3AsyncClient javadoc + API_NAME private

* use `maximumMemoryUsageInBytes`

* fix problem with UserAgent, cleanup

* move contextParam keys to S3AsyncClientDecorator

* javadoc

* more javadoc

* Use 4x part size as default apiCallBufferSize
@L-Applin L-Applin requested a review from a team as a code owner August 10, 2023 15:44
@L-Applin L-Applin requested a review from millems August 10, 2023 16:19
- updated create_benchmark_files script to calculate size
@L-Applin L-Applin enabled auto-merge (squash) August 14, 2023 17:26
@sonarqubecloud
Copy link

SonarCloud Quality Gate failed.    Quality Gate failed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 9 Code Smells

0.0% 0.0% Coverage
6.1% 6.1% Duplication

warning The version of Java (11.0.2) you have used to run this analysis is deprecated and we will stop accepting it soon. Please update to at least Java 17.
Read more here

idea Catch issues before they fail your Quality Gate with our IDE extension sonarlint SonarLint

@L-Applin L-Applin merged commit 0558677 into master Aug 14, 2023
@L-Applin L-Applin deleted the olapplin/s3-multi-perf-2 branch August 15, 2025 18:19
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.

3 participants