mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-08-02 00:54:45 +08:00
fix(failover): patch P1-P3 reliability gaps surfaced by team review
- Forwarder buffers non-streaming bodies and primes streaming first chunk before signaling success, so body timeouts and SSE first-chunk failures route through the circuit breaker instead of being recorded as success on response-header arrival - Atomic enable-failover: switch to P1 before persisting the flag, and roll back auto-added queue entries when the switch is rejected (e.g. official providers) - Hot-reload circuit breaker config on per-app proxy config change instead of waiting for a proxy restart - FailoverToggle / FailoverQueueManager / AutoFailoverConfigPanel require proxy takeover for the active app; the backend command also rejects enabling when takeover is off - ProviderHealthBadge consumes the backend is_healthy flag instead of hardcoding the 5-failure threshold Cleanup: - impl From<&AppProxyConfig> for CircuitBreakerConfig and use it from the command layer - Collapse three identical TabsContent blocks into a single map
This commit is contained in:
@@ -201,6 +201,17 @@ impl ProviderRouter {
|
||||
}
|
||||
}
|
||||
|
||||
/// 更新指定应用已创建熔断器的配置(热更新)
|
||||
pub async fn update_app_configs(&self, app_type: &str, config: CircuitBreakerConfig) {
|
||||
let prefix = format!("{app_type}:");
|
||||
let breakers = self.circuit_breakers.read().await;
|
||||
for (key, breaker) in breakers.iter() {
|
||||
if key.starts_with(&prefix) {
|
||||
breaker.update_config(config.clone()).await;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// 获取熔断器状态
|
||||
#[allow(dead_code)]
|
||||
pub async fn get_circuit_breaker_stats(
|
||||
|
||||
Reference in New Issue
Block a user