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

SEVERE [main] TtlTransformer: Fail to transform class ****. cause: java.io.IOException: invalid constant type: 17 at 113 ttl-agent version v2.12.1 #270

Closed Dr-wgy closed 3 years ago

Dr-wgy commented 3 years ago

这个问题在本地没有复现 是在测试环境复现 不大好debug

Dr-wgy commented 3 years ago

CONSTANT_Dynamic 17 https://docs.oracle.com/javase/specs/jvms/se11/html/jvms-4.html#jvms-4.4-210


Dr-wgy commented 3 years ago

报错信息 和这个issue很像

https://github.com/arquillian/arquillian-extension-jacoco/issues/84

Dr-wgy commented 3 years ago

@oldratlee https://github.com/jboss-javassist/javassist/issues/270 上面这个问题需要升级版本吗

oldratlee commented 3 years ago

@wuguanyu 你升级一下javassist依赖,本地打包出TTL jar,测试一下看看你的问题能不能解决? # TTL打包文档:如何编译构建

另外,分离整理 一个 可以出现问题的极简Demo工程: @wuguanyu ❤️

否则涉及业务代码与流程,不方便有效分析与排查。


我也看一下这个问题,确认需要我就Release一个新版本。

Dr-wgy commented 3 years ago

@oldratlee 好的 我本地没有复现这个问题 只是在测试线环境先遇到这个问题

Dr-wgy commented 3 years ago

@oldratlee 我尝试一下 用master代码 的包 不会出现 Fail to transform class ****. cause: java.io.IOException: invalid constant type

不知道 master和 上个release 版本变更了什么

Dr-wgy commented 3 years ago

@oldratlee 单独check-out v2.12.1 变更 javaassist 版本 也不会报上面 的错误 image 只能描述一个现象了 本地没有复现 所以不知道怎么才能构建这个demo 出来,我在研究一下

oldratlee commented 3 years ago

本地没有复现 所以不知道怎么才能构建这个demo 出来,我在研究一下

整理一个测试环境能出现的demo 也可以 @wuguanyu 整理过程(如对齐环境 )可能就能确定复现了 😀

我尝试一下 是用master代码 的包 不会出现 Fail to transform class ****. cause: java.io.IOException: invalid constant type 不知道 master和 上个release 版本变更了什么

Masterv2.12.1javassist库没有升级。 如果是javassist版本问题,2者应该都会有问题。

是不是在测试环境,使用v2.12.1这个问题也不是 必现的? @wuguanyu

@oldratlee 单独check-out v2.12.1 变更 javaassist 版本 也不会报上面 的错误

分支fix/issue270上,对v2.12.1版本升级了javassist库。


升级javaassist3.28.0-GA,则TTL不再支持Java 6/7

需要思考一下,如何操作合适? 😁

Dr-wgy commented 3 years ago

本地没有复现 所以不知道怎么才能构建这个demo 出来,我在研究一下

整理一个测试环境能出现的demo 也可以 @wuguanyu 整理过程(如对齐环境 )可能就能确定复现了 😀

我尝试一下 是用master代码 的包 不会出现 Fail to transform class ****. cause: java.io.IOException: invalid constant type 不知道 master和 上个release 版本变更了什么

Masterv2.12.1javassist库没有升级。 如果是javassist版本问题,2者应该都会有问题。

是不是在测试环境,使用v2.12.1这个问题也不是 必现的? @wuguanyu

@oldratlee 单独check-out v2.12.1 变更 javaassist 版本 也不会报上面 的错误

分支fix/issue270上,对v2.12.1版本升级了javassist库。

升级javaassist3.28.0-GA,则TTL不再支持Java 6/7

这个代码上注释我看过了,升级到3.28.0-GA 应该比较适合我们 我们代码jdk最低版本是8

Dr-wgy commented 3 years ago

整理一个测试环境能出现的demo 也可以 @wuguanyu 整理过程(如对齐环境 )可能就能确定复现了 😀

我尝试一下 是用master代码 的包 不会出现 Fail to transform class ****. cause: java.io.IOException: invalid constant type 不知道 master和 上个release 版本变更了什么

Masterv2.12.1javassist库没有升级。 如果是javassist版本问题,2者应该都会有问题。

@oldratlee 这个理论上 我觉得是对的 但是不知道 Master与v2.12.1 代码变更影响范围

Dr-wgy commented 3 years ago

@oldratlee 我仔细看一下 测试环境和我本地的还有其他的一些区别,要是有结论的我在 搞个demo

Dr-wgy commented 3 years ago

@oldratlee 大致知道问题所在了

-javaagent:transmittable-thread-local.jar=ttl.agent.logger:STDOUT
-Xbootclasspath/atransmittable-thread-local.jar
-javaagent:jacocoagent.jar

感觉是jacocoagent有相互冲突 我之前本地没有jacocoagent,测试环境是有的 本地复现

感谢支持

oldratlee commented 3 years ago

@oldratlee 大致知道问题所在了 ……

好的 @wuguanyu 👏

这边先不升级 javaassist3.28.0-GA 以及 相应Java语言升级(不支持Java 6/7)。 后面根据实际情况再跟进升级。


后面有问题可以再继续讨论。 这个Issue先Close了。

jyyfei commented 2 weeks ago

我在类似的版本遇到了类似的问题,请问这个问题已经解决了么

jyyfei commented 2 weeks ago

@oldratlee 我升级到最新版本2.14.5没有这个问题了,是在后续版本修复了么

oldratlee commented 2 weeks ago

@oldratlee 我升级到最新版本2.14.5没有这个问题了,是在后续版本修复了么

2.14.5 有升级javassist,见: https://github.com/alibaba/transmittable-thread-local/releases/tag/v2.14.5