Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-17940

HMaster can not start due to Jasper related classes conflict

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Blocker
    • Resolution: Fixed
    • Affects Version/s: 2.0.0
    • Fix Version/s: 2.0.0
    • Component/s: dependencies, pom
    • Labels:
      None
    • Hadoop Flags:
      Reviewed

      Description

      I got this

      java.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster.
              at org.apache.hadoop.hbase.master.HMaster.constructMaster(HMaster.java:2692)
              at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:235)
              at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:139)
              at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
              at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:127)
              at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:2703)
      Caused by: java.lang.NoSuchFieldError: IS_SECURITY_ENABLED
              at org.apache.jasper.compiler.JspRuntimeContext.<init>(JspRuntimeContext.java:194)
              at org.apache.jasper.servlet.JspServlet.init(JspServlet.java:159)
              at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:640)
              at org.eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:419)
              at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:875)
              at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:348)
              at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1379)
              at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1341)
              at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:772)
              at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:261)
              at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:517)
              at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
              at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
              at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
              at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
              at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
              at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
              at org.eclipse.jetty.server.Server.start(Server.java:405)
              at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:106)
              at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
              at org.eclipse.jetty.server.Server.doStart(Server.java:372)
              at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
              at org.apache.hadoop.hbase.http.HttpServer.start(HttpServer.java:969)
              at org.apache.hadoop.hbase.http.InfoServer.start(InfoServer.java:100)
              at org.apache.hadoop.hbase.regionserver.HRegionServer.putUpWebUI(HRegionServer.java:1887)
              at org.apache.hadoop.hbase.regionserver.HRegionServer.<init>(HRegionServer.java:620)
              at org.apache.hadoop.hbase.master.HMaster.<init>(HMaster.java:461)
              at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
              at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
              at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
              at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
              at org.apache.hadoop.hbase.master.HMaster.constructMaster(HMaster.java:2685)
              ... 5 more
      

      The problem is that, we have same classes in two jars, javax.servlet.jsp-2.3.2.jar and jasper-compiler-5.5.23.jar, such as org.apache.jasper.Constants and org.apache.jasper.compiler.JspRuntimeContext. Here seems for JspRuntimeContext we use the version from javax.servlet.jsp, but for Constants we use the version from jasper-compiler.

      javax.servlet.jsp is a transitive dependency from jetty jsp, and jasper-compiler is a dependency directly in our pom for hbase-server.

      We need to find a way to deal with it.

        Attachments

        1. HBASE-17940.patch
          3 kB
          Duo Zhang

          Issue Links

            Activity

              People

              • Assignee:
                zhangduo Duo Zhang
                Reporter:
                zhangduo Duo Zhang
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: