alibaba / transmittable-thread-local

📌 a missing Java std lib(simple & 0-dependency) for framework/middleware, provide an enhanced InheritableThreadLocal that transmits values between threads even using thread pooling components.
https://github.com/alibaba/transmittable-thread-local
Apache License 2.0
7.62k stars 1.69k forks source link

agent 2.14.3 JDK17 报错 #559

Closed kidzhan closed 11 months ago

kidzhan commented 11 months ago

在jdk17 版本 和21 版本使用ttl agent 2.14.3 系统报错 提示 无法找到 ThreadPoolExecutor 这个是什么造成的?

Illegal access: this web application instance has been stopped already. Could not load [java/util/concurrent/ThreadPoolExecutor.class]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
    at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1457) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:1047) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at com.alibaba.ttl.threadpool.agent.internal.javassist.LoaderClassPath.find(LoaderClassPath.java:90) ~[na:na]
    at com.alibaba.ttl.threadpool.agent.internal.javassist.ClassPoolTail.find(ClassPoolTail.java:370) ~[na:na]
    at com.alibaba.ttl.threadpool.agent.internal.javassist.ClassPool.find(ClassPool.java:569) ~[na:na]
    at com.alibaba.ttl.threadpool.agent.internal.javassist.ClassPool.createCtClass(ClassPool.java:553) ~[na:na]
    at com.alibaba.ttl.threadpool.agent.internal.javassist.ClassPool.get0(ClassPool.java:518) ~[na:na]
    at com.alibaba.ttl.threadpool.agent.internal.javassist.ClassPool.get(ClassPool.java:427) ~[na:na]
    at com.alibaba.ttl.threadpool.agent.internal.transformlet.impl.TtlExecutorTransformlet.doTransform(TtlExecutorTransformlet.java:80) ~[na:na]
    at com.alibaba.ttl.threadpool.agent.TtlTransformer.transform(TtlTransformer.java:80) ~[na:na]
    at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:244) ~[na:na]
    at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188) ~[na:na]
    at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:610) ~[na:na]
    at java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[na:na]
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1027) ~[na:na]
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) ~[na:na]
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862) ~[na:na]
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760) ~[na:na]
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681) ~[na:na]
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639) ~[na:na]
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na]
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ~[na:na]
    at org.apache.catalina.core.ApplicationContextFacade.setAttribute(ApplicationContextFacade.java:314) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at org.apache.catalina.loader.WebappLoader.setClassPath(WebappLoader.java:559) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at org.apache.catalina.loader.WebappLoader.startInternal(WebappLoader.java:375) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4715) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1332) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1322) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[na:na]
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) ~[na:na]
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:866) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:846) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1332) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1322) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[na:na]
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) ~[na:na]
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:866) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:241) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:433) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:918) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at org.apache.catalina.startup.Tomcat.start(Tomcat.java:485) ~[tomcat-embed-core-10.1.13.jar:10.1.13]
    at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:123) ~[spring-boot-3.2.0-20231013.214334-415.jar:3.2.0-SNAPSHOT]
kidzhan commented 11 months ago

补充一下信息 springboot 3.2 使用tomcat 的时候会产生这个 ,使用undertow 不会

kidzhan commented 11 months ago

再补充一个信息, 该错误不影响正常使用。

oldratlee commented 11 months ago
Illegal access: this web application instance has been stopped already. Could not load [java/util/concurrent/ThreadPoolExecutor.class]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
  at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1457) ~[tomcat-embed-core-10.1.13.jar:10.1.13]

看起来是Tomcat实现上的防御性提示日志:

可以忽略。 @kidzhan

kidzhan commented 11 months ago

好的感谢,主要没明白这个为什么会发生 @oldratlee 再次感谢

oldratlee commented 11 months ago

@kidzhan 这个 issue 先 close 了 ❤️