From 54678279055fda149d5d9772450a8a912f574fdc Mon Sep 17 00:00:00 2001 From: Ruslan Akhundov Date: Sat, 6 Jun 2020 15:26:45 +0100 Subject: [PATCH] Fixes memory leak when rewriting gzipped response body. Fixes gh-1766 --- .../rewrite/ModifyResponseBodyGatewayFilterFactory.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/factory/rewrite/ModifyResponseBodyGatewayFilterFactory.java b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/factory/rewrite/ModifyResponseBodyGatewayFilterFactory.java index 2830c0e1..e39aff17 100644 --- a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/factory/rewrite/ModifyResponseBodyGatewayFilterFactory.java +++ b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/factory/rewrite/ModifyResponseBodyGatewayFilterFactory.java @@ -342,8 +342,11 @@ public class ModifyResponseBodyGatewayFilterFactory extends MessageBodyEncoder encoder = messageBodyEncoders.get(encoding); if (encoder != null) { DataBufferFactory dataBufferFactory = httpResponse.bufferFactory(); - response = response.publishOn(Schedulers.parallel()) - .map(encoder::encode).map(dataBufferFactory::wrap); + response = response.publishOn(Schedulers.parallel()).map(buffer -> { + byte[] encodedResponse = encoder.encode(buffer); + DataBufferUtils.release(buffer); + return encodedResponse; + }).map(dataBufferFactory::wrap); break; } }