You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Need a way to recover an actor from CRASHED state #1556
Today an Actor that gets into CRASHED state cannot be recovered. We should have a way to "rollback" to the latest saved snapshot and resume. There are different ways of encoding this into the API. A few options I can think of are a) an explicit RollbackActor (or RevertActor) method which flips the state back to SUSPENDED b) allow ResumeActor to just resume (this works today if we remove the precondition check for CRASHED) c) allow SuspendActor to switch from CRASHED to SUSPENDED. Others?
a variant of b) ResumeActor can resume with ResumeActorOptions {allow_crashed}?
This allows users to ack "there could be data loss", without creating a new API.
Another option is d) "crash is a terminal state, you can only create another actor from the snapshot to recover" which should be already support today with the ActorSnapshot and Tags API.
#1541 explicitly assumes that CRASHED is a terminal state. We'll need to rework the snapshot logic of crashed actors too if we add a way to recover an actor from CRASHED.
How about a RevertActor RPC? The idea is that it would reset back a CRASHED actor to SUSPENDED (to the latest external snapshot) and would also suspend a RUNNING actor and revert to the latest saved snapshot (basically suspend but don't checkpoint the state).
Activity
sfunkenhauser commentedon Sep 9, 2026
Some discussion about this on #292 as well.
zoez7 commentedon Sep 9, 2026
a variant of b) ResumeActor can resume with
ResumeActorOptions {allow_crashed}?This allows users to ack "there could be data loss", without creating a new API.
BenTheElder commentedon Sep 9, 2026
In the future we might have a "keep the partial disk state" option so probably not just "resume allow_crashed: true/false"
zoez7 commentedon Sep 9, 2026
Another option is d) "crash is a terminal state, you can only create another actor from the snapshot to recover" which should be already support today with the ActorSnapshot and Tags API.
laoj2 commentedon Sep 9, 2026
#1541 explicitly assumes that CRASHED is a terminal state. We'll need to rework the snapshot logic of crashed actors too if we add a way to recover an actor from CRASHED.
juli4n commentedon Sep 10, 2026
How about a
RevertActorRPC? The idea is that it would reset back a CRASHED actor to SUSPENDED (to the latest external snapshot) and would also suspend a RUNNING actor and revert to the latest saved snapshot (basically suspend but don't checkpoint the state).zlammerts-svg commentedon Sep 17, 2026
Can I assume we do not need Zoe for this one any more? : )
feat(api): introduce RevertActor lifecycle RPC (agent-substrate#1675)
docs: Document RevertActor and drop "terminal" from CRASHED (agent-su…
shrutiyam-glitch commentedon Sep 30, 2026
Note: As mentioned here - https://github.com/agent-substrate/substrate/blob/ce05e5d93b9a0fe6155aa3af1ff8784fff6954ff/docs/api-guide.md#revertactor - external volumes are reverted since they are not a part of the snapshot.
This issue is being tracked here - #1951