diff --git a/spring-web/src/main/java/org/springframework/http/codec/EncoderHttpMessageWriter.java b/spring-web/src/main/java/org/springframework/http/codec/EncoderHttpMessageWriter.java index 3fe19207738..cf1d1464467 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/EncoderHttpMessageWriter.java +++ b/spring-web/src/main/java/org/springframework/http/codec/EncoderHttpMessageWriter.java @@ -141,16 +141,18 @@ public class EncoderHttpMessageWriter implements HttpMessageWriter { } if (isStreamingMediaType(contentType)) { - return message.writeAndFlushWith(body.map(buffer -> { - Hints.touchDataBuffer(buffer, hints, logger); - return Mono.just(buffer).doOnDiscard(PooledDataBuffer.class, DataBufferUtils::release); - })); + return message + .writeAndFlushWith(body.map(buffer -> { + Hints.touchDataBuffer(buffer, hints, logger); + return Mono.just(buffer).doOnDiscard(PooledDataBuffer.class, DataBufferUtils::release); + })) + .doOnDiscard(PooledDataBuffer.class, DataBufferUtils::release); } if (logger.isDebugEnabled()) { body = body.doOnNext(buffer -> Hints.touchDataBuffer(buffer, hints, logger)); } - return message.writeWith(body); + return message.writeWith(body).doOnDiscard(PooledDataBuffer.class, DataBufferUtils::release); } @Nullable