apache / apache/shenyu

[BUG] No circuit breaker in the proxy/retry path by default — no fast-fail when all upstreams are down

Open
#6,584 1 comment 0 reactions 0 assignees View on GitHub
plugin: divide priority: medium type: performance
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.