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");