Describe the bug
A resource leak is observed when retrieving an Amazon S3 object as a stream using S3Client.getObject() with ResponseTransformer.toInputStream(). This leak occurs despite using both try-with-resources for automatic resource management and manual calls to close() on the InputStream.
Thread dump observation:
The thread response-input-stream-timeout-scheduler is visible in the dump.
Regression Issue
Expected Behavior
When the ResponseInputStream returned by s3Client.getObject(..., ResponseTransformer.toInputStream()) is closed, all associated resources should be released and closed.
Current Behavior
The thread response-input-stream-timeout-scheduler is visible in the dump preventing the module to perform a clean and graceful shutdown.
Reproduction Steps
Code Snippet:
import org.apache.commons.io.IOUtils;
try (InputStream inputStream = s3Client.getObject(getObjectRequest, ResponseTransformer.toInputStream())) {
return IOUtils.toString(inputStream, StandardCharsets.UTF_8);
}
Possible Solution
No response
Additional Information/Context
As a workaround, s3Client.getObject(getObjectRequest, ResponseTransformer.toBytes()).asByteArray(); was used to eliminate stream management.
AWS Java SDK version used
2.33.4
JDK version used
JDK17
Operating System and version
Linux
Describe the bug
A resource leak is observed when retrieving an Amazon S3 object as a stream using
S3Client.getObject()withResponseTransformer.toInputStream(). This leak occurs despite using bothtry-with-resourcesfor automatic resource management and manual calls toclose()on theInputStream.Thread dump observation:
The thread
response-input-stream-timeout-scheduleris visible in the dump.Regression Issue
Expected Behavior
When the
ResponseInputStreamreturned bys3Client.getObject(..., ResponseTransformer.toInputStream())is closed, all associated resources should be released and closed.Current Behavior
The thread
response-input-stream-timeout-scheduleris visible in the dump preventing the module to perform a clean and graceful shutdown.Reproduction Steps
Code Snippet:
Possible Solution
No response
Additional Information/Context
As a workaround,
s3Client.getObject(getObjectRequest, ResponseTransformer.toBytes()).asByteArray();was used to eliminate stream management.AWS Java SDK version used
2.33.4
JDK version used
JDK17
Operating System and version
Linux