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());
     }

Reply via email to