[BUG] No circuit breaker in the proxy/retry path by default — no fast-fail when all upstreams are down
- Dominant language
- Java
- Stars
- 8.8k
- Forks
- 3.1k
- Avg merge
- 7d 1h
- Merged PRs (30d)
- 85
Description
## Description
The retry logic operates below the plugin chain with no awareness of circuit-breaker state. The Resilience4J circuit breaker is not enabled by default. The failover retry checks `UpstreamCacheManager` for healthy upstreams, but that lags real-time failures. When all upstreams in a selector go down, every incoming request fires `retryTimes` retries (each timing out) before failing — no fast-fail path.
## Location
```
shenyu-plugin-divide/.../DividePlugin.java:94-141 (no CB wrapping)
shenyu-plugin-resilience4j/.../Resilience4JPlugin.java:80-90 (optional, must be explicitly configured per-route)
```
## Impact
With `retryTimes=3` and 1000 RPS, that's 4000 outbound requests/s to dead upstreams for the outage duration plus 3000 held connections.
## Suggested fix
Make a lightweight circuit breaker (open-on-N-consecutive-failures, half-open-probe) the default in the Divide/HTTP retry path, not an opt-in plugin.
## Related existing issue(s)
None
_Identified during the 2026-08-02 audit; full list in [`docs/issue-candidates-2026-08-02.md`](docs/issue-candidates-2026-08-02.md)._
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with shenyu-plugin-divide/.../DividePlugin.java:94-141 and inspect the retry path, then compare shenyu-plugin-resilience4j/.../Resilience4JPlugin.java:80-90. Trace how retries and UpstreamCacheManager health checks interact when all upstreams fail. Done means the Divide/HTTP retry path has a default open-on-N-consecutive-failures and half-open-probe circuit breaker instead of requiring per-route configuration.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend-api-design, networking
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100