Ver código fonte

YARN-6367. YARN logs CLI needs alway check containerLogsInfo/containerLogInfo before parse the JSON object from NMWebService. Contributed by Xuan Gong.

Junping Du 8 anos atrás
pai
commit
c01d15ab27

+ 6 - 0
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java

@@ -430,6 +430,9 @@ public class LogsCLI extends Configured implements Tool {
         try {
           JSONArray array = new JSONArray();
           JSONObject json = response.getEntity(JSONObject.class);
+          if (!json.has("containerLogsInfo")) {
+            return logFileInfos;
+          }
           Object logsInfoObj = json.get("containerLogsInfo");
           if (logsInfoObj instanceof JSONObject) {
             array.put((JSONObject)logsInfoObj);
@@ -443,6 +446,9 @@ public class LogsCLI extends Configured implements Tool {
             JSONObject log = array.getJSONObject(i);
             String aggregateType = log.has("logAggregationType") ?
                 log.getString("logAggregationType") : "N/A";
+            if (!log.has("containerLogInfo")) {
+              continue;
+            }
             Object ob = log.get("containerLogInfo");
             if (ob instanceof JSONArray) {
               JSONArray obArray = (JSONArray)ob;