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 4ee85b0c50e75..c836bd5bbb740 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 void listenActivation(IgniteFeature feature, IgniteRunnable lsnr) { /** */ 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 8eef1221032a9..c54675151a708 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.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 @@ protected void startCluster(String ver) throws Exception { startGrid(0, ver); startGrid(1, ver); startClientGrid(2, ver); + + checkVersionUpgradeInactive(ver); } /** */ @@ -357,14 +360,22 @@ protected void checkVersionUpgradeInProgress(String logicalVer, String srcVer, S /** */ protected void checkVersionUpgradeInactive(String expVer) throws Exception { checkVersionUpgradeEnabledStatus(false); + checkVersionUpgradeFutureCompleted(); checkFeaturesActive(expVer); } /** */ - protected void checkVersionUpgradeEnabledStatus(boolean enabled) { - List 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 @@ protected void checkVersionUpgradeEnabledStatus(boolean enabled) { 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 e852649829a6d..c773ce7395632 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 void testVersionUpgradeDisabledNodeJoin() throws Exception { 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 02879bf669c5c..866716407764c 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 void testUpgradeDisabledJoinWithMissingComponent() throws Exception { 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 void testComponentVersionValidationDuringFinalization() throws Exception 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");