Skip to content

fix(backups): verify pause and resume against the original game process - #893

Closed
Baylem wants to merge 2 commits into
GameplanePanel:masterfrom
Baylem:fix/871-durable-backup-resume
Closed

Baylem wants to merge 2 commits into
GameplanePanel:masterfrom
Baylem:fix/871-durable-backup-resume

Conversation

@Baylem

@Baylem Baylem commented Nov 11, 2026 •

Copy link
Copy Markdown
Member

Continued in upstream PR #899 at the same signed commit. Review and merge #899 for #871.

The consistency classifier and engine restore qualification remain in #870. The ARK Ascended and Project Zomboid metadata downgrade is in GameplanePanel/module#59.

Backup protocol

The operator preflights the pod-bound v2 endpoint before creating new cleanup debt. Each command sequence holds exclusive use of the agent’s RCON transport through completion or rollback. The supported Minecraft Java sequence requires the engine’s positive English reply to each command, including an already-on or already-off reply on retry. Unknown sequences return unsupported before issuing any command. Legacy agent endpoints remain available to existing callers.

The client checks the size, JSON and presence of a boolean plus its matching paused or resumed outcome. An unsupported resume, an empty reply or a contradictory state retains cleanup. The Backup and surviving GameServer owner pin the original game container. Recovery checks its identity around the resume RPC, distinguishes retirement from successful save-on, and waits for ambiguous kubelet state. An unsupported retry cannot erase an earlier pending pause.

Verification

Linux builds of the agent and operator passed locally. The changed unit packages and tagged E2E package compiled without running tests, and the staged diff passed the whitespace check. CI fixtures cover RCON rejection, rollback and serialization, canceled requests, duplicate acknowledgments, contradictory replies, operator restart and same-Pod container replacement.

The Minecraft 1.21.4 game-bot fixture creates a live Backup, waits for acknowledged save-on, writes a new command-storage marker and reads it back from disk after autonomous game ticks. No manual save or shutdown is issued after that marker. Live execution is pending CI.

Signed-off-by: Baylem <zelathis@gmail.com>
@Baylem
Baylem requested a review from ValgulNecron as a code owner November 11, 2026 01:57
@coderabbitai

coderabbitai Bot commented Nov 11, 2026 •

Copy link
Copy Markdown
Pre-merge checks: Passed 1 · Inconclusive 1

Failed Failed checks: 1 inconclusive

Check name Status Explanation Resolution
Title check Pending This assessment has not completed. The check will be retried on the next pre-merge check run.
Passed Passed checks: 1 passed

Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@Baylem Baylem added area: agent in-pod sidecar area: e2e kind-based end-to-end suite area: operator controller-runtime operator and CRDs type: fix Bug fix labels Nov 11, 2026
Signed-off-by: Baylem <zelathis@gmail.com>
@Baylem Baylem changed the title Verify backup pause and resume against the original game process fix(backups): verify pause and resume against the original game process Nov 11, 2026
@Baylem Baylem closed this Nov 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: agent in-pod sidecar area: e2e kind-based end-to-end suite area: operator controller-runtime operator and CRDs type: fix Bug fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant