Dapr
v1.17.9Orchestration & Management2026년 6월 2일
v1.17.9는 Azure Cosmos DB를 워크플로 액터 상태 저장소로 사용할 때 customStatus 행이 없는 워크플로가 퍼지 루프에 영구적으로 갇히는 버그를 수정합니다.
breakingCosmos DB를 워크플로 상태 저장소로 쓴다면 즉시 업그레이드
state.azure.cosmosdb를 워크플로 액터 상태 저장소로 사용하는 배포는 모두 영향권입니다. TTL이 지난 워크플로가 퍼지되지 않고, 스케줄러가 초당 한 번씩 퍼지를 계속 시도하면서 CPU를 낭비하고 로그를 오염시키며 dapr_runtime_workflow_operation_count{status=failed} 메트릭을 계속 올립니다. 1.17.9로 업그레이드 후 사이드카를 재시작하면, 멈춰 있던 워크플로는 다음 리텐션 리마인더 실행 시 자동으로 복구됩니다. 업그레이드 이후 별도 수동 조치는 불필요합니다.
enhancement업그레이드 전 메트릭으로 피해 규모 먼저 확인
업그레이드 전에 dapr_runtime_workflow_operation_count를 operation=purge_workflow, status=failed 레이블로 조회해보세요. Cosmos DB 배포에서 이 값이 계속 증가하고 있다면 멈춰 있는 워크플로가 존재한다는 뜻입니다. 업그레이드 전후 수치를 비교하면 수정이 제대로 적용됐는지 명확히 검증할 수 있습니다.
주요 변경 (5)
- Cosmos 트랜잭션 배치에 customStatus 삭제를 포함하기 전, 실제로 해당 행이 저장돼 있는지 여부를 추적하도록 수정
- Cosmos DB에서 멈춰 있던 워크플로는 사이드카 업그레이드 후 자동 복구 — 수동으로 스케줄러 잡을 삭제할 필요 없음
- 근본 원인: Cosmos DB의 원자적 배치 특성상 NotFound 삭제 하나가 실패하면 전체 트랜잭션이 롤백됨
- 1초 간격의 무한 재시도 정책으로 인해 영향받은 워크플로당 메트릭과 로그가 초당 1회씩 계속 증가
- customStatus 도입 이전 버전에서 업그레이드된 워크플로, 수동 정리된 워크플로, 초기 상태에서 진행되지 않은 워크플로 모두 해당