Skip to content

Atelet should not carve durable data from FULL snapshot when suspending a paused actor #1846

Closed

Description

@HavenXia

When a paused actor is suspended with onPause: FULL and onCommit: DATA, atelet takes the FULL pause snapshot and uploads only durable-dir.tar from it as the DATA snapshot.

To do that, atelet has to know the file name both ateoms write, this could leave a time bomb for the future if we change the pattern ateom writes sometime.

If atelet wants a DATA snapshot, it should take a DATA snapshot, instead of reusing the FULL snapshot and extracting from it.

Dmitry Berkovich (@dberkov) Michelle Au (@msau42) cc Benjamin Elder (@BenTheElder)

Activity

  1. HavenXia commented on Sep 24, 2026

    @HavenXia
    MemberAuthor

    nybidari do you know if gvisor can take a file system specific snapshot?
    I remembered someone told me that is being worked on before.

  2. nybidari commented on Sep 24, 2026

    @nybidari
    Collaborator

    yes, we can take a filesystem specific snapshot using the fscheckpoint command:

    func (r *runsc) cmdFsCheckpoint(ctx context.Context, containerName, checkpointPath string, durableDirMounts []string) error {

    We can use --path flag in fscheckpoint to specify which fs to snapshot. If nothing is specified it only snapshots rootfs delta.

    However, the approach taken here is to make durableDir as bind mounts and tar the filesystems. To do that we have to pause and then tar the durableDir. We need not take the full snapshot if only data snapshot is required.

  3. HavenXia commented on Sep 25, 2026

    @HavenXia
    MemberAuthor

    Thanks nybidari. To summarize what you mentioned offline: The lifecycle v2 design doesn't need durable-dir's tar/untar anymore, and gVisor can use fscheckpoint for the volumes instead. That would remove the carving this issue is about.

    For tracking:

    • Is this planned for the current milestone? I am still not sure if lifecycle v2 is scoped before GA Dmitry Berkovich (@dberkov).
    • If planned, are you going to work on it?
  4. dberkov commented on Sep 25, 2026

    @dberkov
    Collaborator

    As part of the lifecycle v2 this part needs to be redesigned.
    We are not going to have separate methods for pause and suspended with different behavior anymore.
    It will be one method and it will take one kind of snapshot (either l 3 layers or 2 layers on one layer)

  5. BenTheElder commented on Sep 28, 2026

    @BenTheElder
    Collaborator

    Those can still be built in the same internal fundamentals though. We should fix this, even if in short term gvisor needed to take a full snapshot, it can be an internal implementation detail. uVM could just pause the sandbox for consistency and grab the files or something.

    And either way, we really should not share knowledge of how durabledur is implemented, the ateom can pass along only the relevant files in the RPC list so atelet does not need to know.

    I'm rethinking having atelet in the middle following #1689 but that's a bigger change for later.

  6. HavenXia commented on Oct 1, 2026

    @HavenXia
    MemberAuthor

    The behavior has been fixed in #2028, now the data snapshot files are returned as response from ateom to atelet instead.

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

Metadata

Metadata

Labels

area/nodearea/storagekind/cleanupSmall fixes that are not bugs, for example a typo in a code comment

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions