Skip to content

Commit 30e9cdb

Browse files
authored
TEZ-4566: NPE in TezChild while fetching attemptId when container is asked to shut down. (#358). (Ayush Saxena, reviewed by Laszlo Bodor)
1 parent a1fcddb commit 30e9cdb

File tree

2 files changed

+17
-17
lines changed

2 files changed

+17
-17
lines changed

tez-runtime-internals/src/main/java/org/apache/tez/runtime/task/ContainerReporter.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,9 @@ protected ContainerTask callInternal() throws Exception {
6969
+ " ms after starting to poll."
7070
+ " TaskInfo: shouldDie: "
7171
+ containerTask.shouldDie()
72-
+ (containerTask.shouldDie() == true ? "" : ", currentTaskAttemptId: "
73-
+ containerTask.getTaskSpec().getTaskAttemptID()));
72+
+ (containerTask.shouldDie() ? "" : ", currentTaskAttemptId: "
73+
+ (containerTask.getTaskSpec() == null ? "none"
74+
: containerTask.getTaskSpec().getTaskAttemptID())));
7475
return containerTask;
7576
}
7677

tez-runtime-internals/src/main/java/org/apache/tez/runtime/task/TezChild.java

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -249,28 +249,27 @@ public ContainerExecutionResult run() throws IOException, InterruptedException,
249249
}
250250
}
251251

252-
TezTaskAttemptID attemptId = containerTask.getTaskSpec().getTaskAttemptID();
253-
Configuration taskConf;
254-
if (containerTask.getTaskSpec().getTaskConf() != null) {
255-
Configuration copy = new Configuration(defaultConf);
256-
TezTaskRunner2.mergeTaskSpecConfToConf(containerTask.getTaskSpec(), copy);
257-
taskConf = copy;
258-
LoggingUtils.initLoggingContext(mdcContext, copy,
259-
attemptId.getTaskID().getVertexID().getDAGID().toString(), attemptId.toString());
260-
} else {
261-
taskConf = defaultConf;
262-
LoggingUtils.initLoggingContext(mdcContext, defaultConf,
263-
attemptId.getTaskID().getVertexID().getDAGID().toString(), attemptId.toString());
264-
}
265-
266252
TezCommonUtils.logCredentials(LOG, containerTask.getCredentials(), "containerTask");
267253
if (containerTask.shouldDie()) {
268254
LOG.info("ContainerTask returned shouldDie=true for container {}, Exiting", containerIdString);
269255
shutdown();
270256
return new ContainerExecutionResult(ContainerExecutionResult.ExitStatus.SUCCESS, null,
271257
"Asked to die by the AM");
272258
} else {
273-
String loggerAddend = containerTask.getTaskSpec().getTaskAttemptID().toString();
259+
TezTaskAttemptID attemptId = containerTask.getTaskSpec().getTaskAttemptID();
260+
Configuration taskConf;
261+
if (containerTask.getTaskSpec().getTaskConf() != null) {
262+
Configuration copy = new Configuration(defaultConf);
263+
TezTaskRunner2.mergeTaskSpecConfToConf(containerTask.getTaskSpec(), copy);
264+
taskConf = copy;
265+
LoggingUtils.initLoggingContext(mdcContext, copy, attemptId.getTaskID().getVertexID().getDAGID().toString(),
266+
attemptId.toString());
267+
} else {
268+
taskConf = defaultConf;
269+
LoggingUtils.initLoggingContext(mdcContext, defaultConf,
270+
attemptId.getTaskID().getVertexID().getDAGID().toString(), attemptId.toString());
271+
}
272+
String loggerAddend = attemptId.toString();
274273
taskCount++;
275274
String timeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());
276275
System.err.println(timeStamp + " Starting to run new task attempt: " +

0 commit comments

Comments
 (0)