aws-sdk-java-v2
aws-sdk-java-v2 copied to clipboard
Invalid data returned from "InputStream.read()" on an empty S3 Object
Describe the bug
I have an empty S3 object. When I create an InputStream to that object and invoke "read()" I get back an int "212".
Expected Behavior
I would expect InputStream.read()
to an empty S3Object to return -1
.
Current Behavior
Currently it returns a single byte 212
.
Reproduction Steps
When executed against a 0 byte (empty) S3Object the following code returns 212
. It should return -1
var getObjectRequest =
GetObjectRequest.builder()
.bucket("bucket")
.key(
"emptyobject")
.build();
try (var fileContent =
s3Client.getObject(getObjectRequest, ResponseTransformer.toInputStream())) {
System.out.println(fileContent.read());
}
Possible Solution
I don't know but the problem appears to be in the software.amazon.awssdk.services.s3.checksums.ChecksumValidatingInputStream
class. That is where the result diverges from using something like InputStream.readAllBytes()
.
Additional Information/Context
No response
AWS Java SDK version used
2.17.283
JDK version used
17
Operating System and version
Windows 11