You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sw...@apache.org on 2013/12/20 03:39:45 UTC

git commit: AMBARI-4130. Deleted host still appears in configuration groups. (swagle)

Updated Branches:
  refs/heads/branch-1.4.3 58f917fa9 -> cff284639


AMBARI-4130. Deleted host still appears in configuration groups. (swagle)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/cff28463
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/cff28463
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/cff28463

Branch: refs/heads/branch-1.4.3
Commit: cff2846397dd6547b3d53a2de7fe5d4fd0f1272f
Parents: 58f917f
Author: Siddharth Wagle <sw...@hortonworks.com>
Authored: Thu Dec 19 18:31:13 2013 -0800
Committer: Siddharth Wagle <sw...@hortonworks.com>
Committed: Thu Dec 19 18:31:13 2013 -0800

----------------------------------------------------------------------
 .../server/state/cluster/ClustersImpl.java      | 18 ++++++++++---
 .../server/state/configgroup/ConfigGroup.java   |  5 ++++
 .../state/configgroup/ConfigGroupImpl.java      | 28 +++++++++++++++++++-
 3 files changed, 46 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/cff28463/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClustersImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClustersImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClustersImpl.java
index 16dc0fb..7debb63 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClustersImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClustersImpl.java
@@ -43,6 +43,7 @@ import org.apache.ambari.server.state.HostHealthStatus.HealthStatus;
 import org.apache.ambari.server.state.HostState;
 import org.apache.ambari.server.state.RepositoryInfo;
 import org.apache.ambari.server.state.StackId;
+import org.apache.ambari.server.state.configgroup.ConfigGroup;
 import org.apache.ambari.server.state.host.HostFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -609,6 +610,8 @@ public class ClustersImpl implements Clusters {
       hostClusterMap.get(hostname).remove(cluster);
       clusterHostMap.get(clusterName).remove(host);
 
+      deleteConfigGroupHostMapping(hostname);
+
     } finally {
       w.unlock();
     }
@@ -623,11 +626,19 @@ public class ClustersImpl implements Clusters {
     hostEntity.getClusterEntities().remove(clusterEntity);
     clusterEntity.getHostEntities().remove(hostEntity);
 
-    configGroupHostMappingDAO.removeAllByHost(hostName);
-    
     hostDAO.merge(hostEntity);
     clusterDAO.merge(clusterEntity);
   }
+
+  @Transactional
+  private void deleteConfigGroupHostMapping(String hostname) throws AmbariException {
+    // Remove Config group mapping
+    for (Cluster cluster : clusters.values()) {
+      for (ConfigGroup configGroup : cluster.getConfigGroups().values()) {
+        configGroup.removeHost(hostname);
+      }
+    }
+  }
   
   @Override
   public void deleteHost(String hostname) throws AmbariException {
@@ -643,8 +654,7 @@ public class ClustersImpl implements Clusters {
       hostDAO.refresh(entity);
       hostDAO.remove(entity);
       hosts.remove(hostname);
-      // Remove Config group mapping
-      configGroupHostMappingDAO.removeAllByHost(hostname);
+      deleteConfigGroupHostMapping(hostname);
     } catch (Exception e) {
       throw new AmbariException("Could not remove host", e);
     } finally {

http://git-wip-us.apache.org/repos/asf/ambari/blob/cff28463/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroup.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroup.java b/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroup.java
index fc51ff1..f8ec21d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroup.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroup.java
@@ -147,4 +147,9 @@ public interface ConfigGroup {
    * @param configs
    */
   public void setConfigurations(Map<String, Config> configs);
+
+  /**
+   * Remove host mapping
+   */
+  public void removeHost(String hostname) throws AmbariException;
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/cff28463/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java
index 9fb1330..0162b80 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java
@@ -40,6 +40,7 @@ import org.apache.ambari.server.orm.entities.ClusterEntity;
 import org.apache.ambari.server.orm.entities.ConfigGroupConfigMappingEntity;
 import org.apache.ambari.server.orm.entities.ConfigGroupEntity;
 import org.apache.ambari.server.orm.entities.ConfigGroupHostMappingEntity;
+import org.apache.ambari.server.orm.entities.ConfigGroupHostMappingEntityPK;
 import org.apache.ambari.server.orm.entities.HostEntity;
 import org.apache.ambari.server.state.Cluster;
 import org.apache.ambari.server.state.Clusters;
@@ -61,7 +62,6 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 public class ConfigGroupImpl implements ConfigGroup {
   private static final Logger LOG = LoggerFactory.getLogger(ConfigGroupImpl.class);
-  //private final ReadWriteLock clusterGlobalLock;
   private final ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
 
   private Cluster cluster;
@@ -261,7 +261,33 @@ public class ConfigGroupImpl implements ConfigGroup {
 
   @Override
   @Transactional
+  public void removeHost(String hostname) throws AmbariException {
+    readWriteLock.writeLock().lock();
+    try {
+      if (hosts.containsKey(hostname)) {
+        LOG.info("Removing host from config group, hostname = " + hostname);
+        hosts.remove(hostname);
+        try {
+          ConfigGroupHostMappingEntityPK hostMappingEntityPK = new
+            ConfigGroupHostMappingEntityPK();
+          hostMappingEntityPK.setHostname(hostname);
+          hostMappingEntityPK.setConfigGroupId(configGroupEntity.getGroupId());
+          configGroupHostMappingDAO.removeByPK(hostMappingEntityPK);
+        } catch (Exception e) {
+          LOG.error("Failed to delete config group host mapping"
+            + ", clusterName = " + getClusterName()
+            + ", id = " + getId()
+            + ", hostname = " + hostname, e);
+          throw new AmbariException(e.getMessage());
+        }
+      }
+    } finally {
+      readWriteLock.writeLock().unlock();
+    }
+  }
 
+  @Override
+  @Transactional
   public void persist() {
     readWriteLock.writeLock().lock();
     try {