Repository: ambari Updated Branches: refs/heads/branch-2.2 03b5977eb -> dbb6580a4
AMBARI-14670 - Express Upgrade failed during restart of STORM components (jonathanhurley) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/dbb6580a Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/dbb6580a Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/dbb6580a Branch: refs/heads/branch-2.2 Commit: dbb6580a4cf974e72af5fe6f6dfd6d2be6fc8690 Parents: 03b5977 Author: Jonathan Hurley <[email protected]> Authored: Thu Jan 14 17:59:07 2016 -0500 Committer: Jonathan Hurley <[email protected]> Committed: Thu Jan 14 18:05:53 2016 -0500 ---------------------------------------------------------------------- .../internal/UpgradeResourceProvider.java | 12 ++++--- .../ambari/server/state/stack/UpgradePack.java | 20 ++++++++--- .../state/stack/upgrade/ConfigureTask.java | 38 ++++++++++++++------ .../ambari/server/state/stack/upgrade/Task.java | 9 +++++ .../HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml | 1 + .../HDP/2.2/upgrades/nonrolling-upgrade-2.4.xml | 7 ++++ .../stacks/HDP/2.2/upgrades/upgrade-2.4.xml | 6 ++++ .../internal/UpgradeResourceProviderTest.java | 10 ++++-- 8 files changed, 81 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/dbb6580a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java index cefdab0..f728562 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java @@ -768,7 +768,9 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider // Resolve or build a proper config upgrade pack List<UpgradePack.IntermediateStack> intermediateStacks = pack.getIntermediateStacks(); ConfigUpgradePack configUpgradePack; - if (intermediateStacks == null || intermediateStacks.isEmpty()) { // No intermediate stacks + + // No intermediate stacks + if (intermediateStacks == null || intermediateStacks.isEmpty()) { configUpgradePack = s_metaProvider.get().getConfigUpgradePack( targetStackId.getStackName(), targetStackId.getStackVersion()); } else { @@ -1446,13 +1448,15 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider if (null != configType) { itemDetail = String.format("Updating configuration %s", configType); } else { - itemDetail = "Skipping Configuration Task"; + itemDetail = "Skipping Configuration Task " + + StringUtils.defaultString(ct.id, "(missing id)"); } entity.setText(itemDetail); - if (null != ct.summary) { - stageText = ct.summary; + String configureTaskSummary = ct.getSummary(configUpgradePack); + if (null != configureTaskSummary) { + stageText = configureTaskSummary; } else { stageText = itemDetail; } http://git-wip-us.apache.org/repos/asf/ambari/blob/dbb6580a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java index ab8f53d..5849a20 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java @@ -34,6 +34,7 @@ import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; import javax.xml.bind.annotation.XmlValue; +import org.apache.ambari.server.api.services.AmbariMetaInfo; import org.apache.ambari.server.state.stack.upgrade.ClusterGrouping; import org.apache.ambari.server.state.stack.upgrade.Direction; import org.apache.ambari.server.state.stack.upgrade.Grouping; @@ -153,7 +154,16 @@ public class UpgradePack { } /** - * @return a list for intermediate stacks for cross-stack upgrade, or null if no any + * Gets a list of stacks which are between the current stack version and the + * target stack version inclusive. For example, if upgrading from HDP-2.2 to + * HDP-2.4, this should include HDP-2.3 and HDP-2.4. + * <p/> + * This method is used to combine the correct configuration packs for a + * specific upgrade from + * {@link AmbariMetaInfo#getConfigUpgradePack(String, String)}. + * + * @return a list of intermediate stacks (target stack inclusive) or + * {@code null} if none. */ public List<IntermediateStack> getIntermediateStacks() { return intermediateStacks; @@ -186,9 +196,11 @@ public class UpgradePack { } /** - * Gets the groups defined for the upgrade pack. If a direction is defined - * for a group, it must match the supplied direction to be returned - * @param direction the direction to return the ordered groups + * Gets the groups defined for the upgrade pack. If a direction is defined for + * a group, it must match the supplied direction to be returned + * + * @param direction + * the direction to return the ordered groups * @return the list of groups */ public List<Grouping> getGroups(Direction direction) { http://git-wip-us.apache.org/repos/asf/ambari/blob/dbb6580a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ConfigureTask.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ConfigureTask.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ConfigureTask.java index f5da91d..66545f5 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ConfigureTask.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ConfigureTask.java @@ -28,20 +28,20 @@ import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; -import org.apache.ambari.server.state.stack.ConfigUpgradePack; -import org.apache.commons.lang.StringUtils; import org.apache.ambari.server.serveraction.upgrades.ConfigureAction; import org.apache.ambari.server.state.Cluster; import org.apache.ambari.server.state.Config; import org.apache.ambari.server.state.DesiredConfig; - -import com.google.gson.Gson; +import org.apache.ambari.server.state.stack.ConfigUpgradePack; +import org.apache.ambari.server.state.stack.upgrade.ConfigUpgradeChangeDefinition.Condition; +import org.apache.ambari.server.state.stack.upgrade.ConfigUpgradeChangeDefinition.ConfigurationKeyValue; +import org.apache.ambari.server.state.stack.upgrade.ConfigUpgradeChangeDefinition.Replace; +import org.apache.ambari.server.state.stack.upgrade.ConfigUpgradeChangeDefinition.Transfer; +import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import static org.apache.ambari.server.state.stack.upgrade.ConfigUpgradeChangeDefinition.Transfer; -import static org.apache.ambari.server.state.stack.upgrade.ConfigUpgradeChangeDefinition.Replace; -import static org.apache.ambari.server.state.stack.upgrade.ConfigUpgradeChangeDefinition.Condition; -import static org.apache.ambari.server.state.stack.upgrade.ConfigUpgradeChangeDefinition.ConfigurationKeyValue; + +import com.google.gson.Gson; /** * The {@link ConfigureTask} represents a configuration change. This task @@ -134,6 +134,22 @@ public class ConfigureTask extends ServerSideActionTask { } /** + * Gets the summary of the task or {@code null}. + * + * @return the task summary or {@code null}. + */ + public String getSummary(ConfigUpgradePack configUpgradePack) { + if(StringUtils.isNotBlank(id) && null != configUpgradePack){ + ConfigUpgradeChangeDefinition definition = configUpgradePack.enumerateConfigChangesByID().get(id); + if (null != definition && StringUtils.isNotBlank(definition.summary)) { + return definition.summary; + } + } + + return super.getSummary(); + } + + /** * Gets a map containing the following properties pertaining to the * configuration value to change: * <ul> @@ -158,7 +174,7 @@ public class ConfigureTask extends ServerSideActionTask { ConfigUpgradePack configUpgradePack) { Map<String, String> configParameters = new HashMap<>(); - if (this.id == null || this.id.isEmpty()) { + if (id == null || id.isEmpty()) { LOG.warn("Config task id is not defined, skipping config change"); return configParameters; } @@ -169,10 +185,10 @@ public class ConfigureTask extends ServerSideActionTask { } // extract config change definition, referenced by current ConfigureTask - ConfigUpgradeChangeDefinition definition = configUpgradePack.enumerateConfigChangesByID().get(this.id); + ConfigUpgradeChangeDefinition definition = configUpgradePack.enumerateConfigChangesByID().get(id); if (definition == null) { LOG.warn(String.format("Can not resolve config change definition by id %s, " + - "skipping config change", this.id)); + "skipping config change", id)); return configParameters; } http://git-wip-us.apache.org/repos/asf/ambari/blob/dbb6580a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/Task.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/Task.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/Task.java index 60091a6..980f88e 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/Task.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/Task.java @@ -54,6 +54,15 @@ public abstract class Task { } /** + * Gets the summary of the task or {@code null}. + * + * @return the task summary or {@code null}. + */ + public String getSummary() { + return summary; + } + + /** * Identifies the type of task. */ public enum Type { http://git-wip-us.apache.org/repos/asf/ambari/blob/dbb6580a/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml b/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml index bb0c9a6..90e3b37 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml @@ -34,6 +34,7 @@ </configuration> </prerequisite-checks> + <!-- Instructs the upgrade pack how to build the configuration pack --> <upgrade-path> <intermediate-stack version="2.2"/> <intermediate-stack version="2.3"/> http://git-wip-us.apache.org/repos/asf/ambari/blob/dbb6580a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.4.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.4.xml b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.4.xml index 012c629..1efeb6c 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.4.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.4.xml @@ -29,6 +29,13 @@ </check-properties> </configuration> </prerequisite-checks> + + <!-- Instructs the upgrade pack how to build the configuration pack --> + <upgrade-path> + <intermediate-stack version="2.3"/> + <intermediate-stack version="2.4"/> + </upgrade-path> + <order> <group xsi:type="cluster" name="PRE_CLUSTER" title="Prepare Upgrade"> <direction>UPGRADE</direction> http://git-wip-us.apache.org/repos/asf/ambari/blob/dbb6580a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.4.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.4.xml b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.4.xml index 5aee69d..acebdd8 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.4.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.4.xml @@ -43,6 +43,12 @@ </configuration> </prerequisite-checks> + <!-- Instructs the upgrade pack how to build the configuration pack --> + <upgrade-path> + <intermediate-stack version="2.3"/> + <intermediate-stack version="2.4"/> + </upgrade-path> + <skip-failures>false</skip-failures> <skip-service-check-failures>false</skip-service-check-failures> http://git-wip-us.apache.org/repos/asf/ambari/blob/dbb6580a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java index 52bec2c..3740623 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java @@ -281,7 +281,7 @@ public class UpgradeResourceProviderTest { assertEquals("This is a manual task with a placeholder of placeholder-rendered-properly", zookeeperUpgradeItems.get(0).getText()); assertEquals("Restarting ZooKeeper Server on h1", zookeeperUpgradeItems.get(1).getText()); - assertEquals("Skipping Configuration Task", zookeeperUpgradeItems.get(2).getText()); + assertEquals("Skipping Configuration Task 2.2.0", zookeeperUpgradeItems.get(2).getText()); assertEquals("Service Check ZooKeeper", zookeeperUpgradeItems.get(3).getText()); assertEquals("Verifying Skipped Failures", zookeeperUpgradeItems.get(4).getText()); @@ -329,7 +329,7 @@ public class UpgradeResourceProviderTest { List<UpgradeItemEntity> zookeeperUpgradeItems = zookeeperGroup.getItems(); assertEquals(3, zookeeperUpgradeItems.size()); assertEquals("Restarting ZooKeeper Server on h1", zookeeperUpgradeItems.get(0).getText()); - assertEquals("Skipping Configuration Task", zookeeperUpgradeItems.get(1).getText()); + assertEquals("Skipping Configuration Task 2.2.0", zookeeperUpgradeItems.get(1).getText()); assertEquals("Service Check ZooKeeper", zookeeperUpgradeItems.get(2).getText()); UpgradeGroupEntity postClusterGroup = upgradeGroups.get(1); @@ -374,7 +374,7 @@ public class UpgradeResourceProviderTest { assertEquals(4, zookeeperUpgradeItems.size()); assertEquals("Restarting ZooKeeper Server on h1", zookeeperUpgradeItems.get(0).getText()); - assertEquals("Skipping Configuration Task", zookeeperUpgradeItems.get(1).getText()); + assertEquals("Skipping Configuration Task 2.2.0", zookeeperUpgradeItems.get(1).getText()); assertEquals("Service Check ZooKeeper", zookeeperUpgradeItems.get(2).getText()); assertEquals("Verifying Skipped Failures", zookeeperUpgradeItems.get(3).getText()); @@ -666,6 +666,10 @@ public class UpgradeResourceProviderTest { } + + /** + * Test Downgrade from the partially completed upgrade + */ @Test public void testAbort() throws Exception { RequestStatus status = testCreateResources();
