diff --git a/build.gradle b/build.gradle index 79174b8eeb6..888db0df60f 100644 --- a/build.gradle +++ b/build.gradle @@ -40,7 +40,7 @@ ext { log4jVersion = "2.11.2" nettyVersion = "4.1.34.Final" quartzVersion = "2.3.0" - reactorVersion = "Californium-BUILD-SNAPSHOT" + reactorVersion = "Californium-SR6" rxjavaVersion = "1.3.8" rxjavaAdapterVersion = "1.2.1" rxjava2Version = "2.2.8" @@ -149,7 +149,6 @@ configure(allprojects) { project -> repositories { maven { url "https://repo.spring.io/libs-release" } - maven { url "https://repo.spring.io/snapshot" } // Reactor maven { url "https://oss.jfrog.org/artifactory/libs-snapshot" } // RSocket mavenLocal() } diff --git a/spring-core/src/main/java/org/springframework/core/io/buffer/DataBufferUtils.java b/spring-core/src/main/java/org/springframework/core/io/buffer/DataBufferUtils.java index 40198ba9fa5..359cf189c4b 100644 --- a/spring-core/src/main/java/org/springframework/core/io/buffer/DataBufferUtils.java +++ b/spring-core/src/main/java/org/springframework/core/io/buffer/DataBufferUtils.java @@ -57,6 +57,12 @@ public abstract class DataBufferUtils { private static final Consumer RELEASE_CONSUMER = DataBufferUtils::release; + /** + * Workaround to disable use of pooled buffers: + * https://github.com/reactor/reactor-core/issues/1634. + */ + private static final DataBufferFactory defaultDataBufferFactory = new DefaultDataBufferFactory(); + //--------------------------------------------------------------------- // Reading @@ -135,12 +141,14 @@ public abstract class DataBufferUtils { Assert.isTrue(position >= 0, "'position' must be >= 0"); Assert.isTrue(bufferSize > 0, "'bufferSize' must be > 0"); + DataBufferFactory bufferFactoryToUse = defaultDataBufferFactory; + Flux flux = Flux.using(channelSupplier, channel -> Flux.create(sink -> { ReadCompletionHandler handler = - new ReadCompletionHandler(channel, sink, position, bufferFactory, bufferSize); + new ReadCompletionHandler(channel, sink, position, bufferFactoryToUse, bufferSize); sink.onDispose(handler::dispose); - DataBuffer dataBuffer = bufferFactory.allocateBuffer(bufferSize); + DataBuffer dataBuffer = bufferFactoryToUse.allocateBuffer(bufferSize); ByteBuffer byteBuffer = dataBuffer.asByteBuffer(0, bufferSize); channel.read(byteBuffer, position, dataBuffer, handler); }),