sofa-tracer icon indicating copy to clipboard operation
sofa-tracer copied to clipboard

OpenFeign 10.7.3+版本兼容问题

Open xyohn opened this issue 2 years ago • 1 comments

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 avatar Aug 16 '21 10:08 xyohn

@xyohn thank you for your feedback, we will support in 3.1.2 version.

glmapper avatar Aug 18 '21 01:08 glmapper