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.59k stars 1.69k forks source link

java.lang.IllegalStateException: TTL logger implementation type is already set! type = 0 #550

Closed BenettChen closed 12 months ago

BenettChen commented 12 months ago

我在使用JavaAgent形式的时候,出现这个异常

Exception in thread "main" java.lang.reflect.InvocationTargetException
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:498)
  at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)
  at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401)
Caused by: java.lang.IllegalStateException: TTL logger implementation type is already set! type = 0
  at com.alibaba.ttl.threadpool.agent.internal.logging.Logger.setLoggerImplType(Logger.java:22)
  at com.alibaba.ttl.threadpool.agent.TtlAgent.premain(TtlAgent.java:129)

JVM配置如下: -Xmx3g -XX:+UseG1GC -XX:MaxGCPauseMillis=300 -javaagent:/opt/service/zhaopin_scf_zpjob/config/lib/transmittable-thread-local-2.14.0.jar

Maven依赖包:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>transmittable-thread-local</artifactId>
    <version>2.14.0</version>
</dependency>
oldratlee commented 12 months ago
......
Caused by: java.lang.IllegalStateException: TTL logger implementation type is already set! type = 0
......

这是防御式检查所抛出的异常(IllegalStateException); 可能和你具体使用/配置方式相关。 @BenettChen

请提供一个 极简、可运行、复现问题的 代码Demo工程。

推荐提供成一个单独的工程(Github repo)。这样可以:

BenettChen commented 12 months ago

刚我也和中间件团队一起排查了这个问题,发现是:

就当一个问题记录吧,后面有人遇到这个异常,先考虑下自己的环境问题,多一个排查方向。