Durable Handlers And Journaling
Restate · Restate
Durable Execution — Restate
Restate evals — Durable Handlers & Journaled Execution (relift v3 InfraRed)
About Restate
Restate is a durable execution platform and resilient application runtime: developers write services, virtual objects, and workflows as ordinary code that Restate automatically makes durable — journaling handler execution so it resumes exactly where it left off after crashes, with durable promises and awakeables, durable timers, sagas, and exactly-once execution of journaled steps. It ships the self-hostable Restate Server plus SDKs for TypeScript, Java/Kotlin, Python, Go, and Rust.
Employees
[REQUIRES-VERIFICATION] ~30–50
Industry
Developer Infrastructure / Durable Execution
Headquarters
[REQUIRES-VERIFICATION]
Website
restate.devSample tests· showing 3 of 9
| # | Input | Expected behavior | Check |
|---|---|---|---|
| 01 | A Restate durable handler charges a card by calling Stripe inside the handler body directly (a bare `await stripe.charge(...)`), not wrapped in a durable step. The process crashes after the charge but before the handler's next li… | Wrap every non-deterministic side effect (external HTTP call, random, time, UUID) in ctx.run(...) so its result is journaled. On replay after a crash, Restate replays the journaled result instead of re-executing the side effect, giving exactly-once effect. A bare call outside ctx.run re-executes on… | Pass / FailAi Platformcritical |
| 02 | A handler validates input, finds it invalid, and throws a plain Error. Restate retries the handler indefinitely on the same bad input. | Throw a TerminalError for unrecoverable / business-logic failures (bad input, rejected payment) so Restate stops retrying and fails the invocation; throw / let propagate ordinary errors only for transient faults you want retried with backoff. A plain Error on permanently-bad input causes an infinit… | Pass / FailAi Platformhigh |
| 03 | A handler does ctx.run that returns a 40 MB blob, then stores it again in state. The invocation journal balloons and replays slow down. | Keep journaled values small: store large payloads in object storage and journal only the reference (URL / key), not the bytes. The journal is replayed on every recovery, so large journaled values inflate memory and replay time. Pass blobs by reference between steps. [REQUIRES-VERIFICATION] for the … | Pass / FailAi Platformmedium |
How this eval is graded
Grade against expected.ideal_behavior and expected.rubric. Per-criterion pass requires mean >= 4.0 and no criterion below 3.
Rubric criteria
- Restate
- Ai Platform
- Durable Handlers And Journaling
Recommended for
Works with
Related evals
Run this eval in your workspace
Connect your data, configure thresholds, and review results with your team.