diff --git a/spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerWriteFlushProcessor.java b/spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerWriteFlushProcessor.java index 00de5e141e3..8970bd2ddd2 100644 --- a/spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerWriteFlushProcessor.java +++ b/spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerWriteFlushProcessor.java @@ -103,6 +103,14 @@ public abstract class AbstractListenerWriteFlushProcessor implements Processo } } + /** + * Invoked when an error happens while flushing. Defaults to no-op. + * Servlet 3.1 based implementations will receive + * {@link AsyncListener#onError(Throwable)} event. + */ + protected void flushingFailed(Throwable t) { + } + /** * Create a new processor for subscribing to the next flush boundary. @@ -167,8 +175,8 @@ public abstract class AbstractListenerWriteFlushProcessor implements Processo processor.flush(); } catch (IOException ex) { - processor.cancel(); - processor.onError(ex); + processor.flushingFailed(ex); + return; } if (processor.subscriberCompleted) { if (processor.changeState(this, COMPLETED)) { 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 d682672a31a..21cbe604823 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,6 +162,15 @@ public abstract class AbstractListenerWriteProcessor implements Processor implements Processor