Summary
Lambda now sends a Lambda-Runtime-Invocation-Id header on /runtime/invocation/next responses. Runtimes should echo this header back on /runtime/invocation/{requestId}/response and /runtime/invocation/{requestId}/error to enable RAPID to detect and reject stale responses from timed-out invocations.
Problem
When an invoke times out, the runtime process continues running. If a new invoke arrives with the same requestId (customer-provided or retried by upstream), RAPID accepts it. The still-running old invocation eventually posts its response, and RAPID delivers the wrong response to the new invoke (cross-wiring).
This affects both On-Demand and Lambda Managed Instances (LMI), and Rust is a supported LMI runtime.
What needs to change
- Parse
Lambda-Runtime-Invocation-Id from the /next response headers (optional — may be absent with older RAPID)
- Store it alongside the invocation context
- Echo it as a request header on
/response and /error
- If the header is absent from
/next, don't send it back (backward compat)
Backward Compatibility
- Old RAPID (doesn't send the header) + New RIC (no header to echo) → no change ✅
- New RAPID (sends the header) + Old RIC (doesn't echo) → RAPID skips validation ✅
- New RAPID + New RIC → header echoed, RAPID validates match ✅
Reference Implementations
Summary
Lambda now sends a
Lambda-Runtime-Invocation-Idheader on/runtime/invocation/nextresponses. Runtimes should echo this header back on/runtime/invocation/{requestId}/responseand/runtime/invocation/{requestId}/errorto enable RAPID to detect and reject stale responses from timed-out invocations.Problem
When an invoke times out, the runtime process continues running. If a new invoke arrives with the same
requestId(customer-provided or retried by upstream), RAPID accepts it. The still-running old invocation eventually posts its response, and RAPID delivers the wrong response to the new invoke (cross-wiring).This affects both On-Demand and Lambda Managed Instances (LMI), and Rust is a supported LMI runtime.
What needs to change
Lambda-Runtime-Invocation-Idfrom the/nextresponse headers (optional — may be absent with older RAPID)/responseand/error/next, don't send it back (backward compat)Backward Compatibility
Reference Implementations