فهرست منبع

AMBARI-7950. NPE after upgrade to 1.6.0 to 1.7.0.(vbrodetskyi)

Vitaly Brodetskyi 10 سال پیش
والد
کامیت
beecccea89

+ 7 - 14
ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java

@@ -653,23 +653,16 @@ public class UpgradeCatalog170 extends AbstractUpgradeCatalog {
   }
 
   private void removeMapred2Log4jConfig() {
-    ConfigHelper configHelper = injector.getInstance(ConfigHelper.class);
-
-    AmbariManagementController ambariManagementController = injector.getInstance(
-            AmbariManagementController.class);
-    Clusters clusters = ambariManagementController.getClusters();
-    if (clusters == null) {
-      return;
-    }
-    Map<String, Cluster> clusterMap = clusters.getClusters();
+    final ClusterDAO clusterDAO = injector.getInstance(ClusterDAO.class);
 
-    if (clusterMap != null && !clusterMap.isEmpty()) {
-      for (final Cluster cluster : clusterMap.values()) {
-        Config config = cluster.getDesiredConfigByType(Configuration.MAPREDUCE2_LOG4J_CONFIG_TAG);
-        if (config != null) {
-          configHelper.removeConfigsByType(cluster, Configuration.MAPREDUCE2_LOG4J_CONFIG_TAG);
+    List<ClusterEntity> clusters = clusterDAO.findAll();
+    for (ClusterEntity cluster : clusters) {
+      for (ClusterConfigMappingEntity configMapping : cluster.getConfigMappingEntities()) {
+        if (configMapping.getType().equals(Configuration.MAPREDUCE2_LOG4J_CONFIG_TAG)) {
+          configMapping.setSelected(0);
         }
       }
+      clusterDAO.merge(cluster);
     }
   }
 

+ 3 - 3
ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java

@@ -515,7 +515,7 @@ public class UpgradeCatalog170Test {
     expect(amc.getClusters()).andReturn(clusters).anyTimes();
     expect(clusters.getClusters()).andReturn(clustersMap).anyTimes();
     expect(clusters.getClusterById(1L)).andReturn(clustersMap.values().iterator().next()).anyTimes();
-    expect(clusters.getClusters()).andReturn(clustersMap).times(2);
+    expect(clusters.getClusters()).andReturn(clustersMap).times(1);
     expect(cluster.getDesiredConfigByType("global")).andReturn(config).anyTimes();
     expect(cluster.getDesiredConfigByType("oozie-log4j")).andReturn(config).anyTimes();
     expect(cluster.getClusterId()).andReturn(1L);
@@ -568,7 +568,7 @@ public class UpgradeCatalog170Test {
     expect(configGroupConfigMappingDAO.findAll()).andReturn(configGroupConfigMappingEntities).once();
     expect(userDAO.findAll()).andReturn(Collections.<UserEntity> emptyList()).times(1);
     expect(userDAO.findAll()).andReturn(Arrays.asList(userEntity1, userEntity2)).times(1);
-    expect(clusterDAO.findAll()).andReturn(Collections.<ClusterEntity> emptyList()).times(1);
+    expect(clusterDAO.findAll()).andReturn(Collections.<ClusterEntity> emptyList()).times(2);
 
     String yarnConfig = String.format("{'%s':'%s', '%s':'%s'}",
         YARN_TIMELINE_SERVICE_WEBAPP_ADDRESS_PROPERTY, "timeline:8081",
@@ -594,7 +594,7 @@ public class UpgradeCatalog170Test {
     ClusterStateEntity clusterStateEntity = createNiceMock(ClusterStateEntity.class);
 
     expect(clusterEntity.getClusterId()).andReturn(1L).anyTimes();
-    expect(clusterEntity.getConfigMappingEntities()).andReturn(Collections.singleton(configMappingEntity));
+    expect(clusterEntity.getConfigMappingEntities()).andReturn(Collections.singleton(configMappingEntity)).times(2);
     expect(clusterEntity.getClusterStateEntity()).andReturn(clusterStateEntity).anyTimes();
     expect(clusterStateEntity.getCurrentStackVersion()).andReturn(CLUSTER_STATE_STACK_HDP_2_1);
     expect(configMappingEntity.getType()).andReturn(YARN_SITE).anyTimes();