Repository: ambari Updated Branches: refs/heads/trunk 6cf8fb17d -> 8f2f5bcde
AMBARI-6500. Upgrade creates new configs version even if there is nothing to update (aonishuk) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/8f2f5bcd Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/8f2f5bcd Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/8f2f5bcd Branch: refs/heads/trunk Commit: 8f2f5bcde7ee2411cb0e121ee28cb215e7112933 Parents: 6cf8fb1 Author: Andrew Onishuk <aonis...@hortonworks.com> Authored: Wed Jul 16 18:19:51 2014 +0300 Committer: Andrew Onishuk <aonis...@hortonworks.com> Committed: Wed Jul 16 18:19:51 2014 +0300 ---------------------------------------------------------------------- .../server/upgrade/AbstractUpgradeCatalog.java | 51 +++++++++++--------- .../server/upgrade/UpgradeCatalogTest.java | 2 +- 2 files changed, 30 insertions(+), 23 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/8f2f5bcd/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java index 2f01d38..4d21d79 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java @@ -17,6 +17,7 @@ */ package org.apache.ambari.server.upgrade; +import com.google.common.collect.Maps; import com.google.inject.Inject; import com.google.inject.Injector; import com.google.inject.Provider; @@ -202,30 +203,36 @@ public abstract class AbstractUpgradeCatalog implements UpgradeCatalog { Map<String, Config> all = cluster.getConfigsByType(configType); if (all == null || !all.containsKey(newTag) || properties.size() > 0) { + Map<String, String> oldConfigProperties = oldConfig.getProperties(); + Map<String, String> mergedProperties = - mergeProperties(oldConfig.getProperties(), properties, updateIfExists); - - LOG.info("Applying configuration with tag '%s' to " + - "cluster '%s'", newTag, cluster.getClusterName()); - - ConfigurationRequest cr = new ConfigurationRequest(); - cr.setClusterName(cluster.getClusterName()); - cr.setVersionTag(newTag); - cr.setType(configType); - cr.setProperties(mergedProperties); - controller.createConfiguration(cr); - - Config baseConfig = cluster.getConfig(cr.getType(), cr.getVersionTag()); - if (baseConfig != null) { - String authName = "ambari-upgrade"; - - if (cluster.addDesiredConfig(authName, baseConfig)) { - LOG.info("cluster '" + cluster.getClusterName() + "' " - + "changed by: '" + authName + "'; " - + "type='" + baseConfig.getType() + "' " - + "tag='" + baseConfig.getVersionTag() + "'" - + " from='"+ oldConfig.getVersionTag() + "'"); + mergeProperties(oldConfigProperties, properties, updateIfExists); + + if (!Maps.difference(oldConfigProperties, mergedProperties).areEqual()) { + LOG.info("Applying configuration with tag '%s' to " + + "cluster '%s'", newTag, cluster.getClusterName()); + + ConfigurationRequest cr = new ConfigurationRequest(); + cr.setClusterName(cluster.getClusterName()); + cr.setVersionTag(newTag); + cr.setType(configType); + cr.setProperties(mergedProperties); + controller.createConfiguration(cr); + + Config baseConfig = cluster.getConfig(cr.getType(), cr.getVersionTag()); + if (baseConfig != null) { + String authName = "ambari-upgrade"; + + if (cluster.addDesiredConfig(authName, baseConfig)) { + LOG.info("cluster '" + cluster.getClusterName() + "' " + + "changed by: '" + authName + "'; " + + "type='" + baseConfig.getType() + "' " + + "tag='" + baseConfig.getVersionTag() + "'" + + " from='" + oldConfig.getVersionTag() + "'"); + } } + } else { + LOG.info("No changes detected to config " + configType + ". Skipping configuration properties update"); } } } http://git-wip-us.apache.org/repos/asf/ambari/blob/8f2f5bcd/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalogTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalogTest.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalogTest.java index 322b3f1..79007d5 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalogTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalogTest.java @@ -182,7 +182,7 @@ public class UpgradeCatalogTest { Collections.singletonMap("x", "y"), false); config = cluster.getDesiredConfigByType("global"); Assert.assertNotNull(config); - Assert.assertNotSame(version, config.getVersionTag()); + Assert.assertSame(version, config.getVersionTag()); Assert.assertTrue(config.getProperties().containsKey("x")); Assert.assertEquals("z", config.getProperties().get("x")); }