Repository navigation
ateapi: Record the async upload of a local snapshot - #2795
Conversation
A pause records no upload location for its snapshot, but atelet uploads it in the background to the location the pause gave it. The next pause's Checkpoint response names that upload, and ate-api-server refused it, leaving the actor SUSPENDING. ate-api-server now records the upload as COMPLETED when its location is the one ate-api-server built for that snapshot.
| return "", nil, crashActorAndFail(ctx, w.store, actorRef, ateattr.OperationSuspend, crashMessageLocalSnapshotMissing) | ||
| } | ||
| if localSnap.GetDurableSnapshot().GetStatus() == ateapipb.SnapshotStorageStatus_SNAPSHOT_STORAGE_STATUS_COMPLETED { | ||
| markSkipped(ctx, "atelet already uploaded the paused snapshot") |
There was a problem hiding this comment.
🤖 question 🟢 – Once this skips, finalize clears Locality and AssignedNode without any atelet call, so the node keeps the local copy and its tracker entry until the detach delay runs out. Its detach report then fails actorOnNode and gets NotFound. Does atelet treat that as "forget the actor", or will it retry until the deadline?
There was a problem hiding this comment.
atelet treats it as forget the actor.
There is still pending work in ateapi to adjust locality and assigned_node for SYNC mode as well as updating on detach, so this handling will change again.
| // is node-local: the revert discards that snapshot and returns the actor to | ||
| // its durable one. See isRevertable. | ||
| // is node-local: the revert discards the node-local copy and returns the actor | ||
| // to its latest durable snapshot, which is that same snapshot once atelet's |
There was a problem hiding this comment.
🤖 question 🟢 – A revert of a paused actor now returns to either the pause snapshot or the one before it, depending on whether atelet's upload landed first. A client can't predict which, and once the upload lands there is no verb left to discard the pause. Is that the intended semantics?
There was a problem hiding this comment.
Yes, currently revert is "last known good durable state". In the future, we could explore reverting to a specific snapshot/Tag.
A pause records no upload location for its snapshot, but atelet uploads it in the background to the location the pause gave it. The next pause's Checkpoint response names that upload, and ate-api-server refused it, leaving the actor SUSPENDING.
ate-api-server now records the upload as COMPLETED when its location is the one ate-api-server built for that snapshot.
Part of #2069 and #2571