Inngest v1.39.0

v1.39.0
Added 5
  • Add cancel run to the v2 REST API and CLI with POST /api/v2/runs/{run_id}/cancel
  • Add REST v2 rerun from step endpoint POST /v2/runs/{run_id}/rerun with fromStep payload support
  • Augment incoming AI metadata with cost estimates
  • Add logging middleware for API
  • Add primitives for cross-backend run state migration
Changed 4
  • Add shard scanner boundary to queue refactoring
  • Add scanner runtime to queue refactoring with updated Run signature and LeaseItem/ProcessItem interfaces
  • Expose available worker count in queue
  • Make cancellation deadline configurable
Fixed 5
  • Improve CLI timestamp argument handling
  • Use snapshots to handle map race access
  • Skip constraint lease on missing account
  • Fix race condition when creating workflow and checkpointing durable endpoint step
  • Recover from panics in event lifecycle listeners
Release Notes
  • #4638 feat(api): v2 api cancel run

    Adds cancel run to the v2 rest api and cli.

    POST /api/v2/runs/{run_id}/cancel

    inngest api POST /api/v2/runs/{run_id}/cancel

  • #4645 feat(api): rest v2 rerun from step

    POST /v2/runs/{run_id}/rerun

    with payload:

    {
      "fromStep": {
        "stepId": "fetch-user",
        "input": [
          {
            "userId": "user_123"
          }
        ]
      }
    }
    

    CLI equivalent:

    inngest api --prod rerun <run_id> \
      --from-step "step 2" \
      --input '[{"foo":"bar"}]'
    
Migration Notes
  • #4655 refactor(queue): add shard scanner boundary

    None

    Validation
    • go test -count=1 ./pkg/execution/queue
    • go test -run '^$' ./pkg/execution/state/redis_state
  • #4665 refactor(queue): add scanner runtime

    Out-of-tree queue scanner implementations must update Run(ctx, dispatch) to Run(ctx, runtime), use runtime.Dispatch to submit leased work, and may inspect runtime.WorkerSemaphore before scanning. Implementations that call DispatchFunc must handle the returned DispatchedItem; callers may ignore it, or wait on Done() with context cancellation or a timeout.

    Callers of LeaseItem must stop passing queue partitions and instead provide item metadata on LeaseItemRequest. Callers of ProcessItem must handle the new (ProcessItemResult, error) return shape.

    Validation
    • go test ./pkg/execution/queue
    • go test ./tests/execution/queue
    • make lint
  • #4672 fix(executor): recover from panics in event lifecycle listeners

    Test Plan

    Added TestRunEventLifecyclesRecoversFromListenerPanic which verifies that:

    • A panicking listener is called and its panic is recovered
    • Subsequent listeners are still called despite the panic
    • Multiple invocations of runEventLifecycles work correctly even after a panic

    https://claude.ai/code/session_01P33HC2LRVTGmbdkEwUYEMu

Changelog
🚀 Features
  • (api) Rest v2 rerun from step (#4645)
  • (metadata) Augment incoming ai metadata with cost estimates (#4661)
  • (api) V2 api cancel run (#4638)
🐛 Bug Fixes
  • (cli) Improve cli timestamp arg handling (#4650)
  • Use snapshots to handle map race access (#4653)
  • (queue) Skip constraint lease on missing account (#4604)
  • Race creating workflow and checkpointing durable endpoint step (#4668)
  • (executor) Recover from panics in event lifecycle listeners (#4672)
🚜 Refactor
  • (queue) Add shard scanner boundary (#4655)
  • (queue) Add scanner runtime (#4665)
  • (queue) Expose available worker count (#4666)
⚙️ Miscellaneous Tasks
  • (logging) Add logging middleware for API (#4646)
  • Make cancellation deadline configurable (#4659)
  • (state) Add primitives for cross-backend run state migration (#4654)
View original

Upgraded? How did it go?

Discussion