Skip to content

Commit f6f2c25

Browse files
committed
Add response content length
1 parent 3eb5af9 commit f6f2c25

File tree

4 files changed

+14
-8
lines changed

4 files changed

+14
-8
lines changed

core/sdk-core/src/main/java/software/amazon/awssdk/core/internal/http/pipeline/stages/HandleResponseStage.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515

1616
package software.amazon.awssdk.core.internal.http.pipeline.stages;
1717

18+
import static software.amazon.awssdk.core.internal.util.ProgressListenerUtils.wrapContentStreamProviderWithByteReadTrackingIfProgressListenerAttached;
19+
1820
import java.time.Duration;
1921
import java.util.concurrent.atomic.AtomicLong;
2022
import software.amazon.awssdk.annotations.SdkInternalApi;
@@ -24,9 +26,8 @@
2426
import software.amazon.awssdk.core.internal.http.RequestExecutionContext;
2527
import software.amazon.awssdk.core.internal.http.pipeline.RequestPipeline;
2628
import software.amazon.awssdk.core.internal.metrics.BytesReadTrackingInputStream;
27-
import software.amazon.awssdk.core.internal.progress.listener.ProgressUpdater;
28-
import software.amazon.awssdk.core.internal.util.DownloadProgressUpdaterInvocation;
2929
import software.amazon.awssdk.core.internal.util.MetricUtils;
30+
import software.amazon.awssdk.core.internal.util.ProgressListenerUtils;
3031
import software.amazon.awssdk.core.metrics.CoreMetric;
3132
import software.amazon.awssdk.http.AbortableInputStream;
3233
import software.amazon.awssdk.http.SdkHttpFullResponse;
@@ -47,6 +48,11 @@ public HandleResponseStage(HttpResponseHandler<Response<OutputT>> responseHandle
4748

4849
@Override
4950
public Response<OutputT> execute(SdkHttpFullResponse httpResponse, RequestExecutionContext context) throws Exception {
51+
52+
context.progressUpdater().ifPresent(progressUpdater -> {
53+
ProgressListenerUtils.updateProgressListenersWithResponseStatus(progressUpdater, httpResponse);
54+
});
55+
5056
SdkHttpFullResponse bytesReadTracking = trackBytesRead(httpResponse, context);
5157

5258
Response<OutputT> response = responseHandler.handle(bytesReadTracking, context.executionAttributes());
@@ -88,12 +94,9 @@ private SdkHttpFullResponse trackBytesRead(SdkHttpFullResponse httpFullResponse,
8894
private AbortableInputStream trackBytesRead(AbortableInputStream content, RequestExecutionContext context) {
8995
AtomicLong bytesRead = context.executionAttributes().getAttribute(SdkInternalExecutionAttribute.RESPONSE_BYTES_READ);
9096

91-
ProgressUpdater progressUpdater = context.progressUpdater().isPresent() ?
92-
context.progressUpdater().get() : null;
93-
9497
BytesReadTrackingInputStream bytesReadTrackedStream =
95-
new BytesReadTrackingInputStream(content, bytesRead,
96-
new DownloadProgressUpdaterInvocation(progressUpdater));
98+
wrapContentStreamProviderWithByteReadTrackingIfProgressListenerAttached(content, bytesRead, context);
99+
97100
return AbortableInputStream.create(bytesReadTrackedStream);
98101
}
99102
}

core/sdk-core/src/main/java/software/amazon/awssdk/core/internal/progress/listener/LoggingProgressListener.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ public void requestPrepared(Context.RequestPrepared context) {
6464

6565
@Override
6666
public void requestHeaderSent(Context.RequestHeaderSent context) {
67+
log.info(() -> "Started Upload...");
6768
context.uploadProgressSnapshot().ratioTransferred().ifPresent(progressBar::update);
6869
}
6970

core/sdk-core/src/main/java/software/amazon/awssdk/core/internal/util/ProgressListenerUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public static ContentStreamProvider wrapContentStreamProviderWithBytePublishTrac
5757
if (progressUpdater != null) {
5858
wrappedContentStreamProvider =
5959
ContentStreamProvider.fromInputStream(new BytesReadTrackingInputStream(
60-
(AbortableInputStream) contentStreamProvider.newStream(),
60+
AbortableInputStream.create(contentStreamProvider.newStream()),
6161
new AtomicLong(0L),
6262
new UploadProgressUpdaterInvocation(progressUpdater)));
6363
}

core/sdk-core/src/test/java/software/amazon/awssdk/core/internal/progress/listener/LoggingProgressListenerTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ public void defaultListener_successfulTransfer() {
6565
List<LogEvent> events = logCaptor.loggedEvents();
6666
assertLogged(events, Level.INFO, "Request Prepared...");
6767
assertLogged(events, Level.INFO, "| | 0.0%");
68+
assertLogged(events, Level.INFO, "Started Upload...");
6869
assertLogged(events, Level.INFO, "|= | 5.0%");
6970
assertLogged(events, Level.INFO, "|== | 10.0%");
7071
assertLogged(events, Level.INFO, "|=== | 15.0%");
@@ -120,6 +121,7 @@ public void test_customTicksListener_successfulTransfer() {
120121
List<LogEvent> events = logCaptor.loggedEvents();
121122
assertLogged(events, Level.INFO, "Request Prepared...");
122123
assertLogged(events, Level.INFO, "| | 0.0%");
124+
assertLogged(events, Level.INFO, "Started Upload...");
123125
assertLogged(events, Level.INFO, "|= | 20.0%");
124126
assertLogged(events, Level.INFO, "|== | 40.0%");
125127
assertLogged(events, Level.INFO, "|=== | 60.0%");

0 commit comments

Comments
 (0)