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 {