RATATOSKRATATOSK
로그인

Dapr

v1.17.9Orchestration & Management
2026년 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 도입 이전 버전에서 업그레이드된 워크플로, 수동 정리된 워크플로, 초기 상태에서 진행되지 않은 워크플로 모두 해당