refactor(trigger): fix deep_nesting in _load_circuit_breaker_state

Extracted _restore_fingerprint_tracking() helper and flattened early-return
guards to reduce nesting depth from 5 to 3. Seedgo deep_nesting now passes.
370 tests passing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
AIOSAI
2026-04-10 16:03:10 -07:00
co-authored by Claude Opus 4.6
parent 6a127b066d
commit 1cc07b3ca2
@@ -159,6 +159,17 @@ def _save_circuit_breaker_state() -> None:
logger.warning("Failed to save circuit breaker state: %s", exc)
def _restore_fingerprint_tracking(pf_data: dict) -> None:
"""Restore per-fingerprint dispatch tracking from persisted data."""
global _fingerprint_dispatch_times, _fingerprint_dispatch_count
for fp, info in pf_data.items():
last = float(info.get('last_dispatch', 0.0))
count = int(info.get('count', 0))
if last > 0:
_fingerprint_dispatch_times[fp] = [last]
_fingerprint_dispatch_count[fp] = count
def _load_circuit_breaker_state() -> CircuitBreakerState:
"""Load full circuit breaker state from trigger_cb_state.json.
@@ -168,31 +179,25 @@ def _load_circuit_breaker_state() -> CircuitBreakerState:
Returns:
CircuitBreakerState populated from disk or defaults.
"""
global _fingerprint_dispatch_times, _fingerprint_dispatch_count
try:
if CB_STATE_FILE.exists():
raw = CB_STATE_FILE.read_text(encoding='utf-8').strip()
if not raw:
return CircuitBreakerState()
data = json.loads(raw)
cb_data = data.get('circuit_breaker')
if isinstance(cb_data, dict) and cb_data.get('state') in ('closed', 'open', 'half_open'):
breaker = CircuitBreakerState()
breaker.state = cb_data['state']
breaker.opened_at = float(cb_data.get('opened_at', 0.0))
breaker.cooldown_seconds = int(cb_data.get('cooldown_seconds', breaker.base_cooldown))
breaker.recent_errors = [float(t) for t in cb_data.get('recent_errors', [])]
breaker.summary_sent = bool(cb_data.get('summary_sent', False))
breaker.half_open_allow = bool(cb_data.get('half_open_allow', True))
# Restore per-fingerprint tracking
pf_data = data.get('per_fingerprint', {})
for fp, info in pf_data.items():
last = float(info.get('last_dispatch', 0.0))
count = int(info.get('count', 0))
if last > 0:
_fingerprint_dispatch_times[fp] = [last]
_fingerprint_dispatch_count[fp] = count
return breaker
if not CB_STATE_FILE.exists():
return CircuitBreakerState()
raw = CB_STATE_FILE.read_text(encoding='utf-8').strip()
if not raw:
return CircuitBreakerState()
data = json.loads(raw)
cb_data = data.get('circuit_breaker')
if not isinstance(cb_data, dict) or cb_data.get('state') not in ('closed', 'open', 'half_open'):
return CircuitBreakerState()
breaker = CircuitBreakerState()
breaker.state = cb_data['state']
breaker.opened_at = float(cb_data.get('opened_at', 0.0))
breaker.cooldown_seconds = int(cb_data.get('cooldown_seconds', breaker.base_cooldown))
breaker.recent_errors = [float(t) for t in cb_data.get('recent_errors', [])]
breaker.summary_sent = bool(cb_data.get('summary_sent', False))
breaker.half_open_allow = bool(cb_data.get('half_open_allow', True))
_restore_fingerprint_tracking(data.get('per_fingerprint', {}))
return breaker
except Exception as exc:
logger.warning("Failed to load circuit breaker state: %s", exc)
return CircuitBreakerState()