Browse Source

YARN-6126. Obtaining app logs for Running application fails with json parse error. Contributed by Xuan Gong.

Junping Du 8 years ago
parent
commit
1a16431bd0

+ 10 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java

@@ -426,8 +426,17 @@ public class LogsCLI extends Configured implements Tool {
       if (response.getStatusInfo().getStatusCode() ==
           ClientResponse.Status.OK.getStatusCode()) {
         try {
+          JSONArray array = new JSONArray();
           JSONObject json = response.getEntity(JSONObject.class);
-          JSONArray array = json.getJSONArray("containerLogsInfo");
+          Object logsInfoObj = json.get("containerLogsInfo");
+          if (logsInfoObj instanceof JSONObject) {
+            array.put((JSONObject)logsInfoObj);
+          } else if (logsInfoObj instanceof JSONArray) {
+            JSONArray logsArray = (JSONArray)logsInfoObj;
+            for (int i=0; i < logsArray.length(); i++) {
+              array.put(logsArray.getJSONObject(i));
+            }
+          }
           for (int i = 0; i < array.length(); i++) {
             JSONObject log = array.getJSONObject(i);
             Object ob = log.get("containerLogInfo");