Circuit Breaker Konfigurierbarkeit - Implementiert ✅¶
Zusammenfassung¶
Die Circuit Breaker Thresholds für Connector-Importe sind jetzt über Firestore konfigurierbar, ohne dass ein Deployment notwendig ist.
Implementierte Änderungen¶
1. Neues Config-Modul¶
📁 core/functions/src/shared/circuit_breaker_config.js
- Lädt globale Settings aus system_settings/circuitBreakerSettings
- 5-minütiger Cache zur Performance-Optimierung
- Automatische Validierung der Werte
- Fallback auf Default-Werte bei Fehlern
2. Angepasster Circuit Breaker¶
📁 core/functions/src/connectors/circuit_breaker.js
- Alle Funktionen verwenden jetzt dynamische Settings
- checkCircuitBreaker() ist jetzt async
- recordSuccess() und recordFailure() berücksichtigen Settings
- Connector-spezifische Settings überschreiben globale Settings
3. Angepasster Generic Import¶
📁 core/functions/src/connectors/generic_import.js
- Beide Endpunkte (executeConnectorImport und executeConnectorImportHttp) verwenden await checkCircuitBreaker()
4. Aktualisierte Tests¶
📁 core/functions/test/unit/connectors/circuit-breaker.test.js
- Alle 41 Circuit Breaker Tests bestehen ✅
- Config-Stub für circuit_breaker_config implementiert
- Alle async/await Calls korrekt
5. Dokumentation¶
📁 core/functions/src/connectors/CIRCUIT_BREAKER_CONFIG.md
- Vollständige Anleitung für Admin-UI Implementierung
- Firestore-Struktur und Beispiele
- Validierungsregeln und Best Practices
- Monitoring und Debugging Tipps
Firestore-Struktur¶
Globale Settings¶
// Collection: system_settings
// Document ID: circuitBreakerSettings
{
failureThreshold: 5, // 1-100, Default: 5
resetTimeoutMs: 60000, // 1000-3600000ms, Default: 60000
enableLogging: true, // Boolean, Default: true
// Audit (optional)
_updatedAt: Timestamp,
_updatedBy: "user-uid"
}
Connector-spezifische Settings (optional)¶
// Collection: connectors
// Document ID: {connectorId}
{
settings: {
circuitBreaker: {
failureThreshold: 3, // Überschreibt global
resetTimeoutMs: 120000 // Überschreibt global
}
}
}
Prioritäts-Reihenfolge¶
- Connector-spezifische Settings (höchste Priorität)
- Globale Settings aus Firestore (
system_settings/circuitBreakerSettings) - Default-Settings (Hardcoded Fallback)
Migration¶
✅ Keine Breaking Changes
- Bestehende Systeme funktionieren ohne Änderungen weiter
- Wenn kein Firestore-Dokument existiert, werden Default-Werte verwendet
- Connector-spezifische Settings in connector.settings.circuitBreaker haben weiterhin Vorrang
Nächste Schritte für Admin-UI¶
-
Settings lesen
-
Settings aktualisieren
-
Firestore Security Rules
Vorteile¶
✅ Konfigurierbar ohne Deployment
✅ Per Admin-UI verwaltbar (sobald implementiert)
✅ Globale + Connector-spezifische Settings
✅ Automatische Validierung
✅ Performance durch Caching (5 Minuten TTL)
✅ Fehlertoleranz durch Fallback auf Defaults
✅ Vollständig getestet (41 Unit-Tests)
Performance¶
- Cache-TTL: 5 Minuten
- Firestore-Reads: Max. 1 Read pro 5 Minuten (alle Connectors teilen sich den Cache)
- Fehlerfall: 1 Minute Cache bei Firestore-Fehlern