Skip to content

Commit e8b42c5

Browse files
kzander91bclozel
authored andcommitted
Optimize uses of onErrorResume()
This commit replaces uses of onErrorResume() with - onErrorMap() in places where onErrorResume() is just used to map to a different exception. - onErrorComplete() where onErrorResume() just maps to Mono.empty(). - onErrorReturn() where onErrorResum() just maps to Mono.just(). Closes gh-31352
1 parent 14c5228 commit e8b42c5

File tree

13 files changed

+23
-23
lines changed

13 files changed

+23
-23
lines changed

spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/PayloadMethodArgumentResolver.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ private Mono<Object> decodeContent(MethodParameter parameter, Message<?> message
231231
Flux<?> flux = content
232232
.filter(this::nonEmptyDataBuffer)
233233
.map(buffer -> decoder.decode(buffer, elementType, mimeType, hints))
234-
.onErrorResume(ex -> Flux.error(handleReadError(parameter, message, ex)));
234+
.onErrorMap(ex -> handleReadError(parameter, message, ex));
235235
if (isContentRequired) {
236236
flux = flux.switchIfEmpty(Flux.error(() -> handleMissingBody(parameter, message)));
237237
}
@@ -245,7 +245,7 @@ private Mono<Object> decodeContent(MethodParameter parameter, Message<?> message
245245
Mono<?> mono = content.next()
246246
.filter(this::nonEmptyDataBuffer)
247247
.map(buffer -> decoder.decode(buffer, elementType, mimeType, hints))
248-
.onErrorResume(ex -> Mono.error(handleReadError(parameter, message, ex)));
248+
.onErrorMap(ex -> handleReadError(parameter, message, ex));
249249
if (isContentRequired) {
250250
mono = mono.switchIfEmpty(Mono.error(() -> handleMissingBody(parameter, message)));
251251
}

spring-messaging/src/main/java/org/springframework/messaging/tcp/reactor/ReactorNetty2TcpClient.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -256,12 +256,12 @@ public CompletableFuture<Void> shutdownAsync() {
256256
this.channelGroup.close().addListener(future -> channnelGroupCloseSink.tryEmitEmpty());
257257
result = channnelGroupCloseSink.asMono();
258258
if (this.loopResources != null) {
259-
result = result.onErrorResume(ex -> Mono.empty()).then(this.loopResources.disposeLater());
259+
result = result.onErrorComplete().then(this.loopResources.disposeLater());
260260
}
261261
if (this.poolResources != null) {
262-
result = result.onErrorResume(ex -> Mono.empty()).then(this.poolResources.disposeLater());
262+
result = result.onErrorComplete().then(this.poolResources.disposeLater());
263263
}
264-
result = result.onErrorResume(ex -> Mono.empty()).then(stopScheduler());
264+
result = result.onErrorComplete().then(stopScheduler());
265265
}
266266
else {
267267
result = stopScheduler();

spring-messaging/src/main/java/org/springframework/messaging/tcp/reactor/ReactorNettyTcpClient.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -254,12 +254,12 @@ public CompletableFuture<Void> shutdownAsync() {
254254
if (this.channelGroup != null) {
255255
result = FutureMono.from(this.channelGroup.close());
256256
if (this.loopResources != null) {
257-
result = result.onErrorResume(ex -> Mono.empty()).then(this.loopResources.disposeLater());
257+
result = result.onErrorComplete().then(this.loopResources.disposeLater());
258258
}
259259
if (this.poolResources != null) {
260-
result = result.onErrorResume(ex -> Mono.empty()).then(this.poolResources.disposeLater());
260+
result = result.onErrorComplete().then(this.poolResources.disposeLater());
261261
}
262-
result = result.onErrorResume(ex -> Mono.empty()).then(stopScheduler());
262+
result = result.onErrorComplete().then(stopScheduler());
263263
}
264264
else {
265265
result = stopScheduler();

spring-r2dbc/src/main/java/org/springframework/r2dbc/connection/R2dbcTransactionManager.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,8 +228,8 @@ protected Mono<Void> doBegin(TransactionSynchronizationManager synchronizationMa
228228
.then(Mono.error(ex));
229229
}
230230
return Mono.error(ex);
231-
})).onErrorResume(ex -> Mono.error(new CannotCreateTransactionException(
232-
"Could not open R2DBC Connection for transaction", ex)));
231+
})).onErrorMap(ex -> new CannotCreateTransactionException(
232+
"Could not open R2DBC Connection for transaction", ex));
233233
}).then();
234234
}
235235

spring-r2dbc/src/test/java/org/springframework/r2dbc/core/AbstractDatabaseClientIntegrationTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public void before() {
5050
Mono.from(connectionFactory.create())
5151
.flatMapMany(connection -> Flux.from(connection.createStatement("DROP TABLE legoset").execute())
5252
.flatMap(Result::getRowsUpdated)
53-
.onErrorResume(e -> Mono.empty())
53+
.onErrorComplete()
5454
.thenMany(connection.createStatement(getCreateTableStatement()).execute())
5555
.flatMap(Result::getRowsUpdated).thenMany(connection.close())).as(StepVerifier::create)
5656
.verifyComplete();

spring-r2dbc/src/test/java/org/springframework/r2dbc/core/AbstractTransactionalDatabaseClientIntegrationTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public void before() {
6969
Mono.from(connectionFactory.create())
7070
.flatMapMany(connection -> Flux.from(connection.createStatement("DROP TABLE legoset").execute())
7171
.flatMap(Result::getRowsUpdated)
72-
.onErrorResume(e -> Mono.empty())
72+
.onErrorComplete()
7373
.thenMany(connection.createStatement(getCreateTableStatement()).execute())
7474
.flatMap(Result::getRowsUpdated).thenMany(connection.close())).as(StepVerifier::create).verifyComplete();
7575

spring-web/src/main/java/org/springframework/http/codec/ResourceHttpMessageWriter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ private static Mono<Long> lengthOf(Resource resource) {
191191
if (InputStreamResource.class != resource.getClass()) {
192192
return Mono.fromCallable(resource::contentLength)
193193
.filter(length -> length != -1)
194-
.onErrorResume(IOException.class, t -> Mono.empty())
194+
.onErrorComplete(IOException.class)
195195
.subscribeOn(Schedulers.boundedElastic());
196196
}
197197
else {

spring-web/src/main/java/org/springframework/web/server/ServerWebExchange.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,10 @@ default <T> T getAttributeOrDefault(String name, T defaultValue) {
148148
*/
149149
default Mono<Void> cleanupMultipart() {
150150
return getMultipartData()
151-
.onErrorResume(t -> Mono.empty()) // ignore errors reading multipart data
151+
.onErrorComplete() // ignore errors reading multipart data
152152
.flatMapIterable(Map::values)
153153
.flatMapIterable(Function.identity())
154-
.flatMap(part -> part.delete().onErrorResume(ex -> Mono.empty()))
154+
.flatMap(part -> part.delete().onErrorComplete())
155155
.then();
156156
}
157157

spring-web/src/main/java/org/springframework/web/server/adapter/DefaultServerWebExchange.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -249,11 +249,11 @@ public Mono<MultiValueMap<String, Part>> getMultipartData() {
249249
public Mono<Void> cleanupMultipart() {
250250
if (this.multipartRead) {
251251
return getMultipartData()
252-
.onErrorResume(t -> Mono.empty()) // ignore errors reading multipart data
252+
.onErrorComplete() // ignore errors reading multipart data
253253
.flatMapIterable(Map::values)
254254
.flatMapIterable(Function.identity())
255255
.flatMap(part -> part.delete()
256-
.onErrorResume(ex -> Mono.empty()))
256+
.onErrorComplete())
257257
.then();
258258
}
259259
else {

spring-web/src/test/java/org/springframework/http/server/reactive/ServerHttpResponseTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ void writeWithError(Publisher<DataBuffer> body) {
105105
headers.setContentType(MediaType.APPLICATION_JSON);
106106
headers.set(HttpHeaders.CONTENT_ENCODING, "gzip");
107107
headers.setContentLength(12);
108-
response.writeWith(body).onErrorResume(ex -> Mono.empty()).block();
108+
response.writeWith(body).onErrorComplete().block();
109109

110110
assertThat(response.statusCodeWritten).isFalse();
111111
assertThat(response.headersWritten).isFalse();

spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClient.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,11 +186,11 @@ public Builder mutate() {
186186
}
187187

188188
private static Mono<Void> releaseIfNotConsumed(ClientResponse response) {
189-
return response.releaseBody().onErrorResume(ex2 -> Mono.empty());
189+
return response.releaseBody().onErrorComplete();
190190
}
191191

192192
private static <T> Mono<T> releaseIfNotConsumed(ClientResponse response, Throwable ex) {
193-
return response.releaseBody().onErrorResume(ex2 -> Mono.empty()).then(Mono.error(ex));
193+
return response.releaseBody().onErrorComplete().then(Mono.error(ex));
194194
}
195195

196196

spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/AbstractMessageReaderArgumentResolver.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ protected Mono<Object> readBody(MethodParameter bodyParam, @Nullable MethodParam
183183
logger.debug(exchange.getLogPrefix() + "0..N [" + elementType + "]");
184184
}
185185
Flux<?> flux = reader.read(actualType, elementType, request, response, readHints);
186-
flux = flux.onErrorResume(ex -> Flux.error(handleReadError(bodyParam, ex)));
186+
flux = flux.onErrorMap(ex -> handleReadError(bodyParam, ex));
187187
if (isBodyRequired) {
188188
flux = flux.switchIfEmpty(Flux.error(() -> handleMissingBody(bodyParam)));
189189
}
@@ -199,7 +199,7 @@ protected Mono<Object> readBody(MethodParameter bodyParam, @Nullable MethodParam
199199
logger.debug(exchange.getLogPrefix() + "0..1 [" + elementType + "]");
200200
}
201201
Mono<?> mono = reader.readMono(actualType, elementType, request, response, readHints);
202-
mono = mono.onErrorResume(ex -> Mono.error(handleReadError(bodyParam, ex)));
202+
mono = mono.onErrorMap(ex -> handleReadError(bodyParam, ex));
203203
if (isBodyRequired) {
204204
mono = mono.switchIfEmpty(Mono.error(() -> handleMissingBody(bodyParam)));
205205
}

spring-webflux/src/main/java/org/springframework/web/reactive/result/view/freemarker/FreeMarkerView.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ public Mono<Boolean> resourceExists(Locale locale) {
223223
return lookupTemplate(locale)
224224
.map(template -> Boolean.TRUE)
225225
.switchIfEmpty(Mono.just(Boolean.FALSE))
226-
.onErrorResume(FileNotFoundException.class, t -> Mono.just(Boolean.FALSE))
226+
.onErrorReturn(FileNotFoundException.class, Boolean.FALSE)
227227
.onErrorMap(ParseException.class, ex -> new ApplicationContextException(
228228
"Failed to parse FreeMarker template for URL [" + getUrl() + "]", ex))
229229
.onErrorMap(IOException.class, ex -> new ApplicationContextException(

0 commit comments

Comments
 (0)