This is an automated email from the ASF dual-hosted git repository.

petrov-mg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new 34786b9a281 IGNITE-28908 Fixed features activation completion on 
client nodes with missing component (#13384)
34786b9a281 is described below

commit 34786b9a2819e2d823a247ec34fd3cf18bdd8894
Author: Mikhail Petrov <[email protected]>
AuthorDate: Tue Jul 21 00:21:10 2026 +0300

    IGNITE-28908 Fixed features activation completion on client nodes with 
missing component (#13384)
---
 .../rollingupgrade/feature/IgniteFeatureManager.java |  6 +++++-
 .../rollingupgrade/AbstractRollingUpgradeTest.java   | 20 +++++++++++++++-----
 .../CoreVersionRollingUpgradeTest.java               |  6 ++----
 .../PluginVersionRollingUpgradeTest.java             |  5 ++++-
 4 files changed, 26 insertions(+), 11 deletions(-)

diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteFeatureManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteFeatureManager.java
index 4ee85b0c50e..c836bd5bbb7 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteFeatureManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteFeatureManager.java
@@ -92,7 +92,11 @@ public class IgniteFeatureManager {
 
     /** */
     public void onGridDataReceived(IgniteNodeFeatureSet activeClusterFeatures) 
{
-        if (locVerFeatures.equals(activeClusterFeatures))
+        boolean hasSameFeatures = ctx.clientNode()
+            ? activeClusterFeatures.containsAll(locVerFeatures)
+            : locVerFeatures.equals(activeClusterFeatures);
+
+        if (hasSameFeatures)
             activateLocalVersionFeatures();
         else
             this.activeFeatures = activeClusterFeatures;
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/AbstractRollingUpgradeTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/AbstractRollingUpgradeTest.java
index 8eef1221032..c54675151a7 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/AbstractRollingUpgradeTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/AbstractRollingUpgradeTest.java
@@ -54,6 +54,7 @@ import 
org.apache.ignite.internal.processors.rollingupgrade.feature.TestIgniteRe
 import 
org.apache.ignite.internal.processors.rollingupgrade.feature.TestPluginComponentFeatureSetProvider;
 import 
org.apache.ignite.internal.processors.rollingupgrade.feature.TestPluginFeature;
 import 
org.apache.ignite.internal.processors.rollingupgrade.feature.TestPluginReleaseFeatures_1_0_0;
+import org.apache.ignite.internal.util.future.GridFutureAdapter;
 import org.apache.ignite.internal.util.lang.ConsumerX;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.internal.U;
@@ -269,6 +270,8 @@ public abstract class AbstractRollingUpgradeTest extends 
GridCommonAbstractTest
         startGrid(0, ver);
         startGrid(1, ver);
         startClientGrid(2, ver);
+
+        checkVersionUpgradeInactive(ver);
     }
 
     /** */
@@ -357,14 +360,22 @@ public abstract class AbstractRollingUpgradeTest extends 
GridCommonAbstractTest
     /** */
     protected void checkVersionUpgradeInactive(String expVer) throws Exception 
{
         checkVersionUpgradeEnabledStatus(false);
+        checkVersionUpgradeFutureCompleted();
         checkFeaturesActive(expVer);
     }
 
     /** */
-    protected void checkVersionUpgradeEnabledStatus(boolean enabled) {
-        List<Ignite> cluster = Ignition.allGrids();
+    protected void checkVersionUpgradeFutureCompleted() {
+        for (Ignite ignite : Ignition.allGrids()) {
+            GridFutureAdapter<?> fut = U.field(ru(ignite).features(), 
"locVerFeaturesActivationFut");
+
+            assertTrue(fut.isDone());
+        }
+    }
 
-        for (Ignite ignite : cluster)
+    /** */
+    protected void checkVersionUpgradeEnabledStatus(boolean enabled) {
+        for (Ignite ignite : Ignition.allGrids())
             assertEquals(enabled, ru(ignite).isVersionUpgradeEnabled());
     }
 
@@ -372,8 +383,7 @@ public abstract class AbstractRollingUpgradeTest extends 
GridCommonAbstractTest
     protected void checkFeaturesActive(String ver) throws Exception {
         TestVersions versions = TestVersions.parse(ver);
 
-        if (versions.coreVersion() != null)
-            
checkFeaturesActive(readDeclaredCoreFeatures(versions.coreVersion()));
+        checkFeaturesActive(readDeclaredCoreFeatures(versions.coreVersion()));
 
         if (versions.containsPlugin())
             
checkFeaturesActive(readDeclaredPluginFeatures(versions.pluginVersion()));
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/CoreVersionRollingUpgradeTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/CoreVersionRollingUpgradeTest.java
index e852649829a..c773ce73956 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/CoreVersionRollingUpgradeTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/CoreVersionRollingUpgradeTest.java
@@ -63,10 +63,8 @@ public class CoreVersionRollingUpgradeTest extends 
AbstractRollingUpgradeTest {
 
         checkVersionUpgradeInactive(TEST_DEFAULT_VER);
 
-        String msg = VER_NOT_EQUAL_ERR;
-
-        checkJoinFailed(3, "2.18.0", msg);
-        checkJoinFailed(3, "2.19.1", msg);
+        checkJoinFailed(3, "2.18.0", VER_NOT_EQUAL_ERR);
+        checkJoinFailed(3, "2.19.1", VER_NOT_EQUAL_ERR);
     }
 
     /** */
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/PluginVersionRollingUpgradeTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/PluginVersionRollingUpgradeTest.java
index 02879bf669c..86671640776 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/PluginVersionRollingUpgradeTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/PluginVersionRollingUpgradeTest.java
@@ -38,7 +38,8 @@ public class PluginVersionRollingUpgradeTest extends 
AbstractRollingUpgradeTest
 
         checkJoinFailed(1, "2.19.0 | 2.0.0", VER_NOT_EQUAL_ERR);
 
-        checkJoinSuccess(1, "2.19.0", true);
+        checkJoinSuccess(1, "2.19.0 | 1.0.0", false);
+        checkJoinSuccess(2, "2.19.0", true);
     }
 
     /** */
@@ -96,6 +97,8 @@ public class PluginVersionRollingUpgradeTest extends 
AbstractRollingUpgradeTest
         startGrid(1, "2.19.0 | 1.0.0");
         startClientGrid(2, "2.19.0");
 
+        checkVersionUpgradeInactive("2.19.0 | 1.0.0");
+
         ru(1).enableVersionUpgrade();
 
         startClientGrid(3, "2.19.0 | 2.0.0");

Reply via email to