From c35b3e5c822d9ffc57893393603866468ce24c80 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Fri, 1 May 2020 17:05:02 +0100 Subject: [PATCH] Fix race condition in WriteResultPublisher Closes gh-24989 --- .../http/server/reactive/WriteResultPublisher.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/spring-web/src/main/java/org/springframework/http/server/reactive/WriteResultPublisher.java b/spring-web/src/main/java/org/springframework/http/server/reactive/WriteResultPublisher.java index 5636a9faa0f..523050a37a8 100644 --- a/spring-web/src/main/java/org/springframework/http/server/reactive/WriteResultPublisher.java +++ b/spring-web/src/main/java/org/springframework/http/server/reactive/WriteResultPublisher.java @@ -175,6 +175,9 @@ class WriteResultPublisher implements Publisher { @Override void publishComplete(WriteResultPublisher publisher) { publisher.completedBeforeSubscribed = true; + if(State.SUBSCRIBED.equals(publisher.state.get())) { + publisher.state.get().publishComplete(publisher); + } } @Override void publishError(WriteResultPublisher publisher, Throwable ex) { @@ -190,6 +193,9 @@ class WriteResultPublisher implements Publisher { @Override void publishComplete(WriteResultPublisher publisher) { publisher.completedBeforeSubscribed = true; + if(State.SUBSCRIBED.equals(publisher.state.get())) { + publisher.state.get().publishComplete(publisher); + } } @Override void publishError(WriteResultPublisher publisher, Throwable ex) {