Kill a workflow between the effect and its acknowledgement
개요
resumeproof는 외부 액션이 발생한 후 호출자가 인식을 기록하기 전에 프로세스가 실패할 때 발생하는 재시도 문제를 해결하기 위한 오프라인 실험 도구입니다.
주요 내용
resumeproof는 워크플로우 저널과 시뮬레이션된 도구 원장이라는 두 개의 분리된 SQLite 파일을 사용하여 결정 과정을 가시화합니다.- 데모에서는 도구 원장이 커밋되고 저널이 결과를 인식하기 전에 의도적으로 자식 프로세스를 종료시키며, 이는 외부 액션과 그 결과 인식 사이의 간극에서 발생하는 실패를 연구하는 것을 목표로 합니다.
- 아이템포텐트(Idempotent) 워크플로우는 동일한 키로 재시도하면 "replayed: true"로 표시된 원본 영수증을 받고, 반복적인 재시도 후에도 하나의 시뮬레이션된 효과로 유지됩니다.
- 비-아이템포텐트(Non-idempotent) 워크플로우는 충돌 전에 효과가 발생했는지 확인할 수 없어 복구가 "unknown"으로 기록되며 조정이 필요합니다.
- 승인은 원래 액션 바이트에 바인딩되며, 액션 변경 시 승인이 무효화되고 워크플로우가 보류 상태로 돌아갑니다.
- 저널은 워크플로우 ID, 상태, 시도 횟수, 승인, 인식, 이벤트 타임라인을 소유하고, 도구 원장은 효과, 호출, 아이템포텐시 키, 영수증, 영수증 해시를 소유합니다.
- SQLite BEGIN IMMEDIATE 트랜잭션이 상태 전환을 보호하며, OS 파일 잠금이 클레임, 도구 호출, 인식 전체에 걸쳐 작동합니다.
- 명백히 실패한 경우 재시도 가능하지만, 불분명한 실패는 불확실성을 악화시킬 수 있어 재시도 횟수를 소모하지 않습니다.
- Missing 또는 손상된 도구 영수증도 조정 중단으로 이어집니다.
- 아이템포텐트 결과는 도구의 협조에 의존하며,
resumeproof는 로컬 해시를 제공업체 인증 사실로 변환할 수 없습니다. - 실제 프로덕션 환경에서는 인증된 승인, 공급업체 조회, 임대 또는 하트비트, 백오프, 보존 및 백업 정책, 가시성, 실제 조정 큐 등이 추가될 것입니다.
- 리포지토리에는 17개의 테스트가 6.75초 내에 통과했으며, 크래시 데모와 독립적인 생성/승인/재개/타임라인 흐름이 포함되어 있습니다.
시사점
resumeproof는 외부 액션 실행과 그 결과에 대한 인식 사이에 발생하는 모호한 실패 지점을 명확하게 보여주며, 이러한 실패를 분석하고 해결하기 위한 실제적인 도구를 제공함으로써 분산 시스템의 견고성을 높이는 데 기여합니다.
원문을 불러오는 중...
댓글
GitHub Discussions