ITADN

[BUG] Retry sends empty request body when the original body stream is single-use

#6413Openeye-gu 创建于 2026-07-01
type: bug
E
eye-gucommented
### Is there an existing issue for this? - [x] I have searched the existing issues ### Current Behavior https://github.com/apache/shenyu/blob/6e79c7b7c3f62163d82a7775593de49f95dae754/shenyu-plugin/shenyu-plugin-httpclient/src/main/java/org/apache/shenyu/plugin/httpclient/AbstractHttpClientPlugin.java#L80 When retry is enabled (retryTimes > 0) for HTTP proxy rules, retry attempts send an empty request body to the upstream instead of the original body. The root cause: exchange.getRequest().getBody() returns a single-use FluxReceive from Reactor Netty. After the first doRequest consumes it, the underlying ByteBufs are released. Subsequent retry subscriptions get an exhausted stream that immediately completes — the upstream receives an empty body with no error, causing silent data loss. ### Expected Behavior _No response_ ### Steps To Reproduce _No response_ ### Environment ```markdown ShenYu version(s): ``` ### Debug logs _No response_ ### Anything else? _No response_
2 条评论