diff --git a/instrumentation/servlet/servlet-3.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/servlet/v3_0/nowrapping/Servlet30AndFilterInstrumentation.java b/instrumentation/servlet/servlet-3.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/servlet/v3_0/nowrapping/Servlet30AndFilterInstrumentation.java index 526dc059..6d5b6b25 100644 --- a/instrumentation/servlet/servlet-3.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/servlet/v3_0/nowrapping/Servlet30AndFilterInstrumentation.java +++ b/instrumentation/servlet/servlet-3.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/servlet/v3_0/nowrapping/Servlet30AndFilterInstrumentation.java @@ -183,6 +183,9 @@ public static void exit( if (!request.isAsyncStarted()) { if (instrumentationConfig.httpHeaders().response()) { + if (throwable == null && !httpResponse.isCommitted()) { + httpResponse.flushBuffer(); + } for (String headerName : httpResponse.getHeaderNames()) { String headerValue = httpResponse.getHeader(headerName); currentSpan.setAttribute( @@ -212,6 +215,7 @@ public static void exit( urlEncodedMapContextStore); } } + } catch (IOException e) { } finally { Throwable tmp = throwable; while (tmp != null) { // loop in case our exception is nested (eg. springframework)