Skip to content

Commit b7e920f

Browse files
authored
Fix AsyncRequestBody.fromByteBuffers() never completes when no buffers are given (#6239)
* fix and test added for the bug * changelog added * only check for 0 buffer length
1 parent 3b96b2e commit b7e920f

File tree

3 files changed

+20
-0
lines changed

3 files changed

+20
-0
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"type": "bugfix",
3+
"category": "AWS SDK for Java v2",
4+
"contributor": "",
5+
"description": "Fixed AsyncRequestBody.fromByteBuffers() and related methods to properly complete when called with no buffers"
6+
}

core/sdk-core/src/main/java/software/amazon/awssdk/core/internal/async/ByteBuffersAsyncRequestBody.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,10 @@ public void request(long n) {
8686
if (n > 0) {
8787
int i = index.getAndIncrement();
8888

89+
if (buffers.length == 0 && completed.compareAndSet(false, true)) {
90+
s.onComplete();
91+
}
92+
8993
if (i >= buffers.length) {
9094
return;
9195
}

core/sdk-core/src/test/java/software/amazon/awssdk/core/internal/async/ByteBuffersAsyncRequestBodyTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,16 @@ public void subscriberIsMarkedAsCompleted() {
8181
assertEquals(1, subscriber.publishedResults.size());
8282
}
8383

84+
@Test
85+
public void subscriberIsMarkedAsCompletedWhenNoBufferIsGiven() {
86+
AsyncRequestBody requestBody = ByteBuffersAsyncRequestBody.of();
87+
TestSubscriber subscriber = new TestSubscriber();
88+
89+
requestBody.subscribe(subscriber);
90+
subscriber.request(1);
91+
assertTrue(subscriber.onCompleteCalled);
92+
}
93+
8494
@Test
8595
public void subscriberIsMarkedAsCompletedWhenARequestIsMadeForMoreBuffersThanAreAvailable() {
8696
AsyncRequestBody requestBody = ByteBuffersAsyncRequestBody.from("Hello World!".getBytes(StandardCharsets.UTF_8));

0 commit comments

Comments
 (0)