From 3a8f6e4bbff10bc911d2a16f464e58232b98cf69 Mon Sep 17 00:00:00 2001 From: "saul.gill" Date: Tue, 10 Jun 2025 16:01:25 +0100 Subject: [PATCH] Fix double-logging of response Issue-ID: CCSDK-4117 Change-Id: I5ecef4f65e79074938980f2655c3e0b569a323e7 Signed-off-by: saul.gill --- .../util/v3/ReactiveEntryExitFilter.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/util/v3/ReactiveEntryExitFilter.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/util/v3/ReactiveEntryExitFilter.java index 642c868a..866688bf 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/util/v3/ReactiveEntryExitFilter.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/util/v3/ReactiveEntryExitFilter.java @@ -98,18 +98,24 @@ public class ReactiveEntryExitFilter implements WebFilter { .doFinally(signal -> MDC.clear())); // Clear MDC after the request body is processed } }; + + StringBuilder responseBodyBuilder = new StringBuilder(); + ServerHttpResponseDecorator loggingServerHttpResponseDecorator = new ServerHttpResponseDecorator(exchange.getResponse()) { @Override public Mono writeWith(Publisher body) { return Mono.deferContextual(contextView -> super.writeWith(Flux.from(body).doOnNext(dataBuffer -> { String responseBody = dataBuffer.toString(StandardCharsets.UTF_8); + responseBodyBuilder.append(responseBody); + })).doFinally(signalType -> { restoreFromContextToMdc(contextView); logger.info("For the request ID: {} the Status code of the response: {}", - exchange.getRequest().getId(), getStatusCode()); + exchange.getRequest().getId(), exchange.getResponse().getStatusCode()); logger.trace("For the request ID: {} the response is: {} ", - exchange.getRequest().getId(), responseBody); - })).doFinally(signalType -> MDC.clear())); // Clear MDC to prevent leakage + exchange.getRequest().getId(), responseBodyBuilder); + MDC.clear(); + })); // Clear MDC to prevent leakage } }; return chain.filter(exchange.mutate() -- 2.16.6