Skip to content

ateapi: carry the golden actor's crash detail into template failures - #2453

Closed
Ziyi Tan (Ziy1-Tan) wants to merge 1 commit into
agent-substrate:mainfrom
Ziy1-Tan:golden-failure-detail
Closed

Ziyi Tan (Ziy1-Tan) wants to merge 1 commit into
agent-substrate:mainfrom
Ziy1-Tan:golden-failure-detail

Conversation

@Ziy1-Tan

@Ziy1-Tan Ziyi Tan (Ziy1-Tan) commented Oct 10, 2026 •

Copy link
Copy Markdown

Joins the crashed golden actor's Status.Crash.message into the template's failure message, and names the conflicting owner in the golden tag conflict failure instead of a generic string.

The golden actor's crash record names the operation and the underlying error (e.g. an atelet RPC failure), but the reconciler replaced it with a static string, so a user whose template fails only sees the generic golden actor crashed before its snapshot was taken and has to dig through worker pod logs for the actual cause. Every write path that sets ACTOR_STATE_CRASHED records a crash message, so it is joined unconditionally:

GoldenActorCrashed: golden actor crashed before its snapshot was taken: atelet ResumeActor failed: while starting pause container: while running `runsc start`: exit status 128
  • The golden tag conflict failure now reports the conflicting owner (template UID, source actor) instead of the generic string.

  • TestReconcileOne_GoldenTagConflict's exact-match subtests are updated to expect the owner-identifying message, and the crashed-actor case now asserts the crash detail lands in ErrorMessage end to end.

  • Message length stays bounded: fail() truncates at maxGoldenErrorMessageLen, and ActorCrash.message is itself capped at 4096 bytes.

  • Tests pass (go test ./cmd/ateapi/...)

  • Docs: n/a

@google-cla

google-cla Bot commented Oct 10, 2026

Copy link
Copy Markdown

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

@Ziy1-Tan

Copy link
Copy Markdown
Author

@google-cla-bot recheck

1 similar comment
@Ziy1-Tan

Copy link
Copy Markdown
Author

@google-cla-bot recheck

The golden actor's Status.Crash.message names the operation and the
underlying error (e.g. an atelet RPC failure) that moved the actor to
CRASHED, but the reconciler replaced it with a static string, so the
only user-visible signal was "golden actor crashed before its snapshot
was taken" and the actual cause stayed buried in worker pod logs. Join
the crash message into the template's failure message (every write
path that sets CRASHED records one), and name the conflicting owner in
the golden tag conflict failure instead of a generic string.
@dims

Copy link
Copy Markdown
Collaborator

overlaps with #2644 ok to go with that one?

Anna Pendleton (annapendleton) pushed a commit to annapendleton/substrate that referenced this pull request Oct 28, 2026
…us (agent-substrate#2644)

When the actor used to build a template crashes, the template status now
includes the actor's crash message. This makes failures such as a bad
image volume or failed restore visible directly on the template.

Overlaps with agent-substrate#2453, which also adds crash details to template failures.

- [x] Tests pass: `go test -race ./cmd/ateapi/internal/controlapi/`; `go
vet`.
- [x] Appropriate changes to documentation are included in the PR: none
needed.

Signed-off-by: Davanum Srinivas <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/api-machinery kind/feature An enhancement / feature request or implementation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants