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

引入byte-buddy依赖导致Ttl增强失败 #546

Closed guofeiwu closed 1 year ago

guofeiwu commented 1 year ago

// agent 很简单,就是使用了ttlagent,没有其他的

// test-agent.jar

public static void premain(String arguments, Instrumentation instrumentation) throws Exception {
        TtlAgent.premain(arguments, instrumentation);
}


// 启动程序,
java -Xbootclasspath/a:/path/transmittable-thread-local-2.11.5.jar -javaagent:/path/test-agent.jar -jar demo.jar

增强成功;

// 项目中引入了以下依赖、想加入其他的功能,导致增强失效,ThreadPoolExecutor 在TtlAgent之前被load
```properties
    <dependency>
            <groupId>net.bytebuddy</groupId>
            <artifactId>byte-buddy</artifactId>
            <version>1.10.7</version>
        </dependency>
        <dependency>
            <groupId>net.bytebuddy</groupId>
            <artifactId>byte-buddy-agent</artifactId>
            <version>1.10.7</version>
        </dependency>

java -Xbootclasspath/a:/path/transmittable-thread-local-2.11.5.jar -javaagent:/path/test-agent.jar -jar demo.jar

// 尝试把byte-buddy-agent放在test-agent.jar之后,启动
java -Xbootclasspath/a:/path/transmittable-thread-local-2.11.5.jar -javaagent:/path/test-agent.jar -javaagent:/path/byte-buddy-agent.jar -jar demo.jar

增强都失败;
oldratlee commented 1 year ago

resolved by @guofeiwu , see https://github.com/alibaba/transmittable-thread-local/issues/207#issuecomment-1713350537