Skip to content

Opt-in durability instead of Pause vs Suspend API #798

Open
1 of 2 issues completed
Open

Description

Instead of explicitly requesting Pause vs Suspend, I think applications should request Suspend with an argument specifying their tolerance, naming is hard but Durable: true or something like that, opt-in.

When applications do not specify, substrate can intelligently handle suspension, e.g. in the future it might:

  • Suspend to local disk
  • Decide not to suspend immediately due to low load
  • Automatically move snapshots between nodes p2p to rebalance
  • Decide to move the snapshot to cloud storage
  • Live migrate sandboxes

Only if you have a hard need for an immediate backup, then we should explicitly move the snapshot to cloud storage (S3, GCS, ...).

I think the current Pause vs Suspend inverts this and doesn't give a lot of room to implement things like automatically moving snapshots between machines or live-migrate microVMs

See related discussion in #660

And previously #119

Activity

  1. bowei commented on Aug 7, 2026

    @bowei
    Collaborator

    +1 DisruptionTolerance

    It might not even be a property of suspension per se... maybe it is latency insensitive, we can steal CPU from the Actor etc.

  2. BenTheElder commented on Aug 19, 2026

    @BenTheElder
    CollaboratorAuthor
  3. zlammerts-svg commented on Sep 22, 2026

    @zlammerts-svg
    Collaborator

    Dmitry Berkovich (@dberkov) are you working on this one?

  4. dberkov commented on Sep 22, 2026

    @dberkov
    Collaborator

    Yes, I do. I will share the proposal this week.

  5. zoez7 commented on Oct 2, 2026

    @zoez7
    Collaborator

    Proposed Changes for GA: PauseActor is removed from the API and SuspendActor gains an asynchronous durability mode:

    service Control {
      rpc SuspendActor(SuspendActorRequest) returns (SuspendActorResponse) {}
    }
    
    message SuspendActorRequest {
      ObjectRef actor = 1;
      SuspendActorRequestOptions options = 2;
    }
    
    message SuspendActorRequestOptions {
      UploadMode mode = 1;
    }
    
    enum UploadMode {
      UPLOAD_MODE_UNSPECIFIED = 0; // Defaults to synchronous
      UPLOAD_MODE_SYNCHRONOUS = 1;
      UPLOAD_MODE_ASYNCHRONOUS = 2;
    }
    
    message SuspendActorResponse {
      Actor actor = 1;
    }

    See detailed description in https://docs.google.com/document/d/19-8ZsIdF-J5QldhMyEam3nhJcOVcGkN6bmwrXmqtVq8/edit?resourcekey=0-jik6OvyqInUN5yQiJFkzHA&tab=t.wl9xs9ggvysx

  6. zoez7 commented on Oct 18, 2026

    @zoez7
    Collaborator

    Pause API has been removed in #2813

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area/apiUser-facing API changeskind/featureAn enhancement / feature request or implementation

Type

No type

Projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions