Idempotency follow-ups: stable start Hooks, runs.list attribute filtering, resumeHook idempotency keys, hook close/drain
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 8/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- typescript
- Lĩnh vực
- backend
Hướng nghiên cứu
This is a tracker for four separate design changes, not one task. Start with the World contract, since ListWorkflowRunsParams and the resumeHook() dedup window both depend on it, and read the linked idempotency docs for the current experimental_hook and experimental_minRetention behaviour. Done would mean agreed designs for each item, not a single patch; a newcomer should pick one item only after a maintainer confirms its scope.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
(AI) Follow-up to #2376. That issue's main proposal shipped: start({ experimental_hook }) admits a run and its start Hook atomically (#4996, #5156, #5238), and experimental_minRetention refuses duplicates that arrive after the run ends. See Run idempotency. This issue tracks the four items from #2376 that are still open.
1. Make start Hooks and retention stable
- Drop the
experimental_prefix fromstart({ experimental_hook })andexperimental_minRetention(on bothstart()andcreateHook()). - Support
experimental_hookfor dynamic workflows. Todaystart()throws: "start({ experimental_hook }) is not supported for dynamic workflows, so no run was created."
2. Filter runs.list by attribute
ListWorkflowRunsParams filters only by workflowName and status. Runs can set attributes (experimental_setAttributes, CreateWorkflowRunParams.attributes), but nothing can look a run up by them. Retention covers a bounded window after a run ends. Attribute lookup is still needed to find runs after that window, and for richer queries. This needs a change to the World contract.
3. Idempotency keys on resumeHook()
A retried resumeHook() gets a new resumeId and can append a second hook_received. That happens, for example, when a step crashes after the resume landed and is retried. Today every consumer has to carry its own request key in the payload and deduplicate. Proposal: resumeHook(token, payload, { idempotencyKey }), deduplicated by the World within a retention window. In a step, stepId (plus a counter for steps that send more than once) is a natural key.
4. Hook close and drain
A workflow cannot stop accepting resumes and then consume the payloads already buffered. If a workflow ends right after its last await hook, a payload resumed in that window is acknowledged to the sender and then dropped. Possible shape: hook.close(), after which resumeHook() rejects and the sender can route elsewhere, and then iterating the hook yields the backlog it already accepted, until it is empty.
Not tracked here
- Optimistic strategies (supersede, signal the owner) stay inherently racy. The documented retry loops handle this.
- Tokens are one flat namespace across workflows. A documented prefix convention (for example
order:<id>) is enough.
- Ngôn ngữ chính
- TypeScript
- Star
- 2.5k
- Fork
- 401
- Merge trung bình
- 2 ngày 36 phút
- Pull request đã merge (30 ngày)
- 150
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Không 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 vercel/workflow
-
node-module-esbuild-plugin: getImportedIdentifier only checks the first named import when locating a violationCó thể đã có người làm @div-cowboy đã nhận 2 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
vercel/workflow#5057 · 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 74/100
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 84/100
Maintainer thường phản hồi trong vòng 1 ngày
-
code-transform.mdx §ID Generation omits the package-shipped `name@version` ID formCó thể đã có người làm @Mohith26 đã nhận 109 ngày trước. Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
Maintainer thường phản hồi trong vòng 1 ngày
-
world-postgres: LISTEN clients lose non-enumerable pg password credentialsCó thể đã có người làm @vishalrajofficial đã nhận hôm nay. Đang mở
Độ khó 3/5 Nửa ngày Mức phù hợp với người mới 25/100
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của vercel/workflow
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
AykutSarac/jsoncrack.com#616 ·
-
nip27: long hashtag swallows the rest of the content, lone # gives an empty hashtagCó thể đã có người làm @bardrop đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
nbd-wtf/nostr-tools#578 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
backnotprop/plannotator#3427 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
microsoft/Power-CAT-Copilot-Studio-Kit#942 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[BUG]: Duplicate preposition in heading and unformatted feedback text on Strengthen Argument pageĐang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
AOSSIE-Org/DebateAI#801 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày