recordFailure static method

void recordFailure(
  1. String operationName
)

Implementation

static void recordFailure(String operationName) {
  final current = _circuits[operationName] ??
      _CircuitState(
        failureCount: 0,
        isOpen: false,
        lastFailure: DateTime.now(),
        resetTimeout: const Duration(minutes: 1),
      );

  final newFailureCount = current.failureCount + 1;
  final shouldOpen = newFailureCount >= 3; // Open after 3 failures

  _circuits[operationName] = _CircuitState(
    failureCount: newFailureCount,
    isOpen: shouldOpen,
    lastFailure: DateTime.now(),
    resetTimeout: Duration(minutes: newFailureCount), // Exponential backoff
  );

  if (shouldOpen) {
    ObslyLogger.warn(
        'Circuit breaker opened for $operationName after $newFailureCount failures');
  }
}