From 224589ea74a2bfd4230e67331c109944df7260b4 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Wed, 11 Apr 2018 14:23:16 -0400 Subject: [PATCH] Remove write pausing in Undertow response Using the simple example shown in the ticket but switching from Mono to Flux (and 5,000,000 onNext calls) shows that constant pausing causes significant overhead and is not worth the trouble vs ignoring the onWritePossible in REQUESTED state. Issue: SPR-16702 --- .../http/server/reactive/AbstractListenerWriteProcessor.java | 5 +++++ .../http/server/reactive/UndertowServerHttpResponse.java | 5 ----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerWriteProcessor.java b/spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerWriteProcessor.java index bc55d0052b..50a245dc30 100644 --- a/spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerWriteProcessor.java +++ b/spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerWriteProcessor.java @@ -162,7 +162,11 @@ public abstract class AbstractListenerWriteProcessor implements ProcessorThe default implementation is a no-op. + * @deprecated originally introduced for Undertow to stop write notifications + * when no data is available, but deprecated as of as of 5.0.6 since constant + * switching on every requested item causes a significant slowdown. */ + @Deprecated protected void writingPaused() { } @@ -271,6 +275,7 @@ public abstract class AbstractListenerWriteProcessor implements Processor void onWritePossible(AbstractListenerWriteProcessor processor) { if (processor.changeState(this, WRITING)) { diff --git a/spring-web/src/main/java/org/springframework/http/server/reactive/UndertowServerHttpResponse.java b/spring-web/src/main/java/org/springframework/http/server/reactive/UndertowServerHttpResponse.java index b00e338010..58aed42f29 100644 --- a/spring-web/src/main/java/org/springframework/http/server/reactive/UndertowServerHttpResponse.java +++ b/spring-web/src/main/java/org/springframework/http/server/reactive/UndertowServerHttpResponse.java @@ -217,11 +217,6 @@ class UndertowServerHttpResponse extends AbstractListenerServerHttpResponse impl return (dataBuffer.readableByteCount() == 0); } - @Override - protected void writingPaused() { - this.channel.suspendWrites(); - } - @Override protected void writingComplete() { this.channel.getWriteSetter().set(null);