[ https://issues.apache.org/jira/browse/YARN-4709?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15155997#comment-15155997 ]
Varun Saxena commented on YARN-4709: ------------------------------------ cc [~vvasudev]. Tagging [~leftnoteasy] too as this JIRA has implications on YARN-4517(which is related to new Web UI implementation). > Exception when option to fetch all log files is specified while using yarn > logs -am command and incorrect JSON produced for containerLogFiles > --------------------------------------------------------------------------------------------------------------------------------------------- > > Key: YARN-4709 > URL: https://issues.apache.org/jira/browse/YARN-4709 > Project: Hadoop YARN > Issue Type: Bug > Reporter: Varun Saxena > Assignee: Varun Saxena > Attachments: YARN-4709.01.patch > > > Following exception is thrown when we run below command. > {panel} > root@varun-Inspiron-5558:/opt1/hadoop3/bin# ./yarn logs -applicationId > application_1455999168135_0002 -am ALL -logFiles ALL > Container: container_e31_1455999168135_0002_01_000001 > ======================================================= > {color:red}LogType:syslogstderrstdout > Log Upload Time:Sun Feb 21 01:44:55 +0530 2016 > Log Contents: > java.lang.Exception: Cannot find this log on the local disk. > End of LogType:syslogstderrstdout{color} > LogType:syslog > Log Upload Time:Sun Feb 21 01:44:55 +0530 2016 > Log Contents: > 2016-02-21 01:44:49,565 INFO \[main\] > org.apache.hadoop.mapreduce.v2.app.MRAppMaster: Created MRAppMaster for > application appattempt_1455999168135_0002_000001 > 2016-02-21 01:44:49,914 INFO \[main\] > org.apache.hadoop.mapreduce.v2.app.MRAppMaster: > /************************************************************ > {panel} > This is because we annotate containerLogFiles list with XmlElementWrapper > which generates XML output as under. And when we read this XML at client > side, reading the value associated with containerLogFiles also leads to one > value being syslogstderrstdout because both parent and child tags are same. > This leads to the exception. > {noformat} > <containerLogFiles> > <containerLogFiles>syslog</containerLogFiles> > <containerLogFiles>stderr</containerLogFiles> > <containerLogFiles>stdout</containerLogFiles> > </containerLogFiles> > {noformat} > Moreover, as we use XMLElementWrapper, the JSON generated is as under. This > JSON cannot be properly parsed by JSON parser(as a list). This is because > child containerLogsFiles entries are treated as a key-value pair(map) and > hence only last entry i.e. stdout is picked up. This was found while working > on YARN-4517. This makes output unusable. > This will be an issue for 2 REST endpoints i.e. {{/ws/v1/node/containers}} > and {{/ws/v1/node/containers/\{\{containerId\}\}}} > {noformat} > "containerLogFiles":[ > { > "containerLogFiles":"syslog", > "containerLogFiles":"stderr", > "containerLogFiles":"stdout" > } > ] > {noformat} > Ideally the JSON output should be as under. > {noformat} > "containerLogFiles":["syslog","stderr","stdout"] > {noformat} > We can indicate in the JAXB context to ignore the outer wrapper while > marshalling to JSON. But this can only be done at class level. If we do so > for ContainerInfo, it would break backward compatibility. > Hence, to fix it we can remove XmlElementWrapper annotation for > containerLogFiles list. > Another solution would be to wrap the list inside another class. > But going with former as of now as we do not specify XmlElementWrapper for > lists at most of the places in our code. -- This message was sent by Atlassian JIRA (v6.3.4#6332)