Time Breaks
Scope
Mục tiêu là các trạng thái trong đó
assumptions về execution order và concurrency
không còn có thể được duy trì.
Definition
Time breaks đề cập đến một trạng thái mà assumptions liên quan đến execution order, concurrent execution, và retry được giả định thành lập một cách ngầm định hoặc rõ ràng ban đầu
bị sụp đổ một phần,
và các tình huống được quan sát mà processing results không thể được uniquely determined.
Symptoms
- Ngay cả khi thực hiện cùng processing, results khác nhau tùy thuộc vào execution order
- Các trạng thái được quan sát mà processing được áp dụng gấp đôi bởi retry
- Các tình huống được quan sát mà partially completed states được coi như assumptions bởi concurrent execution
- State transitions xảy ra mà inconsistent với temporal sequence relationships
Typical Triggers
- Asynchronization hoặc parallelization được giới thiệu một phần trong khi overall assumptions vẫn không thay đổi
- Operations tiếp tục mà không có giả định được chia sẻ rằng retry hoặc resend an toàn
- Các tình huống được quan sát mà execution timing không thể được kiểm soát do integration với external systems
- Feature additions tiếp tục mà không có idempotency hoặc order guarantees của processing được làm rõ ràng
Diagnostic Questions
- Có phải là trạng thái mà processing này tạo ra cùng result bất kể được thực hiện bao nhiêu lần?
- Có phải là trạng thái mà behavior khi execution order bị đảo ngược có thể giải thích?
- Có phải là trạng thái mà partially succeeded states có thể được phát hiện?
- Có phải là trạng thái mà có thể khẳng định rằng retry an toàn?
What This Is Not
- Điều này không phải là vấn đề chọn concurrency processing models
- Điều này không thảo luận về constraints của specific language features hoặc runtimes
- Điều này không đề cập đến simple performance problems hoặc response delays
Connections
- Why It Breaks: Measurement Gap, Decision Avoidance