[ 
https://issues.apache.org/jira/browse/YARN-9813?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16923987#comment-16923987
 ] 

Adam Antal commented on YARN-9813:
----------------------------------

Place of ClassCastException:

{code:java}
    if (getConfig().getBoolean(YarnConfiguration.YARN_WEBAPP_UI2_ENABLE,
        YarnConfiguration.DEFAULT_YARN_WEBAPP_UI2_ENABLE)) {
      String onDiskPath = getConfig()
          .get(YarnConfiguration.YARN_WEBAPP_UI2_WARFILE_PATH);

      uiWebAppContext = new WebAppContext();
      uiWebAppContext.setContextPath(UI2_WEBAPP_NAME);

      if (null == onDiskPath) {
        String war = "hadoop-yarn-ui-" + VersionInfo.getVersion() + ".war";
        URLClassLoader cl = (URLClassLoader) ClassLoader.getSystemClassLoader();
        URL url = cl.findResource(war);

        if (null == url) {
          onDiskPath = getWebAppsPath("ui2");
        } else {
          onDiskPath = url.getFile();
        }
      }
{code}

As for e.g. 
[SO|https://stackoverflow.com/questions/54889465/urlclassloader-difference-between-getresource-and-findresource]
 suggests, we can use the {{ClassLoader}} 's {{getResource()}} method instead 
of casting it to URLClassLoader and calling {{findResource()}} on it. Will 
upload a patch soon.

> RM does not start on JDK11 when UIv2 is enabled
> -----------------------------------------------
>
>                 Key: YARN-9813
>                 URL: https://issues.apache.org/jira/browse/YARN-9813
>             Project: Hadoop YARN
>          Issue Type: Bug
>          Components: resourcemanager, yarn
>    Affects Versions: 3.1.2
>            Reporter: Adam Antal
>            Assignee: Adam Antal
>            Priority: Critical
>
> Starting a ResourceManager on JDK11 with UIv2 is enabled, RM startup fails 
> with the following message:
> {noformat}
> Error starting ResourceManager
> java.lang.ClassCastException: class 
> jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to class 
> java.net.URLClassLoader (jdk.internal.loader.ClassLoaders$AppClassLoader and 
> java.net.URLClassLoader are in module java.base of loader 'bootstrap')
>       at 
> org.apache.hadoop.yarn.server.resourcemanager.ResourceManager.startWepApp(ResourceManager.java:1190)
>       at 
> org.apache.hadoop.yarn.server.resourcemanager.ResourceManager.serviceStart(ResourceManager.java:1333)
>       at 
> org.apache.hadoop.service.AbstractService.start(AbstractService.java:194)
>       at 
> org.apache.hadoop.yarn.server.resourcemanager.ResourceManager.main(ResourceManager.java:1531)
> {noformat}
> It is a known issue that the systemClassLoader is not URLClassLoader anymore 
> from JDK9 (see related UT failure: YARN-9512). 



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to