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 2014/01/03 00:52:20 UTC
git commit: AMBARI-4215. Enable caching in ConfigGroupHostMappingDAO.
(Oleksandr Diachenko via swagle)
Updated Branches:
refs/heads/branch-1.4.3 b0704544b -> 10127a259
AMBARI-4215. Enable caching in ConfigGroupHostMappingDAO. (Oleksandr Diachenko via swagle)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/10127a25
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/10127a25
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/10127a25
Branch: refs/heads/branch-1.4.3
Commit: 10127a259d1063ec4911a36c78445bfa1a676cb1
Parents: b070454
Author: Siddharth Wagle <sw...@hortonworks.com>
Authored: Thu Jan 2 15:51:28 2014 -0800
Committer: Siddharth Wagle <sw...@hortonworks.com>
Committed: Thu Jan 2 15:51:28 2014 -0800
----------------------------------------------------------------------
.../orm/cache/ConfigGroupHostMapping.java | 35 +++
.../orm/cache/ConfigGroupHostMappingImpl.java | 121 +++++++++
.../server/orm/cache/HostConfigMapping.java | 47 ++++
.../server/orm/cache/HostConfigMappingImpl.java | 187 +++++++++++++
.../orm/dao/ConfigGroupHostMappingDAO.java | 270 ++++++++++++++++---
.../server/orm/dao/HostConfigMappingDAO.java | 6 +-
.../ambari/server/state/HostConfigMapping.java | 47 ----
.../server/state/HostConfigMappingImpl.java | 186 -------------
.../server/state/cluster/ClusterImpl.java | 7 +-
.../server/state/configgroup/ConfigGroup.java | 3 -
.../state/configgroup/ConfigGroupFactory.java | 1 -
.../state/configgroup/ConfigGroupImpl.java | 4 -
.../ambari/server/state/host/HostImpl.java | 4 +-
.../server/orm/dao/ConfigGroupDAOTest.java | 13 +-
.../orm/dao/HostConfigMappingDAOTest.java | 4 +-
15 files changed, 650 insertions(+), 285 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/10127a25/ambari-server/src/main/java/org/apache/ambari/server/orm/cache/ConfigGroupHostMapping.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/cache/ConfigGroupHostMapping.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/cache/ConfigGroupHostMapping.java
new file mode 100644
index 0000000..5c26a6c
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/cache/ConfigGroupHostMapping.java
@@ -0,0 +1,35 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ambari.server.orm.cache;
+
+import org.apache.ambari.server.state.Host;
+import org.apache.ambari.server.state.configgroup.ConfigGroup;
+
+public interface ConfigGroupHostMapping {
+
+ public Long getConfigGroupId();
+ public String getHostname();
+ public Host getHost();
+ public ConfigGroup getConfigGroup();
+
+ public void setConfigGroupId(Long configGroupId);
+ public void setHostname(String hostname);
+ public void setHost(Host host);
+ public void setConfigGroup(ConfigGroup configGroup);
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/10127a25/ambari-server/src/main/java/org/apache/ambari/server/orm/cache/ConfigGroupHostMappingImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/cache/ConfigGroupHostMappingImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/cache/ConfigGroupHostMappingImpl.java
new file mode 100644
index 0000000..54e1ca0
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/cache/ConfigGroupHostMappingImpl.java
@@ -0,0 +1,121 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ambari.server.orm.cache;
+
+import org.apache.ambari.server.state.Host;
+import org.apache.ambari.server.state.configgroup.ConfigGroup;
+
+public class ConfigGroupHostMappingImpl implements ConfigGroupHostMapping {
+
+ private Long configGroupId;
+ private String hostname;
+ private Host host;
+ private ConfigGroup configGroup;
+
+ @Override
+ public Long getConfigGroupId() {
+ return configGroupId;
+ }
+
+ @Override
+ public String getHostname() {
+ return hostname;
+ }
+
+ @Override
+ public Host getHost() {
+ return host;
+ }
+
+ @Override
+ public ConfigGroup getConfigGroup() {
+ return configGroup;
+ }
+
+ @Override
+ public void setConfigGroupId(Long configGroupId) {
+ this.configGroupId = configGroupId;
+
+ }
+
+ @Override
+ public void setHostname(String hostname) {
+ this.hostname = hostname;
+
+ }
+
+ @Override
+ public void setHost(Host host) {
+ this.host = host;
+
+ }
+
+ @Override
+ public void setConfigGroup(ConfigGroup configGroup) {
+ this.configGroup = configGroup;
+
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result =
+ prime * result + ((configGroup == null) ? 0 : configGroup.hashCode());
+ result =
+ prime * result
+ + ((configGroupId == null) ? 0 : configGroupId.hashCode());
+ result = prime * result + ((host == null) ? 0 : host.hashCode());
+ result = prime * result + ((hostname == null) ? 0 : hostname.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ ConfigGroupHostMappingImpl other = (ConfigGroupHostMappingImpl) obj;
+ if (configGroup == null) {
+ if (other.configGroup != null)
+ return false;
+ } else if (!configGroup.equals(other.configGroup))
+ return false;
+ if (configGroupId == null) {
+ if (other.configGroupId != null)
+ return false;
+ } else if (!configGroupId.equals(other.configGroupId))
+ return false;
+ if (host == null) {
+ if (other.host != null)
+ return false;
+ } else if (!host.equals(other.host))
+ return false;
+ if (hostname == null) {
+ if (other.hostname != null)
+ return false;
+ } else if (!hostname.equals(other.hostname))
+ return false;
+ return true;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/10127a25/ambari-server/src/main/java/org/apache/ambari/server/orm/cache/HostConfigMapping.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/cache/HostConfigMapping.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/cache/HostConfigMapping.java
new file mode 100644
index 0000000..269daa9
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/cache/HostConfigMapping.java
@@ -0,0 +1,47 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ambari.server.orm.cache;
+
+public interface HostConfigMapping {
+
+ public Long getClusterId();
+ public void setClusterId(Long clusterId);
+
+ public String getHostName();
+ public void setHostName(String hostName);
+
+ public String getType();
+ public void setType(String type);
+
+ public Long getCreateTimestamp();
+ public void setCreateTimestamp(Long createTimestamp);
+
+ public String getVersion();
+ public void setVersion(String version);
+
+ public String getServiceName();
+ public void setServiceName(String serviceName);
+
+ public String getUser();
+ public void setUser(String user);
+
+ public Integer getSelected();
+ public void setSelected(Integer selected);
+
+
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/10127a25/ambari-server/src/main/java/org/apache/ambari/server/orm/cache/HostConfigMappingImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/cache/HostConfigMappingImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/cache/HostConfigMappingImpl.java
new file mode 100644
index 0000000..407aeb6
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/cache/HostConfigMappingImpl.java
@@ -0,0 +1,187 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ambari.server.orm.cache;
+
+
+public class HostConfigMappingImpl implements HostConfigMapping {
+
+ private Long clusterId;
+ private String hostName;
+ private String type;
+ private Long createTimestamp;
+ private String version;
+ private String serviceName;
+ private String user;
+ private Integer selected;
+
+
+
+ public HostConfigMappingImpl(HostConfigMapping entry) {
+ setClusterId(entry.getClusterId());
+ setHostName(entry.getHostName());
+ setType(entry.getType());
+ setCreateTimestamp(entry.getCreateTimestamp());
+ setVersion(entry.getVersion());
+ setServiceName(entry.getServiceName());
+ setUser(entry.getUser());
+ setSelected(entry.getSelected());
+ }
+
+ public HostConfigMappingImpl() {
+ }
+
+ @Override
+ public Long getClusterId() {
+ return clusterId;
+ }
+
+ @Override
+ public void setClusterId(Long clusterId) {
+ if (clusterId == null)
+ throw new RuntimeException("ClusterId couldn't be null");
+ this.clusterId = clusterId;
+ }
+
+ @Override
+ public String getHostName() {
+ return hostName;
+ }
+
+ @Override
+ public void setHostName(String hostName) {
+ if (hostName == null)
+ throw new RuntimeException("HostName couldn't be null");
+ this.hostName = hostName;
+ }
+
+ @Override
+ public String getType() {
+ return type;
+ }
+
+ @Override
+ public void setType(String type) {
+ if (type == null)
+ throw new RuntimeException("Type couldn't be null");
+ this.type = type;
+ }
+
+ @Override
+ public Long getCreateTimestamp() {
+ return createTimestamp;
+ }
+
+ @Override
+ public void setCreateTimestamp(Long createTimestamp) {
+ if (createTimestamp == null)
+ throw new RuntimeException("CreateTimestamp couldn't be null");
+ this.createTimestamp = createTimestamp;
+ }
+
+ @Override
+ public String getVersion() {
+ return version;
+ }
+
+ @Override
+ public void setVersion(String version) {
+ if (version == null)
+ throw new RuntimeException("Version couldn't be null");
+ this.version = version;
+ }
+ public String getServiceName() {
+ return serviceName;
+ }
+
+ @Override
+ public void setServiceName(String serviceName) {
+ this.serviceName = serviceName;
+ }
+
+ @Override
+ public String getUser() {
+ return user;
+ }
+
+ @Override
+ public void setUser(String user) {
+ if (user == null)
+ throw new RuntimeException("User couldn't be null");
+ this.user = user;
+ }
+
+ @Override
+ public Integer getSelected() {
+ return selected;
+ }
+
+ @Override
+ public void setSelected(Integer selected) {
+ if (selected == null)
+ throw new RuntimeException("Selected couldn't be null");
+ this.selected = selected;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((clusterId == null) ? 0 : clusterId.hashCode());
+ result =
+ prime * result
+ + ((createTimestamp == null) ? 0 : createTimestamp.hashCode());
+ result = prime * result + ((hostName == null) ? 0 : hostName.hashCode());
+ result = prime * result + ((type == null) ? 0 : type.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ HostConfigMappingImpl other = (HostConfigMappingImpl) obj;
+ if (clusterId == null) {
+ if (other.clusterId != null)
+ return false;
+ } else if (!clusterId.equals(other.clusterId))
+ return false;
+ if (createTimestamp == null) {
+ if (other.createTimestamp != null)
+ return false;
+ } else if (!createTimestamp.equals(other.createTimestamp))
+ return false;
+ if (hostName == null) {
+ if (other.hostName != null)
+ return false;
+ } else if (!hostName.equals(other.hostName))
+ return false;
+ if (type == null) {
+ if (other.type != null)
+ return false;
+ } else if (!type.equals(other.type))
+ return false;
+ return true;
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/10127a25/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ConfigGroupHostMappingDAO.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ConfigGroupHostMappingDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ConfigGroupHostMappingDAO.java
index 5ca155f..3612a07 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ConfigGroupHostMappingDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ConfigGroupHostMappingDAO.java
@@ -21,12 +21,33 @@ import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
import com.google.inject.persist.Transactional;
+
+import org.apache.ambari.server.orm.cache.ConfigGroupHostMapping;
+import org.apache.ambari.server.orm.cache.ConfigGroupHostMappingImpl;
+import org.apache.ambari.server.orm.cache.HostConfigMapping;
+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.Host;
+import org.apache.ambari.server.state.cluster.ClusterFactory;
+import org.apache.ambari.server.state.configgroup.ConfigGroup;
+import org.apache.ambari.server.state.configgroup.ConfigGroupFactory;
+import org.apache.ambari.server.state.host.HostFactory;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.Predicate;
+
import javax.persistence.EntityManager;
-import javax.persistence.NoResultException;
import javax.persistence.TypedQuery;
+
+import java.util.HashSet;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
@Singleton
public class ConfigGroupHostMappingDAO {
@@ -34,75 +55,218 @@ public class ConfigGroupHostMappingDAO {
Provider<EntityManager> entityManagerProvider;
@Inject
DaoUtils daoUtils;
+ @Inject
+ private ConfigGroupFactory configGroupFactory;
+ @Inject
+ private ClusterFactory clusterFactory;
+ @Inject
+ private HostFactory hostFactory;
+
+ private final ReadWriteLock gl = new ReentrantReadWriteLock();
+
+ private Map<String, Set<ConfigGroupHostMapping>> configGroupHostMappingByHost;
+
+ private volatile boolean cacheLoaded;
+
+
+ private void populateCache() {
+
+ if (!cacheLoaded) {
+ gl.writeLock().lock();
+ try {
+ if (configGroupHostMappingByHost == null) {
+ configGroupHostMappingByHost = new ConcurrentHashMap<String, Set<ConfigGroupHostMapping>>();
+
+ TypedQuery<ConfigGroupHostMappingEntity> query = entityManagerProvider.get().createQuery(
+ "SELECT entity FROM ConfigGroupHostMappingEntity entity",
+ ConfigGroupHostMappingEntity.class);
+ List<ConfigGroupHostMappingEntity> configGroupHostMappingEntities = daoUtils.selectList(query);
+
+ for (ConfigGroupHostMappingEntity configGroupHostMappingEntity : configGroupHostMappingEntities) {
+
+ Set<ConfigGroupHostMapping> setByHost = configGroupHostMappingByHost.get((configGroupHostMappingEntity.getHostname()));
+
+ if (setByHost == null) {
+ setByHost = new HashSet<ConfigGroupHostMapping>();
+ configGroupHostMappingByHost.put(configGroupHostMappingEntity.getHostname(), setByHost);
+ }
+
+ ConfigGroupHostMapping configGroupHostMapping = buildConfigGroupHostMapping(configGroupHostMappingEntity);
+ setByHost.add(configGroupHostMapping);
+ }
+ }
+ } finally {
+ gl.writeLock().unlock();
+ }
+
+ cacheLoaded = true;
+
+ }
+
+ }
+
@Transactional
- public ConfigGroupHostMappingEntity findByPK(ConfigGroupHostMappingEntityPK
+ public ConfigGroupHostMapping findByPK(final ConfigGroupHostMappingEntityPK
configGroupHostMappingEntityPK) {
- return entityManagerProvider.get().find(ConfigGroupHostMappingEntity
- .class, configGroupHostMappingEntityPK);
+
+ populateCache();
+
+ if (!configGroupHostMappingByHost.containsKey(configGroupHostMappingEntityPK.getHostname()))
+ return null;
+
+ Set<ConfigGroupHostMapping> set =
+ new HashSet<ConfigGroupHostMapping>(configGroupHostMappingByHost.get(configGroupHostMappingEntityPK.getHostname()));
+
+ ConfigGroupHostMapping itemByPk = (ConfigGroupHostMapping) CollectionUtils.find(set, new Predicate() {
+
+ @Override
+ public boolean evaluate(Object arg0) {
+ return ((ConfigGroupHostMapping) arg0).getConfigGroupId().
+ equals(configGroupHostMappingEntityPK.getConfigGroupId());
+ }
+ });
+
+ return itemByPk;
}
@Transactional
- public List<ConfigGroupHostMappingEntity> findByHost(String hostname) {
- TypedQuery<ConfigGroupHostMappingEntity> query = entityManagerProvider
- .get().createNamedQuery("groupsByHost", ConfigGroupHostMappingEntity
- .class);
-
- query.setParameter("hostname", hostname);
- try {
- return query.getResultList();
- } catch (NoResultException ignored) {
- }
- return null;
+ public Set<ConfigGroupHostMapping> findByHost(String hostname) {
+
+ populateCache();
+
+ if (!configGroupHostMappingByHost.containsKey(hostname))
+ return null;
+
+ Set<ConfigGroupHostMapping> set = new HashSet<ConfigGroupHostMapping>(configGroupHostMappingByHost.get(hostname));
+
+ return set;
+
}
@Transactional
- public List<ConfigGroupHostMappingEntity> findByGroup(Long groupId) {
- TypedQuery<ConfigGroupHostMappingEntity> query = entityManagerProvider
- .get().createNamedQuery("hostsByGroup", ConfigGroupHostMappingEntity
- .class);
-
- query.setParameter("groupId", groupId);
- try {
- return query.getResultList();
- } catch (NoResultException ignored) {
+ public Set<ConfigGroupHostMapping> findByGroup(final Long groupId) {
+
+ populateCache();
+
+ Set<ConfigGroupHostMapping> result = new HashSet<ConfigGroupHostMapping>();
+
+ for (Set<ConfigGroupHostMapping> item : configGroupHostMappingByHost.values()) {
+
+ Set<ConfigGroupHostMapping> setByHost = new HashSet<ConfigGroupHostMapping>(item);
+
+ CollectionUtils.filter(setByHost, new Predicate() {
+
+ @Override
+ public boolean evaluate(Object arg0) {
+ return ((ConfigGroupHostMapping) arg0).getConfigGroupId().equals(groupId);
+ }
+ });
+
+ result.addAll(setByHost);
+
}
- return null;
+
+ return result;
+
}
@Transactional
public void create(ConfigGroupHostMappingEntity
configGroupHostMappingEntity) {
+
+ populateCache();
+
entityManagerProvider.get().persist(configGroupHostMappingEntity);
+
+ //create in cache
+ Set<ConfigGroupHostMapping> set = configGroupHostMappingByHost.get(configGroupHostMappingEntity.getHostname());
+ if (set == null){
+ set = new HashSet<ConfigGroupHostMapping>();
+ configGroupHostMappingByHost.put(configGroupHostMappingEntity.getHostname(), set);
+ }
+
+ set.add(buildConfigGroupHostMapping(configGroupHostMappingEntity));
+
}
+
+
@Transactional
- public ConfigGroupHostMappingEntity merge(ConfigGroupHostMappingEntity
- configGroupHostMappingEntity) {
+ public ConfigGroupHostMappingEntity merge(ConfigGroupHostMappingEntity configGroupHostMappingEntity) {
+
+ populateCache();
+
+ Set<ConfigGroupHostMapping> set = configGroupHostMappingByHost.get(configGroupHostMappingEntity.getHostname());
+ if (set == null){
+ set = new HashSet<ConfigGroupHostMapping>();
+ configGroupHostMappingByHost.put(configGroupHostMappingEntity.getHostname(), set);
+ }
+
+ //Update object in set
+ set.remove(buildConfigGroupHostMapping(configGroupHostMappingEntity));
+ set.add(buildConfigGroupHostMapping(configGroupHostMappingEntity));
+
+
return entityManagerProvider.get().merge(configGroupHostMappingEntity);
}
@Transactional
public void refresh(ConfigGroupHostMappingEntity
configGroupHostMappingEntity) {
+ cacheLoaded = false;
+ populateCache();
+
entityManagerProvider.get().refresh(configGroupHostMappingEntity);
}
@Transactional
- public void remove(ConfigGroupHostMappingEntity
+ public void remove(final ConfigGroupHostMappingEntity
configGroupHostMappingEntity) {
+
+ populateCache();
+
entityManagerProvider.get().remove(merge(configGroupHostMappingEntity));
+
+ Set<ConfigGroupHostMapping> setByHost = configGroupHostMappingByHost.get(configGroupHostMappingEntity.getHostname());
+
+ if (setByHost != null) {
+ CollectionUtils.filter(setByHost, new Predicate() {
+
+ @Override
+ public boolean evaluate(Object arg0) {
+ return !((ConfigGroupHostMapping) arg0).getConfigGroupId().
+ equals(configGroupHostMappingEntity.getConfigGroupId());
+ }
+ });
+ }
}
@Transactional
- public void removeByPK(ConfigGroupHostMappingEntityPK
+ public void removeByPK(final ConfigGroupHostMappingEntityPK
configGroupHostMappingEntityPK) {
+ populateCache();
+
entityManagerProvider.get().remove(findByPK
(configGroupHostMappingEntityPK));
+
+ Set<ConfigGroupHostMapping> setByHost = configGroupHostMappingByHost.get(configGroupHostMappingEntityPK.getHostname());
+
+ if (setByHost != null) {
+ CollectionUtils.filter(setByHost, new Predicate() {
+
+ @Override
+ public boolean evaluate(Object arg0) {
+ return !((ConfigGroupHostMapping) arg0).getConfigGroupId().
+ equals(configGroupHostMappingEntityPK.getConfigGroupId());
+ }
+ });
+ }
+
}
@Transactional
- public void removeAllByGroup(Long groupId) {
+ public void removeAllByGroup(final Long groupId) {
TypedQuery<Long> query = entityManagerProvider.get().createQuery
("DELETE FROM ConfigGroupHostMappingEntity confighosts WHERE " +
"confighosts.configGroupId = ?1", Long.class);
@@ -111,6 +275,18 @@ public class ConfigGroupHostMappingDAO {
// Flush to current transaction required in order to avoid Eclipse link
// from re-ordering delete
entityManagerProvider.get().flush();
+
+ for (Set<ConfigGroupHostMapping> setByHost : configGroupHostMappingByHost.values()) {
+
+ CollectionUtils.filter(setByHost, new Predicate() {
+
+ @Override
+ public boolean evaluate(Object arg0) {
+ return !((ConfigGroupHostMapping) arg0).getConfigGroupId().equals(groupId);
+ }
+ });
+ }
+
}
@Transactional
@@ -120,5 +296,39 @@ public class ConfigGroupHostMappingDAO {
"confighosts.hostname = ?1", String.class);
daoUtils.executeUpdate(query, hostname);
+
+
+ Set<ConfigGroupHostMapping> setByHost = configGroupHostMappingByHost.get(hostname);
+
+ setByHost.clear();
+
+
+ }
+
+ private ConfigGroupHostMapping buildConfigGroupHostMapping(
+ ConfigGroupHostMappingEntity configGroupHostMappingEntity) {
+
+ ConfigGroupHostMappingImpl configGroupHostMapping = new ConfigGroupHostMappingImpl();
+ configGroupHostMapping.setConfigGroup(buildConfigGroup(configGroupHostMappingEntity.getConfigGroupEntity()));
+ configGroupHostMapping.setConfigGroupId(configGroupHostMappingEntity.getConfigGroupId());
+ configGroupHostMapping.setHost(buildHost(configGroupHostMappingEntity.getHostEntity()));
+ configGroupHostMapping.setHostname(configGroupHostMappingEntity.getHostname());
+
+ return configGroupHostMapping;
+ }
+
+ private ConfigGroup buildConfigGroup(ConfigGroupEntity configGroupEntity) {
+
+ Cluster cluster = clusterFactory.create(configGroupEntity.getClusterEntity());
+ ConfigGroup configGroup = configGroupFactory.createExisting(cluster, configGroupEntity);
+
+ return configGroup;
+ }
+
+ private Host buildHost(HostEntity hostEntity) {
+
+ Host host = hostFactory.create(hostEntity, false);
+
+ return host;
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/10127a25/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostConfigMappingDAO.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostConfigMappingDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostConfigMappingDAO.java
index 980cfda..e95a240 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostConfigMappingDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostConfigMappingDAO.java
@@ -27,9 +27,9 @@ import javax.persistence.TypedQuery;
import com.google.inject.Singleton;
+import org.apache.ambari.server.orm.cache.HostConfigMapping;
+import org.apache.ambari.server.orm.cache.HostConfigMappingImpl;
import org.apache.ambari.server.orm.entities.HostConfigMappingEntity;
-import org.apache.ambari.server.state.HostConfigMapping;
-import org.apache.ambari.server.state.HostConfigMappingImpl;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Predicate;
@@ -71,7 +71,7 @@ public class HostConfigMappingDAO {
for (HostConfigMappingEntity hostConfigMappingEntity : hostConfigMappingEntities) {
- Set<HostConfigMapping> setByHost = hostConfigMappingByHost.get((hostConfigMappingEntity.getType()));
+ Set<HostConfigMapping> setByHost = hostConfigMappingByHost.get((hostConfigMappingEntity.getHostName()));
if (setByHost == null) {
setByHost = new HashSet<HostConfigMapping>();
http://git-wip-us.apache.org/repos/asf/ambari/blob/10127a25/ambari-server/src/main/java/org/apache/ambari/server/state/HostConfigMapping.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/HostConfigMapping.java b/ambari-server/src/main/java/org/apache/ambari/server/state/HostConfigMapping.java
deleted file mode 100644
index 4ad25db..0000000
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/HostConfigMapping.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.ambari.server.state;
-
-public interface HostConfigMapping {
-
- public Long getClusterId();
- public void setClusterId(Long clusterId);
-
- public String getHostName();
- public void setHostName(String hostName);
-
- public String getType();
- public void setType(String type);
-
- public Long getCreateTimestamp();
- public void setCreateTimestamp(Long createTimestamp);
-
- public String getVersion();
- public void setVersion(String version);
-
- public String getServiceName();
- public void setServiceName(String serviceName);
-
- public String getUser();
- public void setUser(String user);
-
- public Integer getSelected();
- public void setSelected(Integer selected);
-
-
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/10127a25/ambari-server/src/main/java/org/apache/ambari/server/state/HostConfigMappingImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/HostConfigMappingImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/HostConfigMappingImpl.java
deleted file mode 100644
index 6905e27..0000000
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/HostConfigMappingImpl.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ambari.server.state;
-
-public class HostConfigMappingImpl implements HostConfigMapping {
-
- private Long clusterId;
- private String hostName;
- private String type;
- private Long createTimestamp;
- private String version;
- private String serviceName;
- private String user;
- private Integer selected;
-
-
-
- public HostConfigMappingImpl(HostConfigMapping entry) {
- setClusterId(entry.getClusterId());
- setHostName(entry.getHostName());
- setType(entry.getType());
- setCreateTimestamp(entry.getCreateTimestamp());
- setVersion(entry.getVersion());
- setServiceName(entry.getServiceName());
- setUser(entry.getUser());
- setSelected(entry.getSelected());
- }
-
- public HostConfigMappingImpl() {
- }
-
- @Override
- public Long getClusterId() {
- return clusterId;
- }
-
- @Override
- public void setClusterId(Long clusterId) {
- if (clusterId == null)
- throw new RuntimeException("ClusterId couldn't be null");
- this.clusterId = clusterId;
- }
-
- @Override
- public String getHostName() {
- return hostName;
- }
-
- @Override
- public void setHostName(String hostName) {
- if (hostName == null)
- throw new RuntimeException("HostName couldn't be null");
- this.hostName = hostName;
- }
-
- @Override
- public String getType() {
- return type;
- }
-
- @Override
- public void setType(String type) {
- if (type == null)
- throw new RuntimeException("Type couldn't be null");
- this.type = type;
- }
-
- @Override
- public Long getCreateTimestamp() {
- return createTimestamp;
- }
-
- @Override
- public void setCreateTimestamp(Long createTimestamp) {
- if (createTimestamp == null)
- throw new RuntimeException("CreateTimestamp couldn't be null");
- this.createTimestamp = createTimestamp;
- }
-
- @Override
- public String getVersion() {
- return version;
- }
-
- @Override
- public void setVersion(String version) {
- if (version == null)
- throw new RuntimeException("Version couldn't be null");
- this.version = version;
- }
- public String getServiceName() {
- return serviceName;
- }
-
- @Override
- public void setServiceName(String serviceName) {
- this.serviceName = serviceName;
- }
-
- @Override
- public String getUser() {
- return user;
- }
-
- @Override
- public void setUser(String user) {
- if (user == null)
- throw new RuntimeException("User couldn't be null");
- this.user = user;
- }
-
- @Override
- public Integer getSelected() {
- return selected;
- }
-
- @Override
- public void setSelected(Integer selected) {
- if (selected == null)
- throw new RuntimeException("Selected couldn't be null");
- this.selected = selected;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((clusterId == null) ? 0 : clusterId.hashCode());
- result =
- prime * result
- + ((createTimestamp == null) ? 0 : createTimestamp.hashCode());
- result = prime * result + ((hostName == null) ? 0 : hostName.hashCode());
- result = prime * result + ((type == null) ? 0 : type.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- HostConfigMappingImpl other = (HostConfigMappingImpl) obj;
- if (clusterId == null) {
- if (other.clusterId != null)
- return false;
- } else if (!clusterId.equals(other.clusterId))
- return false;
- if (createTimestamp == null) {
- if (other.createTimestamp != null)
- return false;
- } else if (!createTimestamp.equals(other.createTimestamp))
- return false;
- if (hostName == null) {
- if (other.hostName != null)
- return false;
- } else if (!hostName.equals(other.hostName))
- return false;
- if (type == null) {
- if (other.type != null)
- return false;
- } else if (!type.equals(other.type))
- return false;
- return true;
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/10127a25/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
index 486779b..b19d239 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
@@ -27,6 +27,8 @@ import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.ServiceComponentHostNotFoundException;
import org.apache.ambari.server.ServiceNotFoundException;
import org.apache.ambari.server.controller.ClusterResponse;
+import org.apache.ambari.server.orm.cache.ConfigGroupHostMapping;
+import org.apache.ambari.server.orm.cache.HostConfigMapping;
import org.apache.ambari.server.orm.dao.ClusterDAO;
import org.apache.ambari.server.orm.dao.ClusterStateDAO;
import org.apache.ambari.server.orm.dao.ConfigGroupHostMappingDAO;
@@ -43,7 +45,6 @@ import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.Config;
import org.apache.ambari.server.state.ConfigFactory;
import org.apache.ambari.server.state.DesiredConfig;
-import org.apache.ambari.server.state.HostConfigMapping;
import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.ServiceComponent;
import org.apache.ambari.server.state.ServiceComponentHost;
@@ -332,11 +333,11 @@ public class ClusterImpl implements Cluster {
try {
readLock.lock();
try {
- List<ConfigGroupHostMappingEntity> hostMappingEntities =
+ Set<ConfigGroupHostMapping> hostMappingEntities =
configGroupHostMappingDAO.findByHost(hostname);
if (hostMappingEntities != null && !hostMappingEntities.isEmpty()) {
- for (ConfigGroupHostMappingEntity entity : hostMappingEntities) {
+ for (ConfigGroupHostMapping entity : hostMappingEntities) {
ConfigGroup configGroup = configGroupMap.get(entity.getConfigGroupId());
if (configGroup != null && !configGroups.containsKey(configGroup.getId())) {
configGroups.put(configGroup.getId(), configGroup);
http://git-wip-us.apache.org/repos/asf/ambari/blob/10127a25/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 f8ec21d..8ec257e 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
@@ -20,13 +20,10 @@ package org.apache.ambari.server.state.configgroup;
import com.google.inject.persist.Transactional;
import org.apache.ambari.server.AmbariException;
-import org.apache.ambari.server.DuplicateResourceException;
import org.apache.ambari.server.controller.ConfigGroupResponse;
-import org.apache.ambari.server.orm.entities.ConfigGroupEntity;
import org.apache.ambari.server.state.Config;
import org.apache.ambari.server.state.Host;
-import java.util.List;
import java.util.Map;
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/10127a25/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupFactory.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupFactory.java b/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupFactory.java
index 4ba569d..d4597af 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupFactory.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupFactory.java
@@ -24,7 +24,6 @@ import org.apache.ambari.server.state.Config;
import org.apache.ambari.server.state.Host;
import org.apache.ambari.server.state.configgroup.ConfigGroup;
-import java.util.List;
import java.util.Map;
public interface ConfigGroupFactory {
http://git-wip-us.apache.org/repos/asf/ambari/blob/10127a25/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 0162b80..61ad928 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
@@ -26,9 +26,7 @@ import com.google.inject.persist.Transactional;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.DuplicateResourceException;
import org.apache.ambari.server.controller.ConfigGroupResponse;
-import org.apache.ambari.server.controller.internal.ConfigGroupResourceProvider;
import org.apache.ambari.server.controller.internal.ConfigurationResourceProvider;
-import org.apache.ambari.server.controller.utilities.PropertyHelper;
import org.apache.ambari.server.orm.dao.ClusterDAO;
import org.apache.ambari.server.orm.dao.ConfigGroupConfigMappingDAO;
import org.apache.ambari.server.orm.dao.ConfigGroupDAO;
@@ -47,14 +45,12 @@ import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.Config;
import org.apache.ambari.server.state.ConfigFactory;
import org.apache.ambari.server.state.Host;
-import org.eclipse.persistence.sessions.UnitOfWork;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.locks.ReadWriteLock;
http://git-wip-us.apache.org/repos/asf/ambari/blob/10127a25/ambari-server/src/main/java/org/apache/ambari/server/state/host/HostImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/host/HostImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/host/HostImpl.java
index 78f18fa..f8bf36e 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/host/HostImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/host/HostImpl.java
@@ -31,6 +31,8 @@ import org.apache.ambari.server.agent.AgentEnv;
import org.apache.ambari.server.agent.DiskInfo;
import org.apache.ambari.server.agent.HostInfo;
import org.apache.ambari.server.controller.HostResponse;
+import org.apache.ambari.server.orm.cache.HostConfigMapping;
+import org.apache.ambari.server.orm.cache.HostConfigMappingImpl;
import org.apache.ambari.server.orm.dao.ClusterDAO;
import org.apache.ambari.server.orm.dao.ConfigGroupHostMappingDAO;
import org.apache.ambari.server.orm.dao.HostConfigMappingDAO;
@@ -46,8 +48,6 @@ import org.apache.ambari.server.state.Config;
import org.apache.ambari.server.state.DesiredConfig;
import org.apache.ambari.server.state.Host;
import org.apache.ambari.server.state.HostConfig;
-import org.apache.ambari.server.state.HostConfigMapping;
-import org.apache.ambari.server.state.HostConfigMappingImpl;
import org.apache.ambari.server.state.HostEvent;
import org.apache.ambari.server.state.HostEventType;
import org.apache.ambari.server.state.HostHealthStatus;
http://git-wip-us.apache.org/repos/asf/ambari/blob/10127a25/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ConfigGroupDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ConfigGroupDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ConfigGroupDAOTest.java
index 8424082..dd0b1f9 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ConfigGroupDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ConfigGroupDAOTest.java
@@ -24,6 +24,7 @@ import junit.framework.Assert;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
+import org.apache.ambari.server.orm.cache.ConfigGroupHostMapping;
import org.apache.ambari.server.orm.entities.ClusterConfigEntity;
import org.apache.ambari.server.orm.entities.ClusterEntity;
import org.apache.ambari.server.orm.entities.ConfigGroupConfigMappingEntity;
@@ -36,6 +37,7 @@ import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
+import java.util.Set;
public class ConfigGroupDAOTest {
private Injector injector;
@@ -191,13 +193,16 @@ public class ConfigGroupDAOTest {
Assert.assertNotNull(configGroupEntity
.getConfigGroupHostMappingEntities().iterator().next());
- List<ConfigGroupHostMappingEntity> hostMappingEntities = configGroupHostMappingDAO
+ Set<ConfigGroupHostMapping> hostMappingEntities = configGroupHostMappingDAO
.findByHost("h1");
Assert.assertNotNull(hostMappingEntities);
- Assert.assertEquals("h1", hostMappingEntities.get(0).getHostname());
- Assert.assertEquals("centOS", hostMappingEntities.get(0).getHostEntity()
- .getOsType());
+
+ for (ConfigGroupHostMapping hostMappingEntity : hostMappingEntities) {
+
+ Assert.assertEquals("h1", hostMappingEntity.getHostname());
+ Assert.assertEquals("centOS", hostMappingEntity.getHost().getOsType());
+ }
}
@Test
http://git-wip-us.apache.org/repos/asf/ambari/blob/10127a25/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/HostConfigMappingDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/HostConfigMappingDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/HostConfigMappingDAOTest.java
index 50b070e..ec1289a 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/HostConfigMappingDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/HostConfigMappingDAOTest.java
@@ -24,8 +24,8 @@ import junit.framework.Assert;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
-import org.apache.ambari.server.state.HostConfigMapping;
-import org.apache.ambari.server.state.HostConfigMappingImpl;
+import org.apache.ambari.server.orm.cache.HostConfigMapping;
+import org.apache.ambari.server.orm.cache.HostConfigMappingImpl;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;