This is an automated email from the ASF dual-hosted git repository.
sk0x50 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new bdf3eda031 IGNITE-17621 Fixed registration already completed future in
InFlightFutures
bdf3eda031 is described below
commit bdf3eda0319b4078ff73bfaee41c48feac728e79
Author: Slava Koptilin <[email protected]>
AuthorDate: Mon Sep 12 14:32:08 2022 +0300
IGNITE-17621 Fixed registration already completed future in InFlightFutures
---
.../org/apache/ignite/internal/future/InFlightFutures.java | 4 ++--
.../org/apache/ignite/internal/future/InFlightFuturesTest.java | 10 ++++++++++
2 files changed, 12 insertions(+), 2 deletions(-)
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/future/InFlightFutures.java
b/modules/core/src/main/java/org/apache/ignite/internal/future/InFlightFutures.java
index c9aa19c892..2e7a17bbdd 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/future/InFlightFutures.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/future/InFlightFutures.java
@@ -37,9 +37,9 @@ public class InFlightFutures implements
Iterable<CompletableFuture<?>> {
* @param future the future to register
*/
public void registerFuture(CompletableFuture<?> future) {
- future.whenComplete((result, ex) -> inFlightFutures.remove(future));
-
inFlightFutures.add(future);
+
+ future.whenComplete((result, ex) -> inFlightFutures.remove(future));
}
/**
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/future/InFlightFuturesTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/future/InFlightFuturesTest.java
index 02f19b7678..cf7a1add06 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/future/InFlightFuturesTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/future/InFlightFuturesTest.java
@@ -40,6 +40,16 @@ class InFlightFuturesTest {
assertThat(currentFutures(inFlightFutures),
is(singleton(incompleteFuture)));
}
+
+ @Test
+ void removesAlreadyCompletedFutureOnRegistration() {
+ CompletableFuture<Object> completedFuture =
CompletableFuture.completedFuture("Completed");
+
+ inFlightFutures.registerFuture(completedFuture);
+
+ assertThat(inFlightFutures, is(emptyIterable()));
+ }
+
private Set<CompletableFuture<?>> currentFutures(InFlightFutures
inFlightFutures) {
return StreamSupport.stream(inFlightFutures.spliterator(),
false).collect(toSet());
}