Accept hook_created in event batches so a run's boot hooks can go out in one write

オープン
#5,449 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
25/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
活発
技術スタック
typescript
領域
backend

調査の方向性

The request sits between the client batch path (createWorkflowRunEventBatch, which only rejects hook_received) and the backend batch route, which currently refuses hook_created with "Unsupported eventType 'hook_created' in an event batch". Start by reading the batch response validator, since it expects each item's event type to match its request and would reject a hook_created answered with hook_conflict. Done means the backend accepts hook_created batches with per-item conflict reporting and the validator accepts that response. This touches the backend service, so it needs maintainer input on the protocol before a first-timer should attempt it.

索引モデルが issue の本文から書いたものです。

説明

A run's first delivery writes its boot suspension's events one at a time through the in-band writer. On the Vercel World, each hook_created is its own fenced POST (~50–80ms), and inline step claims wait behind them. eve creates a Workflow AbortController for its first turn at boot (one hook as of vercel/eve#6446, previously two), so every new session pays for that write before its first step can start. A message resumed into the run while those writes are in flight also waits for them.

I tried writing a suspension's plain hook creations (distinct tokens, no metadata, abort, force or dispose) as one createBatch from startSuspensionHookWrites. The backend refuses it:

Unsupported eventType 'hook_created' in an event batch

The client side already allows it: createWorkflowRunEventBatch only rejects hook_received. One gap there: the batch response validator expects each item's event type to match its request, so a hook_created answered with hook_conflict would fail validation, where the single-event path accepts it.

Would it be possible for the batch route to accept hook_created (and answer a taken token with a per-item hook_conflict)? With that, a boot's hooks and its inline step claims could go out as one write. Rough estimate from eve's boot traces: 50–150ms off a new session's first output, depending on how many hooks it creates.

🤖

主要言語
TypeScript
スター
2.5k
フォーク
401
平均マージ
2日 36分
マージ済み PR(30日)
150

環境構築

  • Dockerfile・Docker Compose ファイルなし
  • プルリクエストのテンプレートあり
  • コントリビューションガイドなし

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

vercel/workflow のほかの issue

vercel/workflow の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。