From 0902fe8f8b0922a098001374f75bd64cf7559253 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Tue, 27 Oct 2020 16:43:13 +0100 Subject: [PATCH] DATACMNS-1819 - Use awaitSingleOrNull to bridge Publisher to Coroutines Repositories. We're now awaiting completion of the underlying Publisher to ensure all completion tasks have finished before continuing with the execution. This is to avoid completion running in parallel to the actual coroutine as not awaiting completion can result in race conditions. --- .../data/repository/core/support/RepositoryMethodInvoker.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/springframework/data/repository/core/support/RepositoryMethodInvoker.java b/src/main/java/org/springframework/data/repository/core/support/RepositoryMethodInvoker.java index 724696227..c06fb27a8 100644 --- a/src/main/java/org/springframework/data/repository/core/support/RepositoryMethodInvoker.java +++ b/src/main/java/org/springframework/data/repository/core/support/RepositoryMethodInvoker.java @@ -182,7 +182,7 @@ abstract class RepositoryMethodInvoker { result = (Publisher) collectToList(result); } - return AwaitKt.awaitFirstOrNull(result, continuation); + return AwaitKt.awaitSingleOrNull(result, continuation); } catch (Exception e) { multicaster.notifyListeners(method, args, computeInvocationResult(invocationResultCaptor.error(e))); throw e;