Fix double-logging of response 54/141254/2
authorsaul.gill <saul.gill@est.tech>
Tue, 10 Jun 2025 15:01:25 +0000 (16:01 +0100)
committersaul.gill <saul.gill@est.tech>
Mon, 16 Jun 2025 12:39:32 +0000 (13:39 +0100)
Issue-ID: CCSDK-4117
Change-Id: I5ecef4f65e79074938980f2655c3e0b569a323e7
Signed-off-by: saul.gill <saul.gill@est.tech>
a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/util/v3/ReactiveEntryExitFilter.java

index 642c868..866688b 100644 (file)
@@ -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<Void> writeWith(Publisher<? extends DataBuffer> 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()