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
Suspend-from-PAUSED: support gVisor Full-capture → Data-commit conversion (blocked on #790) #817
Tracks the gVisor half of the scope-conversion gate introduced in #816 (part of #791).
Current behavior
When a PAUSED actor is suspended and the pause captured Full but the template commits Data, atelet must narrow the upload to the durable data (narrowFullCaptureToData in cmd/atelet/main.go):
micro-VM: implemented — the durable data is a single self-contained durable-dir.tar (ateompath.DurableDirTarFile), carved out of the full file set and uploaded alone.
gVisor: returns codes.Unimplemented ("gVisor cannot extract durable data from a full checkpoint yet") — a full gVisor checkpoint is a monolithic sandbox image, and durable data cannot be separated from it today. The TODO(#790) marks the branch.
Control-plane effect: a gVisor actor paused with onPause: Full under a template with onCommit: Data cannot be suspended from PAUSED — the upload fails Unimplemented and the actor stays SUSPENDING under client retries (it remains resumable). All other combinations (Full→Full, Data→Data) work on gVisor.
Unblocking work
#790 (split-checkpoint runsc / onResume.fromData phase 2) introduces gVisor checkpoints whose filesystem/durable state is separable from the sandbox image. Once a runsc release with split checkpoints ships:
Implement the SandboxClassGvisor branch of narrowFullCaptureToData (route it through the durable-data artifact the split checkpoint produces, analogous to the micro-VM durable tar).
Flip the e2e case: TestDurableDirLifecycle/"onCommit:Data, onPause:Full, suspend from PAUSED" is microVMOnly today — drop the restriction so it covers gVisor.
Re-check the pause side: onPause: Full + gVisor + onCommit: Data could then also be validated at template level if desired.
#791 (suspend a PAUSED actor) is functionally complete for micro-VM and for scope-matched gVisor suspends via #810/#812/#813/#816, but should stay open until this gap is closed.
Activity
Support suspending a PAUSED actor without waking it (#816)
HavenXia commentedon Sep 4, 2026
Fixed in #1379