incubator-uniffle icon indicating copy to clipboard operation
incubator-uniffle copied to clipboard

[Bug] Jetty ServletContainer initialize failed in jdk17

Open xumanbu opened this issue 1 year ago • 1 comments

Code of Conduct

Search before asking

  • [X] I have searched in the issues and found no similar issues.

Describe the bug

When the server starts on jdk17, the call metrics URL encounters the same error.

[WARN] 2023-08-10 17:50:13,116 Jetty-8 ServletHandler doHandle - Error for /metrics/jvm
java.lang.ExceptionInInitializerError
        at com.sun.xml.bind.v2.runtime.reflect.opt.AccessorInjector.prepare(AccessorInjector.java:83)
        at com.sun.xml.bind.v2.runtime.reflect.opt.OptimizedAccessorFactory.get(OptimizedAccessorFactory.java:176)
        at com.sun.xml.bind.v2.runtime.reflect.Accessor$FieldReflection.optimize(Accessor.java:282)
        at com.sun.xml.bind.v2.runtime.property.ArrayProperty.<init>(ArrayProperty.java:69)
        at com.sun.xml.bind.v2.runtime.property.ArrayERProperty.<init>(ArrayERProperty.java:88)
        at com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.<init>(ArrayElementProperty.java:100)
        at com.sun.xml.bind.v2.runtime.property.ArrayElementNodeProperty.<init>(ArrayElementNodeProperty.java:62)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
        at com.sun.xml.bind.v2.runtime.property.PropertyFactory.create(PropertyFactory.java:128)
        at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.<init>(ClassBeanInfoImpl.java:183)
        at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getOrCreate(JAXBContextImpl.java:532)
        at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:347)
        at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1170)
        at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:145)
        at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:236)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:217)
        at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:175)
        at javax.xml.bind.ContextFinder.find(ContextFinder.java:353)
        at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:508)
        at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:465)
        at org.apache.hbase.thirdparty.org.glassfish.jersey.server.wadl.internal.WadlApplicationContextImpl.getJAXBContextFromWadlGenerator(WadlApplicationContextImpl.java:121)
        at org.apache.hbase.thirdparty.org.glassfish.jersey.server.wadl.internal.WadlApplicationContextImpl.isJaxbImplAvailable(WadlApplicationContextImpl.java:270)
        at org.apache.hbase.thirdparty.org.glassfish.jersey.server.wadl.WadlFeature.configure(WadlFeature.java:65)
        at org.apache.hbase.thirdparty.org.glassfish.jersey.model.internal.CommonConfig.configureFeatures(CommonConfig.java:728)
        at org.apache.hbase.thirdparty.org.glassfish.jersey.model.internal.CommonConfig.configureMetaProviders(CommonConfig.java:647)
        at org.apache.hbase.thirdparty.org.glassfish.jersey.server.ResourceConfig.configureMetaProviders(ResourceConfig.java:824)
        at org.apache.hbase.thirdparty.org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:332)
        at org.apache.hbase.thirdparty.org.glassfish.jersey.server.ApplicationHandler.lambda$initialize$1(ApplicationHandler.java:297)
        at org.apache.hbase.thirdparty.org.glassfish.jersey.internal.Errors.process(Errors.java:292)
        at org.apache.hbase.thirdparty.org.glassfish.jersey.internal.Errors.process(Errors.java:274)
        at org.apache.hbase.thirdparty.org.glassfish.jersey.internal.Errors.processWithException(Errors.java:232)
        at org.apache.hbase.thirdparty.org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:296)
        at org.apache.hbase.thirdparty.org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:261)
        at org.apache.hbase.thirdparty.org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:311)
        at org.apache.hbase.thirdparty.org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:154)
        at org.apache.hbase.thirdparty.org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:339)
        at javax.servlet.GenericServlet.init(GenericServlet.java:244)
        at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:643)
        at org.eclipse.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:499)
        at org.eclipse.jetty.servlet.ServletHolder.ensureInstance(ServletHolder.java:791)
        at org.eclipse.jetty.servlet.ServletHolder.prepare(ServletHolder.java:776)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:579)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
        at org.eclipse.jetty.server.Server.handle(Server.java:539)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:333)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:283)
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:108)
        at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @1176dcec
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
        at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
        at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
        at com.sun.xml.bind.v2.runtime.reflect.opt.Injector$1.run(Injector.java:177)
        at com.sun.xml.bind.v2.runtime.reflect.opt.Injector$1.run(Injector.java:174)

Affects Version(s)

master

Uniffle Server Log Output

No response

Uniffle Engine Log Output

No response

Uniffle Server Configurations

No response

Uniffle Engine Configurations

No response

Additional context

No response

Are you willing to submit PR?

  • [X] Yes I am willing to submit a PR!

xumanbu avatar Aug 10 '23 10:08 xumanbu

I attemp to include --add-opens java.base/java.lang=ALL-UNNAMED in JVM_ARGS, the Jetty server operates normally.

xumanbu avatar Aug 10 '23 10:08 xumanbu