A failed commit becomes a permanent OrchestrationFailed without parent notification; the fallback abandon never runs
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 48/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- rust
- Lĩnh vực
- distributed-systems
Hướng nghiên cứu
Start with process_orchestration_item and ack_orchestration_with_changes in src/runtime/dispatchers/orchestration.rs, then read the related design in #55. Trace the retry and error branches, including both abandon_orchestration_item calls; done means the chosen failure behavior executes asynchronously and does not leave parent notification or activity cancellation missing.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
When ack_orchestration_item fails, the runtime commits an OrchestrationFailed event for the instance. It does this for every error that the provider calls non-retryable, and for a retryable error that lasts longer than about 310 ms. So a database problem that goes away can end an orchestration for good.
The same code path has two more problems:
- The failure is committed without messages. A parent orchestration gets no
SubOrchFailedand waits forever. - The fallback call to
abandon_orchestration_itemnever runs.
Where
process_orchestration_item, the ack and its error branch: https://github.com/microsoft/duroxide/blob/6a458861763a7aa5b78a7c1c97691a6f00489a8b/src/runtime/dispatchers/orchestration.rs#L949-L1017ack_orchestration_with_changes, the retry loop: https://github.com/microsoft/duroxide/blob/6a458861763a7aa5b78a7c1c97691a6f00489a8b/src/runtime/dispatchers/orchestration.rs#L1161-L1210
Details
- Retry budget. A retryable error is retried 5 times, with waits of 10, 20, 40, 80 and 160 ms. Then the error is returned (L1191-L1206). A non-retryable error is returned at once (L1183-L1188).
- Failure commit. The caller builds
OrchestrationFailedfrom the history it fetched and commits it with the same lock token (L975-L1001). If the database is healthy again at that moment, the commit works and the instance isFailed. - No messages. That commit passes empty
worker_items,orchestrator_itemsandcancelled_activities(L990-L999). If the instance is a sub-orchestration, its parent is not told. In-flight activities are not cancelled. - The abandon never runs. Both fallback paths call
drop(self.history_store.abandon_orchestration_item(...))(L1009-L1013 and L1200-L1204).abandon_orchestration_itemis anasync fn. A future that is dropped without.awaitdoes nothing. The lock is only released when it times out.
Which errors are non-retryable depends on the provider. duroxide-pg classifies almost every SQLSTATE as permanent, including a statement timeout: microsoft/duroxide-pg#30.
How this was checked
Found by reading the code. Not reproduced.
Suggested fix
- Do not fail the instance for an infrastructure error on commit. Abandon the item with a backoff, and let
max_attemptsend a message that can never commit. - If the failure commit stays, queue
SubOrchFailedfor the parent and cancel the in-flight activities, as the normal failure path does. .awaitthe twoabandon_orchestration_itemcalls.
Tracked in #55.
- Ngôn ngữ chính
- Rust
- Star
- 221
- Fork
- 61
- Merge trung bình
- 3 ngày 5 giờ
- Pull request đã merge (30 ngày)
- 1
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của microsoft/duroxide
-
One failed session lock renewal loses the session: no retry, no log, no signal to running activitiesĐang mởbug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 30/100
-
bug
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 72/100
-
bug
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 38/100
-
prune_kv_values_updated_before emits actions in HashMap order; replay fails with `kv clear mismatch`Có thể đã có người làm @akhil9tiet đã nhận 3 ngày trước. Đang mởbug
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 25/100
-
A failed activity lock renewal can lose the activity result; the orchestration waits foreverĐang mởbug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
Tất cả issue của microsoft/duroxide
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
bmander/geomsolver#118 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Three Windows builds are keyed on a later release than their layoutCó thể đã có người làm @ero-qt đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 95/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Markdown Preview Fonts Don't Show Selected OptionCó thể đã có người làm @RadhiRasho đã nhận hôm nay. Đang mởstate:needs triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 61/100
zed-industries/zed#65300 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 73/100
Maintainer thường phản hồi trong vòng 1 ngày