Skip to content

Commit e56d234

Browse files
committed
Improve detection of missing request end events
1 parent 7787c9d commit e56d234

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

dd-java-agent/appsec/src/main/java/com/datadog/appsec/gateway/AppSecRequestContext.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,9 @@ public class AppSecRequestContext implements DataBundle, Closeable {
143143
// keep a reference to the last published usr.session_id
144144
private volatile String sessionId;
145145

146+
// Used to detect missing request-end event at close.
147+
private volatile boolean requestEndCalled;
148+
146149
private static final AtomicIntegerFieldUpdater<AppSecRequestContext> WAF_TIMEOUTS_UPDATER =
147150
AtomicIntegerFieldUpdater.newUpdater(AppSecRequestContext.class, "wafTimeouts");
148151
private static final AtomicIntegerFieldUpdater<AppSecRequestContext> RASP_TIMEOUTS_UPDATER =
@@ -584,10 +587,15 @@ public void close() {
584587
/* Should be accessible from the modules */
585588

586589
public void close(boolean requiresPostProcessing) {
587-
if (additive != null || derivatives != null) {
590+
if (!requestEndCalled) {
591+
log.debug(SEND_TELEMETRY, "Request end event was not called before close");
592+
}
593+
if (additive != null) {
588594
log.debug(
589595
SEND_TELEMETRY, "WAF object had not been closed (probably missed request-end event)");
590596
closeAdditive();
597+
}
598+
if (derivatives != null) {
591599
derivatives = null;
592600
}
593601

@@ -699,4 +707,9 @@ public boolean isThrottled(RateLimiter rateLimiter) {
699707
public boolean isAdditiveClosed() {
700708
return additiveClosed;
701709
}
710+
711+
/** Must be called during request end event processing. */
712+
void setRequestEndCalled() {
713+
requestEndCalled = true;
714+
}
702715
}

dd-java-agent/appsec/src/main/java/com/datadog/appsec/gateway/GatewayBridge.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -767,6 +767,7 @@ private NoopFlow onRequestEnded(RequestContext ctx_, IGSpanInfo spanInfo) {
767767
if (ctx == null) {
768768
return NoopFlow.INSTANCE;
769769
}
770+
ctx.setRequestEndCalled();
770771

771772
maybeExtractSchemas(ctx);
772773

0 commit comments

Comments
 (0)