Skip to content

ateapi crashes actors when atelet rejects a stale snapshot generation #2808

Closed

Description

@msau42

atelet's Checkpoint and PromoteSnapshot return FailedPrecondition when the requested snapshot generation is older than the actor's newest snapshot on the node (or matches it under a different snapshot UUID).

In ateapi, Checkpoint and PromoteSnapshot errors go through handleAteletError (cmd/ateapi/internal/controlapi/workflow_suspend.go), which crashes the actor via ateletErrorCrashesActor (cmd/ateapi/internal/controlapi/crash.go) on every gRPC status code except Unavailable, Canceled, and DeadlineExceeded.

A stale-generation FailedPrecondition only means ateapi's view of the actor's snapshot state is behind atelet's (for example, a late retry of generation N after generation N+1 already committed on atelet), not that the actor itself failed. ateapi should handle that stale-generation rejection without crashing the actor.

Follow-up from #2803 (comment).

Activity

  1. cloudonly commented on Oct 18, 2026

    @cloudonly
    Contributor

    I'll take this on. I plan to return Aborted for stale snapshot generations and same-generation UUID conflicts, and have ateapi report the conflict without crashing the actor. Other FailedPrecondition errors will retain their current handling; I'll add regression tests for error propagation and preserved actor/snapshot state.

  2. added a commit that references this issue on Oct 19, 2026
    da4b60e
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions