Nothing is pushed until it parses
Before any push, NexoHub reads every.yml, .yaml, .json and .mcmeta under
nexo-data/ and parses it. If any of them fail, nothing is pushed at all and your
backends stay on the last files that did parse.
sync.validate: false on the proxy, though it is hard to see why you
would.
YAML problems name the file and the line. JSON problems name the file only. At most 15
are listed, because fifty broken files are usually broken in one way and the first one
is normally the cause.
What it does not catch
This checks that your files are readable, not that they are correct.- It does not check whether Nexo likes what a file says. A tidy YAML file naming an item type that does not exist passes this check and still fails on the backend.
- The JSON check is a floor. It catches a missing brace or comma. It will accept some things a Minecraft client would not.
- Files over 32 MB are skipped, along with hidden files and
~backups.
/nexohub status afterwards.
Checking without pushing
Every set of files that was pushed is kept
A snapshot ofnexo-data/ is taken whenever your files change and pass validation.
Nothing is stored twice, so a restart, a /nexohub push and a touched but unedited file
all cost nothing.
Snapshots are also taken before the two things that overwrite your files wholesale:
/nexohub adopt and /nexohub rollback itself.
sync.snapshots decides how many
to keep, 20 by default; 0 turns the history off.
Going back
A snapshot holds the same files a push does, so hidden files,
~ backups and anything
over 64 MB are not in it and will not come back. If you keep large source art in
nexo-data/, back it up somewhere else too.Trying it on one server first
Rolling back is the answer once players have seen a change. Staging is the answer before they do.dev is held on the files as they are now. Edit nexo-data/, look
at dev, and finish either way:
/nexohub push does not do this and never did. A backend that is not
pushed to is parked on a long poll and pulls the same change a second later, so the only
way to keep an edit off your live servers is for the hub to go on serving them what they
already had. That is what a stage is.
The copy is taken when you run stage, not when you promote, so stage before you edit.
Anything changed beforehand is already on every backend.
Discarding is not destructive either. A snapshot is taken before nexo-data/ is put
back, so the work you threw away is still in /nexohub history.
Hearing about it
The console is not where most people find out something is wrong. Pointnotify at a
webhook and the failures come to you:
push from that list leaves only things that need attention. The full list is
in the proxy config.
validation_failed is the one worth having. A file that does not parse is not pushed,
so the network keeps working and nobody notices until someone asks why their new item
never showed up.