Browse Source

AMBARI-6734. ambari-server.log size is growing rapidly and contains lots of excess WARN records. (mpapirkovskyy)

Myroslav Papirkovskyy 10 years ago
parent
commit
1153b2d969

+ 10 - 0
ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ServiceConfigDAO.java

@@ -72,6 +72,16 @@ public class ServiceConfigDAO {
     return daoUtils.selectList(query, clusterId, configType, configVersion);
   }
 
+  public List<ServiceConfigApplicationEntity> getLastApplications(Long clusterId) {
+    TypedQuery<ServiceConfigApplicationEntity> query = entityManagerProvider.get().
+      createQuery("SELECT sca FROM ServiceConfigEntity scv JOIN scv.serviceConfigApplicationEntities sca " +
+          "WHERE scv.clusterId = ?1 AND sca.applyTimestamp = (" +
+          "SELECT max(sca2.applyTimestamp) FROM ServiceConfigApplicationEntity sca2 JOIN sca2.serviceConfigEntity scv2 WHERE scv2.serviceName = scv.serviceName " +
+          "AND scv2.clusterId = ?1)",
+        ServiceConfigApplicationEntity.class);
+    return daoUtils.selectList(query, clusterId);
+  }
+
   public ServiceConfigApplicationEntity getLastApplication(Long clusterId, String serviceName) {
     TypedQuery<ServiceConfigApplicationEntity> query = entityManagerProvider.get().
         createQuery("SELECT sca FROM ServiceConfigEntity scv JOIN scv.serviceConfigApplicationEntities sca " +

+ 23 - 9
ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java

@@ -1426,11 +1426,10 @@ public class ClusterImpl implements Cluster {
       readWriteLock.readLock().lock();
       try {
         Map<String, ServiceConfigVersionResponse> result = new HashMap<String, ServiceConfigVersionResponse>();
-        for (String serviceName : serviceConfigTypes.keySet()) {
-          ServiceConfigVersionResponse activeServiceConfigVersion = getActiveServiceConfigVersion(serviceName);
-          if (activeServiceConfigVersion != null) {
-            result.put(serviceName, activeServiceConfigVersion);
-          }
+
+        Set<ServiceConfigVersionResponse> responses = getActiveServiceConfigVersionSet();
+        for (ServiceConfigVersionResponse response : responses) {
+          result.put(response.getServiceName(), response);
         }
         return result;
       } finally {
@@ -1483,23 +1482,38 @@ public class ClusterImpl implements Cluster {
     }
   }
 
+  @RequiresSession
+  Set<ServiceConfigVersionResponse> getActiveServiceConfigVersionSet() {
+    Set<ServiceConfigVersionResponse> responses = new HashSet<ServiceConfigVersionResponse>();
+    List<ServiceConfigApplicationEntity> lastApplications = serviceConfigDAO.getLastApplications(getClusterId());
+    for (ServiceConfigApplicationEntity lastApplication : lastApplications) {
+      responses.add(convertToServiceConfigVersionResponse(lastApplication));
+    }
+    return responses;
+  }
+
   @RequiresSession
   ServiceConfigVersionResponse getActiveServiceConfigVersion(String serviceName) {
     ServiceConfigApplicationEntity lastApplication = serviceConfigDAO.getLastApplication(getClusterId(), serviceName);
     if (lastApplication == null) {
-      LOG.warn("No active service config version found for service {}", serviceName);
+      LOG.debug("No active service config version found for service {}", serviceName);
       return null;
     }
+    return convertToServiceConfigVersionResponse(lastApplication);
+  }
+
+  @RequiresSession
+  ServiceConfigVersionResponse convertToServiceConfigVersionResponse(ServiceConfigApplicationEntity applicationEntity) {
     ServiceConfigVersionResponse serviceConfigVersionResponse = new ServiceConfigVersionResponse();
 
-    ServiceConfigEntity serviceConfigEntity = lastApplication.getServiceConfigEntity();
+    ServiceConfigEntity serviceConfigEntity = applicationEntity.getServiceConfigEntity();
 
     serviceConfigVersionResponse.setClusterName(getClusterName());
     serviceConfigVersionResponse.setServiceName(serviceConfigEntity.getServiceName());
     serviceConfigVersionResponse.setVersion(serviceConfigEntity.getVersion());
     serviceConfigVersionResponse.setCreateTime(serviceConfigEntity.getCreateTimestamp());
-    serviceConfigVersionResponse.setApplyTime(lastApplication.getApplyTimestamp());
-    serviceConfigVersionResponse.setUserName(lastApplication.getUser());
+    serviceConfigVersionResponse.setApplyTime(applicationEntity.getApplyTimestamp());
+    serviceConfigVersionResponse.setUserName(applicationEntity.getUser());
     return serviceConfigVersionResponse;
   }