Repository: ambari
Updated Branches:
  refs/heads/trunk 2bd0014a6 -> 3d8e9acc9


AMBARI-11433. Multiple perf issues with requests for host components. 
(mpapirkovskyy)


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

Branch: refs/heads/trunk
Commit: 3d8e9acc978cdc68dc9e4088fc073be23b7c6961
Parents: 2bd0014
Author: Myroslav Papirkovskyy <mpapyrkovs...@hortonworks.com>
Authored: Wed May 27 19:23:01 2015 +0300
Committer: Myroslav Papirkovskyy <mpapyrkovs...@hortonworks.com>
Committed: Fri May 29 01:47:07 2015 +0300

----------------------------------------------------------------------
 .../internal/ComponentResourceProvider.java     |  2 +-
 .../apache/ambari/server/orm/dao/AlertsDAO.java |  9 --------
 .../server/state/ServiceComponentImpl.java      |  2 +-
 .../apache/ambari/server/state/ServiceImpl.java |  2 +-
 .../server/state/cluster/ClusterImpl.java       | 24 ++++++++------------
 .../svccomphost/ServiceComponentHostImpl.java   |  2 +-
 6 files changed, 14 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/3d8e9acc/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
index 147ab8e..59b5fcf 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
@@ -442,7 +442,7 @@ public class ComponentResourceProvider extends 
AbstractControllerResourceProvide
   }
 
   // Get the components for the given request.
-  private synchronized Set<ServiceComponentResponse> getComponents(
+  private Set<ServiceComponentResponse> getComponents(
       ServiceComponentRequest request) throws AmbariException {
     if (request.getClusterName() == null
         || request.getClusterName().isEmpty()) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/3d8e9acc/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/AlertsDAO.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/AlertsDAO.java 
b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/AlertsDAO.java
index ddfe2ab..c2bca06 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/AlertsDAO.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/AlertsDAO.java
@@ -255,8 +255,6 @@ public class AlertsDAO {
       typedQuery.setMaxResults(request.Pagination.getPageSize());
     }
 
-    typedQuery = setQueryRefreshHint(typedQuery);
-
     return daoUtils.selectList(typedQuery);
   }
 
@@ -301,8 +299,6 @@ public class AlertsDAO {
       typedQuery.setMaxResults(request.Pagination.getPageSize());
     }
 
-    typedQuery = setQueryRefreshHint(typedQuery);
-
     return daoUtils.selectList(typedQuery);
   }
 
@@ -358,7 +354,6 @@ public class AlertsDAO {
         "AlertCurrentEntity.findByDefinitionId", AlertCurrentEntity.class);
 
     query.setParameter("definitionId", Long.valueOf(definitionId));
-    query = setQueryRefreshHint(query);
 
     return daoUtils.selectList(query);
   }
@@ -375,7 +370,6 @@ public class AlertsDAO {
         "AlertCurrentEntity.findByCluster", AlertCurrentEntity.class);
 
     query.setParameter("clusterId", Long.valueOf(clusterId));
-    query = setQueryRefreshHint(query);
 
     return daoUtils.selectList(query);
   }
@@ -502,7 +496,6 @@ public class AlertsDAO {
     query.setParameter("serviceName", serviceName);
     query.setParameter("inlist", EnumSet.of(Scope.ANY, Scope.SERVICE));
 
-    query = setQueryRefreshHint(query);
     return daoUtils.selectList(query);
   }
 
@@ -517,7 +510,6 @@ public class AlertsDAO {
     query.setParameter("hostName", hostName);
     query.setParameter("definitionName", alertName);
 
-    query = setQueryRefreshHint(query);
     return daoUtils.selectOne(query);
   }
 
@@ -778,7 +770,6 @@ public class AlertsDAO {
     query.setParameter("clusterId", Long.valueOf(clusterId));
     query.setParameter("definitionName", alertName);
 
-    query = setQueryRefreshHint(query);
     return daoUtils.selectOne(query);
   }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/3d8e9acc/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
index 9e84353..560cd04 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
@@ -61,7 +61,7 @@ public class ServiceComponentImpl implements ServiceComponent 
{
   private final ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
   private final boolean isClientComponent;
   private final boolean isMasterComponent;
-  boolean persisted = false;
+  volatile boolean persisted = false;
   @Inject
   private ServiceComponentDesiredStateDAO serviceComponentDesiredStateDAO;
   @Inject

http://git-wip-us.apache.org/repos/asf/ambari/blob/3d8e9acc/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java 
b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java
index f7a59dc..6484c9f 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java
@@ -62,7 +62,7 @@ public class ServiceImpl implements Service {
   private static final Logger LOG =
       LoggerFactory.getLogger(ServiceImpl.class);
 
-  private boolean persisted = false;
+  private volatile boolean persisted = false;
   private final Cluster cluster;
   private Map<String, ServiceComponent> components;
   private final boolean isClientOnlyService;

http://git-wip-us.apache.org/repos/asf/ambari/blob/3d8e9acc/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 2e45adc..186963f 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
@@ -164,12 +164,12 @@ public class ClusterImpl implements Cluster {
   /**
    * Map of existing config groups
    */
-  private Map<Long, ConfigGroup> clusterConfigGroups;
+  private volatile Map<Long, ConfigGroup> clusterConfigGroups;
 
   /**
    * Map of Request schedules for this cluster
    */
-  private Map<Long, RequestExecution> requestExecutions;
+  private volatile Map<Long, RequestExecution> requestExecutions;
 
   private final ReadWriteLock clusterGlobalLock = new ReentrantReadWriteLock();
 
@@ -485,22 +485,18 @@ public class ClusterImpl implements Cluster {
   @Override
   public Map<Long, ConfigGroup> getConfigGroupsByHostname(String hostname)
     throws AmbariException {
+    loadConfigGroups();
     Map<Long, ConfigGroup> configGroups = new HashMap<Long, ConfigGroup>();
-    Map<Long, ConfigGroup> configGroupMap = getConfigGroups();
 
     clusterGlobalLock.readLock().lock();
     try {
-      HostEntity hostEntity = hostDAO.findByName(hostname);
-      if (hostEntity != null) {
-        Set<ConfigGroupHostMapping> hostMappingEntities = 
configGroupHostMappingDAO.findByHostId(hostEntity.getHostId());
-
-        if (hostMappingEntities != null && !hostMappingEntities.isEmpty()) {
-          for (ConfigGroupHostMapping entity : hostMappingEntities) {
-            ConfigGroup configGroup = 
configGroupMap.get(entity.getConfigGroupId());
-            if (configGroup != null
-                && !configGroups.containsKey(configGroup.getId())) {
-              configGroups.put(configGroup.getId(), configGroup);
-            }
+      for (Entry<Long, ConfigGroup> groupEntry : 
clusterConfigGroups.entrySet()) {
+        Long id = groupEntry.getKey();
+        ConfigGroup group = groupEntry.getValue();
+        for (Host host : group.getHosts().values()) {
+          if (StringUtils.equals(hostname, host.getHostName())) {
+            configGroups.put(id, group);
+            break;
           }
         }
       }

http://git-wip-us.apache.org/repos/asf/ambari/blob/3d8e9acc/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java
index c439955..f993315 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java
@@ -100,7 +100,7 @@ public class ServiceComponentHostImpl implements 
ServiceComponentHost {
 
   private final ServiceComponent serviceComponent;
   private final Host host;
-  private boolean persisted = false;
+  private volatile boolean persisted = false;
 
   @Inject
   HostComponentStateDAO hostComponentStateDAO;

Reply via email to