Problem Scenario: Retry + Circuit Breaker

Problem Scenario: Retry + Circuit Breaker A sequence diagram generated by Archify. POST /payment (Payment Request) Attempt 1 INSERT payment (Success) Timeout (Response Lost) Retry 1/3 Attempt 2 (Same Request) INSERT payment (Duplicate!) Timeout (Response Lost) Retry 2/3 Attempt 3 (Same Request) INSERT payment (Duplicate!) 200 OK 200 OK Attempt 1 Retry 1/3 Retry 2/3 Client · Sequence participant Client Istio Proxy · VirtualService Retry · Sequence participant Istio Proxy VirtualService Retry Payment Service · Sequence participant Payment Service Database · Sequence participant Database Legend payment writes success response response lost regular call

Configuration

  • • VirtualService retries.attempts: 3
  • • DestinationRule outlierDetection.consecutiveErrors: 5

Result

  • • Payment recorded 3 times (duplicated)
  • • Circuit Breaker only activates after 5 consecutive errors, so it cannot prevent duplicates during retries