diff options
author | Siddharth Wagle <swagle@hortonworks.com> | 2017-08-09 15:45:34 -0700 |
---|---|---|
committer | Siddharth Wagle <swagle@hortonworks.com> | 2017-08-09 15:45:46 -0700 |
commit | 8aa5e2c61dbb7eb16243f1ea627d8713d5ff0447 (patch) | |
tree | 7209e014d5fc8279c36382a02e84ee9b32bc45b1 | |
parent | 2bfc582037d23a6d573f102cfecc3f0c77d31bb5 (diff) |
AMBARI-21695. Problem in starting accumulo in upgraded cluster (IOP-HDP). (swagle)
3 files changed, 26 insertions, 2 deletions
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/metadata/CachedRoleCommandOrderProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/metadata/CachedRoleCommandOrderProvider.java index 49abc66142..ec03246e51 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/metadata/CachedRoleCommandOrderProvider.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/metadata/CachedRoleCommandOrderProvider.java @@ -21,6 +21,7 @@ package org.apache.ambari.server.metadata; import java.util.HashMap; import java.util.LinkedHashSet; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import org.apache.ambari.server.AmbariException; import org.apache.ambari.server.state.Cluster; @@ -46,7 +47,7 @@ public class CachedRoleCommandOrderProvider implements RoleCommandOrderProvider @Inject private Clusters clusters; - private Map<Integer, RoleCommandOrder> rcoMap = new HashMap<>(); + private Map<Integer, RoleCommandOrder> rcoMap = new ConcurrentHashMap<>(); @Inject public CachedRoleCommandOrderProvider() { @@ -124,4 +125,10 @@ public class CachedRoleCommandOrderProvider implements RoleCommandOrderProvider return rco; } + /** + * Clear all entries - used after an upgrade + */ + public void clearRoleCommandOrderCache() { + rcoMap.clear(); + } } diff --git a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/FinalizeUpgradeAction.java b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/FinalizeUpgradeAction.java index d531460575..b6cdf23447 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/FinalizeUpgradeAction.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/FinalizeUpgradeAction.java @@ -34,6 +34,8 @@ import org.apache.ambari.server.agent.ExecutionCommand.KeyNames; import org.apache.ambari.server.api.services.AmbariMetaInfo; import org.apache.ambari.server.events.StackUpgradeFinishEvent; import org.apache.ambari.server.events.publishers.VersionEventPublisher; +import org.apache.ambari.server.metadata.CachedRoleCommandOrderProvider; +import org.apache.ambari.server.metadata.RoleCommandOrderProvider; import org.apache.ambari.server.orm.dao.ClusterVersionDAO; import org.apache.ambari.server.orm.dao.HostComponentStateDAO; import org.apache.ambari.server.orm.dao.HostVersionDAO; @@ -113,6 +115,9 @@ public class FinalizeUpgradeAction extends AbstractServerAction { @Inject VersionEventPublisher versionEventPublisher; + @Inject + private RoleCommandOrderProvider roleCommandOrderProvider; + /** * Used for building {@link UpgradeContext} instances. */ @@ -309,6 +314,12 @@ public class FinalizeUpgradeAction extends AbstractServerAction { outSB.append("Upgrade was successful!\n"); + // Clear any cached RCO data after version upgrade + if (roleCommandOrderProvider instanceof CachedRoleCommandOrderProvider) { + CachedRoleCommandOrderProvider cachedRcoProvider = (CachedRoleCommandOrderProvider) roleCommandOrderProvider; + cachedRcoProvider.clearRoleCommandOrderCache(); + } + return createCommandReport(0, HostRoleStatus.COMPLETED, "{}", outSB.toString(), errSB.toString()); } catch (Exception e) { errSB.append(e.getMessage()); @@ -442,6 +453,12 @@ public class FinalizeUpgradeAction extends AbstractServerAction { // Reset upgrade state cluster.setUpgradeEntity(null); + // Clear any cached RCO data after version downgrade + if (roleCommandOrderProvider instanceof CachedRoleCommandOrderProvider) { + CachedRoleCommandOrderProvider cachedRcoProvider = (CachedRoleCommandOrderProvider) roleCommandOrderProvider; + cachedRcoProvider.clearRoleCommandOrderCache(); + } + return createCommandReport(0, HostRoleStatus.COMPLETED, "{}", out.toString(), err.toString()); diff --git a/ambari-server/src/main/resources/scripts/configs.py b/ambari-server/src/main/resources/scripts/configs.py index 40a8324b7c..639f28ed42 100644 --- a/ambari-server/src/main/resources/scripts/configs.py +++ b/ambari-server/src/main/resources/scripts/configs.py @@ -30,7 +30,7 @@ import xml.etree.ElementTree as ET import os import logging -logger = logging.getLogger('AmbariTakeoverConfigMerge') +logger = logging.getLogger('AmbariConfig') HTTP_PROTOCOL = 'http' HTTPS_PROTOCOL = 'https' |