浏览代码

AMBARI-17026 NPE during EU at Update Target Stack step (dlysnichenko)

Lisnichenko Dmitro 9 年之前
父节点
当前提交
a1f455cb39

+ 9 - 1
ambari-server/src/main/java/org/apache/ambari/server/state/PropertyInfo.java

@@ -89,7 +89,15 @@ public class PropertyInfo {
   }
 
   public PropertyInfo() {
-
+    propertyStackUpgradeBehavior = new PropertyUpgradeBehavior();
+    propertyStackUpgradeBehavior.setAdd(true);
+    propertyStackUpgradeBehavior.setChange(true);
+    propertyStackUpgradeBehavior.setDelete(false);
+
+    propertyAmbariUpgradeBehavior = new PropertyUpgradeBehavior();
+    propertyAmbariUpgradeBehavior.setAdd(false);
+    propertyAmbariUpgradeBehavior.setChange(true);
+    propertyAmbariUpgradeBehavior.setDelete(true);
   }
 
   public String getName() {

+ 25 - 2
ambari-server/src/test/java/org/apache/ambari/server/state/PropertyInfoTest.java

@@ -103,14 +103,37 @@ public class PropertyInfoTest {
       "<property>\n" +
       "  <name>prop_name</name>\n" +
       "  <value>prop_val</value>\n" +
-      "  <on-ambari-upgrade add=\"false\" change=\"true\" delete=\"true\"/>\n" +
-      "  <on-stack-upgrade add=\"true\" change=\"true\" delete=\"false\"/>\n" +
+      "  <on-ambari-upgrade add=\"true\" change=\"true\" delete=\"true\"/>\n" +
+      "  <on-stack-upgrade add=\"false\" change=\"false\" delete=\"false\"/>\n" +
       "</property>";
 
     // when
     PropertyInfo propertyInfo = propertyInfoFrom(xml);
 
     // then
+    assertTrue(propertyInfo.getPropertyAmbariUpgradeBehavior().isAdd());
+    assertTrue(propertyInfo.getPropertyAmbariUpgradeBehavior().isChange());
+    assertTrue(propertyInfo.getPropertyAmbariUpgradeBehavior().isDelete());
+
+    assertFalse(propertyInfo.getPropertyStackUpgradeBehavior().isAdd());
+    assertFalse(propertyInfo.getPropertyStackUpgradeBehavior().isChange());
+    assertFalse(propertyInfo.getPropertyStackUpgradeBehavior().isDelete());
+  }
+
+  @Test
+  public void testBehaviorWithoutUpgradeTags() throws JAXBException {
+    // given
+    String xml =
+        "<property>\n" +
+            "  <name>prop_name</name>\n" +
+            "  <value>prop_val</value>\n" +
+            "</property>";
+
+    // when
+    PropertyInfo propertyInfo = propertyInfoFrom(xml);
+
+    // then
+
     assertFalse(propertyInfo.getPropertyAmbariUpgradeBehavior().isAdd());
     assertTrue(propertyInfo.getPropertyAmbariUpgradeBehavior().isChange());
     assertTrue(propertyInfo.getPropertyAmbariUpgradeBehavior().isDelete());