in tez-api/src/main/java/org/apache/tez/dag/api/client/rpc/DAGClientRPCImpl.java [187:251]
DAGStatus getDAGStatusViaRM() throws TezException, IOException {
if(LOG.isDebugEnabled()) {
LOG.debug("GetDAGStatus via AM for app: " + appId + " dag:" + dagId);
}
ApplicationReport appReport;
try {
appReport = yarnClient.getApplicationReport(appId);
} catch (YarnException e) {
throw new TezException(e);
}
if(appReport == null) {
throw new TezException("Unknown/Invalid appId: " + appId);
}
DAGStatusProto.Builder builder = DAGStatusProto.newBuilder();
DAGStatus dagStatus = new DAGStatus(builder);
DAGStatusStateProto dagState;
switch (appReport.getYarnApplicationState()) {
case NEW:
case NEW_SAVING:
case SUBMITTED:
case ACCEPTED:
dagState = DAGStatusStateProto.DAG_SUBMITTED;
break;
case RUNNING:
dagState = DAGStatusStateProto.DAG_RUNNING;
break;
case FAILED:
dagState = DAGStatusStateProto.DAG_FAILED;
break;
case KILLED:
dagState = DAGStatusStateProto.DAG_KILLED;
break;
case FINISHED:
switch(appReport.getFinalApplicationStatus()) {
case UNDEFINED:
case FAILED:
dagState = DAGStatusStateProto.DAG_FAILED;
break;
case KILLED:
dagState = DAGStatusStateProto.DAG_KILLED;
break;
case SUCCEEDED:
dagState = DAGStatusStateProto.DAG_SUCCEEDED;
break;
default:
throw new TezUncheckedException("Encountered unknown final application"
+ " status from YARN"
+ ", appState=" + appReport.getYarnApplicationState()
+ ", finalStatus=" + appReport.getFinalApplicationStatus());
}
break;
default:
throw new TezUncheckedException("Encountered unknown application state"
+ " from YARN, appState=" + appReport.getYarnApplicationState());
}
builder.setState(dagState);
if(appReport.getDiagnostics() != null) {
builder.addAllDiagnostics(Collections.singleton(appReport.getDiagnostics()));
}
return dagStatus;
}