Skip to content

Commit de47e36

Browse files
committed
wip
Signed-off-by: sezen.leblay <sezen.leblay@datadoghq.com>
1 parent 75b77e5 commit de47e36

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/HttpServerDecorator.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,6 +518,11 @@ public <RESP> Flow<Void> callIGCallbackResponseAndHeaders(
518518
return Flow.ResultFlow.empty();
519519
}
520520

521+
BiFunction<RequestContext, OutputStream, Flow<Void>> responseBodyDone =
522+
cbp.getCallback(EVENTS.responseBodyDone());
523+
if (null != responseBodyDone) {
524+
responseBodyDone.apply(requestContext, responseBody);
525+
}
521526
BiFunction<RequestContext, Integer, Flow<Void>> addrCallback =
522527
cbp.getCallback(EVENTS.responseStarted());
523528
if (null != addrCallback) {

internal-api/src/main/java/datadog/trace/api/gateway/InstrumentationGateway.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import datadog.trace.api.http.StoredBodySupplier;
3636
import datadog.trace.api.telemetry.LoginEvent;
3737
import datadog.trace.bootstrap.instrumentation.api.URIDataAdapter;
38+
import java.io.OutputStream;
3839
import java.util.Map;
3940
import java.util.concurrent.atomic.AtomicReferenceArray;
4041
import java.util.function.BiConsumer;
@@ -318,6 +319,17 @@ public boolean equals(Object obj) {
318319
}
319320
};
320321
case RESPONSE_BODY_START_ID:
322+
return (C)
323+
(BiFunction<RequestContext, OutputStream, Void>)
324+
(ctx, outputStream) -> {
325+
try {
326+
return ((BiFunction<RequestContext, OutputStream, Void>) callback)
327+
.apply(ctx, outputStream);
328+
} catch (Throwable t) {
329+
log.warn("Callback for {} threw.", eventType, t);
330+
return null;
331+
}
332+
};
321333
case REQUEST_BODY_START_ID:
322334
return (C)
323335
new BiFunction<RequestContext, StoredBodySupplier, Void>() {
@@ -333,6 +345,17 @@ public Void apply(RequestContext ctx, StoredBodySupplier storedBodySupplier) {
333345
}
334346
};
335347
case RESPONSE_BODY_DONE_ID:
348+
return (C)
349+
(BiFunction<RequestContext, OutputStream, Flow<Void>>)
350+
(ctx, outputStream) -> {
351+
try {
352+
return ((BiFunction<RequestContext, OutputStream, Flow<Void>>) callback)
353+
.apply(ctx, outputStream);
354+
} catch (Throwable t) {
355+
log.warn("Callback for {} threw.", eventType, t);
356+
return Flow.ResultFlow.empty();
357+
}
358+
};
336359
case REQUEST_BODY_DONE_ID:
337360
return (C)
338361
new BiFunction<RequestContext, StoredBodySupplier, Flow<Void>>() {

0 commit comments

Comments
 (0)