배경
IndexingRetryDelayPolicy는 지수 Backoff를 최대 지연으로 제한한 뒤 양방향 Jitter를 적용하고, 초과분을 다시 최대 지연으로 잘라낸다. 이 때문에 Backoff가 상한에 도달하면 상한을 넘은 난수 결과가 모두 같은 retryMaxDelay로 합쳐진다.
또한 Circuit OPEN 또는 Provider Retry-After가 애플리케이션 Backoff보다 길면 max(jitteredDelay, minimumRetryDelay)가 최소 지연을 그대로 반환한다. 같은 최소 지연을 받은 Job은 동일한 재시도 시각에 가까워져 Circuit HALF_OPEN 시점 또는 Provider 허용 시점에 DB Claim과 상태 전이가 집중될 수 있다.
목표
- 최대 지연 이하의 유효 구간 안에서 Jitter를 선택해
retryMaxDelay 한 점으로의 집중을 제거한다.
- Provider가 요구한 최소 대기를 위반하지 않는 방향으로 제한된 Jitter를 적용한다.
- 난수 입력을 통제할 수 있게 해 하한·중간·상한 경계값을 반복 가능한 단위 테스트로 검증한다.
- 기존 지수 Backoff, Jitter 비활성화, 입력 검증 계약을 유지한다.
완료 조건
- Backoff가 최대 지연에 도달해도 Jitter 결과가 허용 구간에 분산된다.
- Circuit·Retry-After 최소 지연보다 이른 시각은 반환하지 않는다.
- 긴 최소 지연에 과도한 추가 지연을 붙이지 않도록 양의 Jitter 폭을 제한한다.
- 결정적 단위 테스트와 관련 Backend 테스트가 통과한다.
비범위
- Sync Outbox 재시도 정책 변경
- Circuit Breaker 분산 상태 저장
- Circuit·지연 Job Micrometer 메트릭
- Grafana 대시보드
Retry-After HTTP-date 지원
배경
IndexingRetryDelayPolicy는 지수 Backoff를 최대 지연으로 제한한 뒤 양방향 Jitter를 적용하고, 초과분을 다시 최대 지연으로 잘라낸다. 이 때문에 Backoff가 상한에 도달하면 상한을 넘은 난수 결과가 모두 같은retryMaxDelay로 합쳐진다.또한 Circuit OPEN 또는 Provider
Retry-After가 애플리케이션 Backoff보다 길면max(jitteredDelay, minimumRetryDelay)가 최소 지연을 그대로 반환한다. 같은 최소 지연을 받은 Job은 동일한 재시도 시각에 가까워져 Circuit HALF_OPEN 시점 또는 Provider 허용 시점에 DB Claim과 상태 전이가 집중될 수 있다.목표
retryMaxDelay한 점으로의 집중을 제거한다.완료 조건
비범위
Retry-AfterHTTP-date 지원