You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ey...@apache.org on 2018/05/16 16:41:42 UTC

hadoop git commit: YARN-8300. Fixed NPE in DefaultUpgradeComponentsFinder. Contributed by Suma Shivaprasad

Repository: hadoop
Updated Branches:
  refs/heads/trunk 6b67161ca -> 91357c22e


YARN-8300.  Fixed NPE in DefaultUpgradeComponentsFinder.
            Contributed by Suma Shivaprasad


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/91357c22
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/91357c22
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/91357c22

Branch: refs/heads/trunk
Commit: 91357c22ef0fb89652dd2898cf488b47234452ce
Parents: 6b67161
Author: Eric Yang <ey...@apache.org>
Authored: Wed May 16 12:38:26 2018 -0400
Committer: Eric Yang <ey...@apache.org>
Committed: Wed May 16 12:38:26 2018 -0400

----------------------------------------------------------------------
 .../yarn/service/UpgradeComponentsFinder.java   | 104 ++++++++++---------
 .../TestDefaultUpgradeComponentsFinder.java     |  30 +++++-
 2 files changed, 84 insertions(+), 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/91357c22/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/UpgradeComponentsFinder.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/UpgradeComponentsFinder.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/UpgradeComponentsFinder.java
index d6663ec..19ff6db 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/UpgradeComponentsFinder.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/UpgradeComponentsFinder.java
@@ -100,55 +100,63 @@ public interface UpgradeComponentsFinder {
       targetDef.getComponents().forEach(component -> {
         Component currentComp = currentDef.getComponent(component.getName());
 
-        if (!Objects.equals(currentComp.getName(), component.getName())) {
+        if (currentComp != null) {
+          if (!Objects.equals(currentComp.getName(), component.getName())) {
+            throw new UnsupportedOperationException(
+                "changes to component name not supported by upgrade");
+          }
+
+          if (!Objects.equals(currentComp.getDependencies(),
+              component.getDependencies())) {
+            throw new UnsupportedOperationException(
+                "changes to component dependencies not supported by upgrade");
+          }
+
+          if (!Objects.equals(currentComp.getReadinessCheck(),
+              component.getReadinessCheck())) {
+            throw new UnsupportedOperationException(
+                "changes to component readiness check not supported by "
+                    + "upgrade");
+          }
+
+          if (!Objects.equals(currentComp.getResource(),
+              component.getResource())) {
+
+            throw new UnsupportedOperationException(
+                "changes to component resource not supported by upgrade");
+          }
+
+          if (!Objects.equals(currentComp.getRunPrivilegedContainer(),
+              component.getRunPrivilegedContainer())) {
+            throw new UnsupportedOperationException(
+                "changes to run privileged container not supported by upgrade");
+          }
+
+          if (!Objects.equals(currentComp.getPlacementPolicy(),
+              component.getPlacementPolicy())) {
+            throw new UnsupportedOperationException(
+                "changes to component placement policy not supported by "
+                    + "upgrade");
+          }
+
+          if (!Objects.equals(currentComp.getQuicklinks(),
+              component.getQuicklinks())) {
+            throw new UnsupportedOperationException(
+                "changes to component quick links not supported by upgrade");
+          }
+
+          if (!Objects.equals(currentComp.getArtifact(),
+              component.getArtifact()) || !Objects.equals(
+              currentComp.getLaunchCommand(), component.getLaunchCommand())
+              || !Objects.equals(currentComp.getConfiguration(),
+              component.getConfiguration())) {
+            targetComps.add(component);
+          }
+        } else{
           throw new UnsupportedOperationException(
-              "changes to component name not supported by upgrade");
-        }
-
-        if (!Objects.equals(currentComp.getDependencies(),
-            component.getDependencies())) {
-          throw new UnsupportedOperationException(
-              "changes to component dependencies not supported by upgrade");
-        }
-
-        if (!Objects.equals(currentComp.getReadinessCheck(),
-            component.getReadinessCheck())) {
-          throw new UnsupportedOperationException(
-              "changes to component readiness check not supported by upgrade");
-        }
-
-        if (!Objects.equals(currentComp.getResource(),
-            component.getResource())) {
-          throw new UnsupportedOperationException(
-              "changes to component resource not supported by upgrade");
-        }
-
-
-        if (!Objects.equals(currentComp.getRunPrivilegedContainer(),
-            component.getRunPrivilegedContainer())) {
-          throw new UnsupportedOperationException(
-              "changes to run privileged container not supported by upgrade");
-        }
-
-        if (!Objects.equals(currentComp.getPlacementPolicy(),
-            component.getPlacementPolicy())) {
-          throw new UnsupportedOperationException(
-              "changes to component placement policy not supported by upgrade");
-        }
-
-        if (!Objects.equals(currentComp.getQuicklinks(),
-            component.getQuicklinks())) {
-          throw new UnsupportedOperationException(
-              "changes to component quick links not supported by upgrade");
-        }
-
-        if (!Objects.equals(currentComp.getArtifact(),
-            component.getArtifact()) ||
-            !Objects.equals(currentComp.getLaunchCommand(),
-                component.getLaunchCommand()) ||
-            !Objects.equals(currentComp.getConfiguration(),
-                component.getConfiguration())) {
-          targetComps.add(component);
+              "addition/deletion of components not supported by upgrade. "
+                  + "Could not find component " + component.getName() + " in "
+                  + "current service definition.");
         }
       });
       return targetComps;

http://git-wip-us.apache.org/repos/asf/hadoop/blob/91357c22/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/test/java/org/apache/hadoop/yarn/service/TestDefaultUpgradeComponentsFinder.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/test/java/org/apache/hadoop/yarn/service/TestDefaultUpgradeComponentsFinder.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/test/java/org/apache/hadoop/yarn/service/TestDefaultUpgradeComponentsFinder.java
index 086fdbe..b0a01b3 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/test/java/org/apache/hadoop/yarn/service/TestDefaultUpgradeComponentsFinder.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/test/java/org/apache/hadoop/yarn/service/TestDefaultUpgradeComponentsFinder.java
@@ -23,8 +23,11 @@ import org.junit.Assert;
 import org.junit.Test;
 
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 
+import static org.junit.Assert.assertEquals;
+
 /**
  * Tests for {@link UpgradeComponentsFinder.DefaultUpgradeComponentsFinder}.
  */
@@ -40,12 +43,35 @@ public class TestDefaultUpgradeComponentsFinder {
     targetDef.getComponents().forEach(x -> x.setArtifact(
         TestServiceManager.createTestArtifact("v1")));
 
-    Assert.assertEquals("all components need upgrade",
+    assertEquals("all components need upgrade",
         targetDef.getComponents(), finder.findTargetComponentSpecs(currentDef,
             targetDef));
   }
 
   @Test
+  public void testServiceUpgradeWithNewComponentAddition() {
+    Service currentDef = ServiceTestUtils.createExampleApplication();
+    Service targetDef = ServiceTestUtils.createExampleApplication();
+    Iterator<Component> targetComponentsIter =
+        targetDef.getComponents().iterator();
+    Component firstComponent = targetComponentsIter.next();
+    firstComponent.setName("newComponentA");
+
+    try {
+      finder.findTargetComponentSpecs(currentDef, targetDef);
+      Assert.fail("Expected error since component does not exist in service "
+          + "definition");
+    } catch (UnsupportedOperationException usoe) {
+      assertEquals(
+          "addition/deletion of components not supported by upgrade. Could "
+              + "not find component newComponentA in current service "
+              + "definition.",
+          usoe.getMessage());
+      //Expected
+    }
+  }
+
+  @Test
   public void testComponentArtifactChange() {
     Service currentDef = TestServiceManager.createBaseDef("test");
     Service targetDef =  TestServiceManager.createBaseDef("test");
@@ -56,7 +82,7 @@ public class TestDefaultUpgradeComponentsFinder {
     List<Component> expected = new ArrayList<>();
     expected.add(targetDef.getComponents().get(0));
 
-    Assert.assertEquals("single components needs upgrade",
+    assertEquals("single components needs upgrade",
         expected, finder.findTargetComponentSpecs(currentDef,
             targetDef));
   }


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org