Skip to content

Commit ffa3d63

Browse files
committed
TEZ-4475: VertexStatus is missing in TestLocalMode if DAG finishes too quickly - causing NPE in unit test
1 parent e3e91a1 commit ffa3d63

2 files changed

Lines changed: 10 additions & 7 deletions

File tree

tez-api/src/main/java/org/apache/tez/dag/api/client/DAGClientImpl.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,9 @@ public VertexStatus getVertexStatus(String vertexName, Set<StatusGetOpts> status
303303

304304
protected VertexStatus getVertexStatusInternal(Set<StatusGetOpts> statusOptions, String vertexName)
305305
throws IOException, TezException {
306+
LOG.debug("Called getVertexStatusInternal for {}, dagCompleted: {}, vertex status in cache: {}", vertexName,
307+
dagCompleted, cachedVertexStatus.containsKey(vertexName));
308+
306309
if (!dagCompleted) {
307310
VertexStatus vertexStatus = getVertexStatusViaAM(vertexName, statusOptions);
308311

tez-tests/src/test/java/org/apache/tez/test/TestLocalMode.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ public void testMultipleClientsWithSession() throws TezException, InterruptedExc
130130
DAG dag1 = createSimpleDAG("dag1", SleepProcessor.class.getName());
131131

132132
DAGClient dagClient1 = tezClient1.submitDAG(dag1);
133-
dagClient1.waitForCompletion();
133+
dagClient1.waitForCompletionWithStatusUpdates(null);
134134
assertEquals(DAGStatus.State.SUCCEEDED, dagClient1.getDAGStatus(null).getState());
135135
assertEquals(VertexStatus.State.SUCCEEDED,
136136
dagClient1.getVertexStatus(SleepProcessor.SLEEP_VERTEX_NAME, null).getState());
@@ -143,7 +143,7 @@ public void testMultipleClientsWithSession() throws TezException, InterruptedExc
143143
TezClient tezClient2 = TezClient.create("commonName", tezConf2, true);
144144
tezClient2.start();
145145
DAGClient dagClient2 = tezClient2.submitDAG(dag2);
146-
dagClient2.waitForCompletion();
146+
dagClient2.waitForCompletionWithStatusUpdates(null);
147147
assertEquals(DAGStatus.State.SUCCEEDED, dagClient2.getDAGStatus(null).getState());
148148
assertEquals(VertexStatus.State.SUCCEEDED,
149149
dagClient2.getVertexStatus(SleepProcessor.SLEEP_VERTEX_NAME, null).getState());
@@ -162,7 +162,7 @@ public void testMultipleClientsWithoutSession() throws TezException, Interrupted
162162
DAG dag1 = createSimpleDAG("dag1", SleepProcessor.class.getName());
163163

164164
DAGClient dagClient1 = tezClient1.submitDAG(dag1);
165-
dagClient1.waitForCompletion();
165+
dagClient1.waitForCompletionWithStatusUpdates(null);
166166
assertEquals(DAGStatus.State.SUCCEEDED, dagClient1.getDAGStatus(null).getState());
167167
assertEquals(VertexStatus.State.SUCCEEDED,
168168
dagClient1.getVertexStatus(SleepProcessor.SLEEP_VERTEX_NAME, null).getState());
@@ -175,7 +175,7 @@ public void testMultipleClientsWithoutSession() throws TezException, Interrupted
175175
TezClient tezClient2 = TezClient.create("commonName", tezConf2, false);
176176
tezClient2.start();
177177
DAGClient dagClient2 = tezClient2.submitDAG(dag2);
178-
dagClient2.waitForCompletion();
178+
dagClient2.waitForCompletionWithStatusUpdates(null);
179179
assertEquals(DAGStatus.State.SUCCEEDED, dagClient2.getDAGStatus(null).getState());
180180
assertEquals(VertexStatus.State.SUCCEEDED,
181181
dagClient2.getVertexStatus(SleepProcessor.SLEEP_VERTEX_NAME, null).getState());
@@ -195,7 +195,7 @@ public void testNoSysExitOnSuccessfulDAG() throws TezException, InterruptedExcep
195195
DAG dag1 = createSimpleDAG("dag1", SleepProcessor.class.getName());
196196

197197
DAGClient dagClient1 = tezClient1.submitDAG(dag1);
198-
dagClient1.waitForCompletion();
198+
dagClient1.waitForCompletionWithStatusUpdates(null);
199199
assertEquals(DAGStatus.State.SUCCEEDED, dagClient1.getDAGStatus(null).getState());
200200
assertEquals(VertexStatus.State.SUCCEEDED,
201201
dagClient1.getVertexStatus(SleepProcessor.SLEEP_VERTEX_NAME, null).getState());
@@ -217,7 +217,7 @@ public void testNoSysExitOnFailinglDAG() throws TezException, InterruptedExcepti
217217
DAG dag1 = createSimpleDAG("dag1", FailingProcessor.class.getName());
218218

219219
DAGClient dagClient1 = tezClient1.submitDAG(dag1);
220-
dagClient1.waitForCompletion();
220+
dagClient1.waitForCompletionWithStatusUpdates(null);
221221
assertEquals(DAGStatus.State.FAILED, dagClient1.getDAGStatus(null).getState());
222222
assertEquals(VertexStatus.State.FAILED,
223223
dagClient1.getVertexStatus(SleepProcessor.SLEEP_VERTEX_NAME, null).getState());
@@ -290,7 +290,7 @@ public void testMultiDAGsOnSession() throws IOException, TezException, Interrupt
290290
dagClients[i] = tezClient.submitDAG(dag);
291291

292292
// wait to finish
293-
DAGStatus dagStatus = dagClients[i].waitForCompletion();
293+
DAGStatus dagStatus = dagClients[i].waitForCompletionWithStatusUpdates(null);
294294
if (dagStatus.getState() != DAGStatus.State.SUCCEEDED) {
295295
fail("Iteration " + i + " failed with diagnostics: "
296296
+ dagStatus.getDiagnostics());

0 commit comments

Comments
 (0)