azkaban-aplcache

Remove the find node by name method (#1761) Changed the test

5/17/2018 5:07:37 PM
3.47.0

Details

diff --git a/azkaban-exec-server/src/main/java/azkaban/dag/Dag.java b/azkaban-exec-server/src/main/java/azkaban/dag/Dag.java
index 2ce6979..de4d7aa 100644
--- a/azkaban-exec-server/src/main/java/azkaban/dag/Dag.java
+++ b/azkaban-exec-server/src/main/java/azkaban/dag/Dag.java
@@ -20,9 +20,7 @@ import static java.util.Objects.requireNonNull;
 
 import com.google.common.annotations.VisibleForTesting;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 /**
  * A DAG (Directed acyclic graph) consists of {@link Node}s.
@@ -35,7 +33,6 @@ class Dag {
   private final String name;
   private final DagProcessor dagProcessor;
   private final List<Node> nodes = new ArrayList<>();
-  private final Map<String, Node> nameToNodeMap = new HashMap<>();
   private Status status = Status.READY;
 
   Dag(final String name, final DagProcessor dagProcessor) {
@@ -51,23 +48,16 @@ class Dag {
    * <p>It's important NOT to expose this method as public. The design relies on this to ensure
    * correctness. The DAG's structure shouldn't change after it is created.
    *
+   * <p>The DagBuilder will check that node names are unique within a dag. No check is necessary
+   * here since the method package private and where it is called is carefully controlled within
+   * a relatively small package.
+   * </p>
+   *
    * @param node a node to add
    */
   void addNode(final Node node) {
     assert (node.getDag() == this);
     this.nodes.add(node);
-    assert (!this.nameToNodeMap.containsKey(node.getName()));
-    this.nameToNodeMap.put(node.getName(), node);
-  }
-
-  /**
-   * Gets the node associated with the name.
-   *
-   * @param name node name
-   * @return node. null if the node with this name doesn't exist
-   */
-  Node getNodeByName(final String name) {
-    return this.nameToNodeMap.get(name);
   }
 
   void start() {
diff --git a/azkaban-exec-server/src/test/java/azkaban/dag/DagServiceTest.java b/azkaban-exec-server/src/test/java/azkaban/dag/DagServiceTest.java
index c757d31..474e4c7 100644
--- a/azkaban-exec-server/src/test/java/azkaban/dag/DagServiceTest.java
+++ b/azkaban-exec-server/src/test/java/azkaban/dag/DagServiceTest.java
@@ -214,7 +214,7 @@ public class DagServiceTest {
     final Dag bDag = subDagBuilder.build();
 
     final TestSubDagNodeProcessor testSubDagNodeProcessor = new TestSubDagNodeProcessor
-        (this.dagService, this.statusChangeRecorder, bDag);
+        (this.dagService, this.statusChangeRecorder, bDag, testSubDagProcessor);
     final NodeBuilder subDagNodeBuilder = this.dagBuilder
         .createNode("sfb", testSubDagNodeProcessor);
 
@@ -222,8 +222,6 @@ public class DagServiceTest {
     cBuilder.addParents(subDagNodeBuilder);
     final Dag dag = this.dagBuilder.build();
 
-    testSubDagProcessor.setNode(dag.getNodeByName(subDagNodeBuilder.getName()));
-
     addToExpectedSequence("fa", Status.RUNNING);
     addToExpectedSequence("sfb", Status.RUNNING);
     addToExpectedSequence("fb", Status.RUNNING);
diff --git a/azkaban-exec-server/src/test/java/azkaban/dag/TestSubDagNodeProcessor.java b/azkaban-exec-server/src/test/java/azkaban/dag/TestSubDagNodeProcessor.java
index 288cec0..4bc31eb 100644
--- a/azkaban-exec-server/src/test/java/azkaban/dag/TestSubDagNodeProcessor.java
+++ b/azkaban-exec-server/src/test/java/azkaban/dag/TestSubDagNodeProcessor.java
@@ -24,15 +24,17 @@ public class TestSubDagNodeProcessor implements NodeProcessor {
   private final DagService dagService;
   private final StatusChangeRecorder statusChangeRecorder;
   private final Dag dag;
+  private final TestSubDagProcessor testSubDagProcessor;
 
 
   TestSubDagNodeProcessor(final DagService dagService,
       final StatusChangeRecorder statusChangeRecorder,
-      final Dag dag
-  ) {
+      final Dag dag,
+      final TestSubDagProcessor testSubDagProcessor) {
     this.dagService = dagService;
     this.statusChangeRecorder = statusChangeRecorder;
     this.dag = dag;
+    this.testSubDagProcessor = testSubDagProcessor;
   }
 
 
@@ -49,6 +51,9 @@ public class TestSubDagNodeProcessor implements NodeProcessor {
 
     switch (status) {
       case RUNNING:
+        //Discover the node in the parent Dag this subDag is associated with.
+        //This allows the subtag processor to inform the parent dag the status change.
+        this.testSubDagProcessor.setNode(node);
         this.dagService.startDag(this.dag);
         break;
       case KILLING: