Direct answer
A maintenance window should have a defined start and end, a known-good backup, an owner for the change, an acceptance test and a clear rollback decision.
Recommended procedure
- List the exact JARs, plugins, configs and worlds affected. Choose a low-traffic period and communicate the expected interruption to players.
- Collect a baseline: server build, Java version, startup log, active plugins and spark measurements if performance may be affected.
- Test the proposed change on staging, then back up production during an offline or otherwise consistent snapshot window.
- Stop the running server before replacing JARs, apply the smallest documented change, restart and verify logs plus representative player actions.
java -version
/spark tps
Why this matters
Reserve time for a restore test, not just the change itself. Define in advance which symptoms trigger rollback (world errors, lost permissions or major tick regression).
How to verify the result
Run the acceptance checklist: can players connect, are worlds and inventories intact, do critical plugins work, and has MSPT remained comparable? Publish a short change summary.
Version and compatibility notes
Do not let an automated restart or update process unexpectedly race against maintenance. Use documented procedures for your hosting panel or systemd service.
Official references
Related guides
Help us improve this article
Tell us what is missing, unclear, outdated, or incorrect. You can also suggest something we should add.