[ https://issues.apache.org/jira/browse/MAPREDUCE-5751?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jason Lowe updated MAPREDUCE-5751: ---------------------------------- Resolution: Fixed Fix Version/s: 2.4.0 Hadoop Flags: Reviewed Status: Resolved (was: Patch Available) Thanks, Sangjin! I committed this to trunk, branch-2, and branch-2.4. > MR app master fails to start in some cases if mapreduce.job.classloader is > true > ------------------------------------------------------------------------------- > > Key: MAPREDUCE-5751 > URL: https://issues.apache.org/jira/browse/MAPREDUCE-5751 > Project: Hadoop Map/Reduce > Issue Type: Bug > Affects Versions: 2.2.0 > Reporter: Sangjin Lee > Assignee: Sangjin Lee > Fix For: 2.4.0 > > Attachments: mapreduce-5751.patch, mapreduce-5751.patch > > > If mapreduce.job.classloader is set to true, and the MR client includes a > jetty jar in its libjars or job jar, the MR app master fails to start. A > typical stack trace we get is as follows: > {noformat} > java.lang.ClassCastException: org.mortbay.jetty.webapp.WebInfConfiguration > cannot be cast to org.mortbay.jetty.webapp.Configuration > at > org.mortbay.jetty.webapp.WebAppContext.loadConfigurations(WebAppContext.java:890) > at > org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:462) > at > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) > at > org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152) > at > org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156) > at > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) > at > org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) > at org.mortbay.jetty.Server.doStart(Server.java:224) > at > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) > at org.apache.hadoop.http.HttpServer.start(HttpServer.java:676) > at org.apache.hadoop.yarn.webapp.WebApps$Builder.start(WebApps.java:208) > at > org.apache.hadoop.mapreduce.v2.app.client.MRClientService.start(MRClientService.java:151) > at > org.apache.hadoop.yarn.service.CompositeService.start(CompositeService.java:68) > at > org.apache.hadoop.mapreduce.v2.app.MRAppMaster.start(MRAppMaster.java:1040) > at > org.apache.hadoop.mapreduce.v2.app.MRAppMaster$1.run(MRAppMaster.java:1307) > at java.security.AccessController.doPrivileged(Native Method) > at javax.security.auth.Subject.doAs(Subject.java:415) > at > org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1478) > at > org.apache.hadoop.mapreduce.v2.app.MRAppMaster.initAndStartAppMaster(MRAppMaster.java:1303) > at > org.apache.hadoop.mapreduce.v2.app.MRAppMaster.main(MRAppMaster.java:1259) > {noformat} > This happens because as part of the MR app master start the jetty classes are > loaded normally through the app classloader, but WebAppContext tries to load > the specific Configuration class via the thread context classloader (which > had been set to the user job classloader). -- This message was sent by Atlassian JIRA (v6.2#6252)