aws-sdk-java-v2
aws-sdk-java-v2 copied to clipboard
Fix request cancellation issue in the AWS CRT-based S3 client that co…
…uld lead to memory leak
Motivation and Context
Currently, if a request is cancelled in AWS CRT-based S3 client, CRT resource will not be cancelled and cleaned up properly, leaking to memory leak.
The root cause is that we are calling S3MetaRequest.close()
before S3MetaRequest.cancel()
.
Modifications
- Updated the code to invoke cancel before close.
- Created
S3MetaRequestWrapper
class to make sure we don't invoke S3MetaRequest if it's closed. All interactions withS3MetaRequest
must be throughS3MetaRequestWrapper
going forward. - Added checkstyle rule to make sure
S3MetaRequestWrapper
is used instead ofS3MetaRequest
.
Testing
Tested it locally and added new functional tests.
Screenshots (if appropriate)
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
- [x] I confirm that this pull request can be released under the Apache 2 license
Quality Gate passed
Issues
1 New issue
Measures
0 Security Hotspots
85.3% Coverage on New Code
0.0% Duplication on New Code