sofa-tracer
sofa-tracer copied to clipboard
OpenFeign 10.7.3+版本兼容问题
Describe the bug
SofaTracer对于Feign的实现中,SofaTracerFeignClient类execute方法内 对于UnsupportedOperationException异常是通过重建request对象实现的,其中的Body是通过获取request.requestBody()实现的 在OpenFeign 10.7.2版本及之前,这个实现是正确的 且通过代码注释来看,body和charset方法已经Deprecated,需要使用requestBody方法代替 https://github.com/OpenFeign/feign/blob/10.7.2/core/src/main/java/feign/Request.java 但在OpenFeign 10.7.3版本开始,requestBody这个方法被OpenFeign废弃了,方法直接消失了,而body和charset方法也去掉了Deprecated的注释 https://github.com/OpenFeign/feign/blob/10.7.3/core/src/main/java/feign/Request.java 从OpenFeign的issue来看,这是他们的一个错误造成的 https://github.com/OpenFeign/feign/issues/1194 https://github.com/OpenFeign/feign/issues/1308 虽然这个错误是OpenFeign导致的,但这个错误会导致SofaTracer直接无法兼容10.7.3及以上的版本..
Expected behavior
预期的结果是 能兼容OpenFeign之前及之后的版本
Actual behavior
实际的结果是 由于SofaTracerFeignClient中execute方法里的实现为 request = Request.create(request.httpMethod(), request.url(), new LinkedHashMap<>( request.headers()), request.requestBody()); 因此,在OpenFeign>=10.7.3及以上的版本使用会报错
Steps to reproduce
将spring-cloud-starter-openfeign的版本进行版本升级,如升级到2.2.9.RELEASE 启动项目并进行Feign调用
Minimal yet complete reproducer code (or GitHub URL to code)
Environment
- SOFATracer version: 3.1.1
- JVM version (e.g.
java -version
):1.8 - OS version (e.g.
uname -a
): - Maven version:
- IDE version:
@xyohn thank you for your feedback, we will support in 3.1.2 version.