From 3160d6dc32d40b7735d67883ff97b3a4e3b508c2 Mon Sep 17 00:00:00 2001 From: Yury Shchetinin Date: Tue, 23 Jul 2024 19:37:31 +0300 Subject: [PATCH] [BACKPORT-2024.1.1][PLAT-14731] Nodes stuck in "VM image upgrade" state after upgrading the linux version Summary: Fixed node state reordering for VMImageUpgrade Original diff: ecb68e5221b1fb17110956aece1698ab75195bf1/D36776 Test Plan: 1) Run VMImage upgrade and fail at second node. 2) Retry upgrade -> verify node state is Live Reviewers: nsingh Reviewed By: nsingh Subscribers: yugaware Tags: #jenkins-ready Differential Revision: https://phorge.dev.yugabyte.com/D36844 --- .../yw/commissioner/tasks/upgrade/VMImageUpgrade.java | 5 +++-- .../yw/commissioner/tasks/upgrade/VMImageUpgradeTest.java | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/managed/src/main/java/com/yugabyte/yw/commissioner/tasks/upgrade/VMImageUpgrade.java b/managed/src/main/java/com/yugabyte/yw/commissioner/tasks/upgrade/VMImageUpgrade.java index 73ae9df4092c..847d9a0972f0 100644 --- a/managed/src/main/java/com/yugabyte/yw/commissioner/tasks/upgrade/VMImageUpgrade.java +++ b/managed/src/main/java/com/yugabyte/yw/commissioner/tasks/upgrade/VMImageUpgrade.java @@ -151,7 +151,6 @@ private void createVMImageUpgradeTasks(Set nodes) { Universe universe = getUniverse(); UUID imageBundleUUID; for (NodeDetails node : nodes) { - createSetNodeStateTask(node, getNodeState()); UUID region = taskParams().nodeToRegion.get(node.nodeUuid); String machineImage = ""; String sshUserOverride = ""; @@ -201,6 +200,8 @@ private void createVMImageUpgradeTasks(Set nodes) { } if (universe.isYbcEnabled()) processTypes.add(ServerType.CONTROLLER); + createSetNodeStateTask(node, getNodeState()); + createCheckNodesAreSafeToTakeDownTask(masters, tservers, null); // The node is going to be stopped. Ignore error because of previous error due to @@ -291,9 +292,9 @@ private void createVMImageUpgradeTasks(Set nodes) { clusterToImageBundleMap.put(node.placementUuid, imageBundleUUID); } } + createSetNodeStateTask(node, NodeState.Live); createNodeDetailsUpdateTask(node, !taskParams().isSoftwareUpdateViaVm) .setSubTaskGroupType(SubTaskGroupType.ConfigureUniverse); - createSetNodeStateTask(node, NodeState.Live); } // Update the imageBundleUUID in the cluster -> userIntent diff --git a/managed/src/test/java/com/yugabyte/yw/commissioner/tasks/upgrade/VMImageUpgradeTest.java b/managed/src/test/java/com/yugabyte/yw/commissioner/tasks/upgrade/VMImageUpgradeTest.java index 60332394cca2..31a58d883d43 100644 --- a/managed/src/test/java/com/yugabyte/yw/commissioner/tasks/upgrade/VMImageUpgradeTest.java +++ b/managed/src/test/java/com/yugabyte/yw/commissioner/tasks/upgrade/VMImageUpgradeTest.java @@ -99,8 +99,8 @@ public boolean matches(NodeTaskParams right) { TaskType.WaitForServerReady, TaskType.WaitStartingFromTime, TaskType.WaitForEncryptionKeyInMemory, - TaskType.UpdateNodeDetails, - TaskType.SetNodeState); + TaskType.SetNodeState, + TaskType.UpdateNodeDetails); private static final List NODE_VALIDATION_TASKS = ImmutableList.of(TaskType.CheckLocale, TaskType.CheckGlibc);