Ничего не отправляется, пока не пройдёт разбор
Перед любой отправкой NexoHub читает каждый файл.yml, .yaml, .json и .mcmeta в
nexo-data/ и разбирает его. Если хоть один из них не проходит разбор, не отправляется
вообще ничего, и ваши бэкенды остаются на последних файлах, которые разбор прошли.
sync.validate: false на прокси, хотя трудно представить,
зачем.
Для проблем в YAML указываются файл и строка. Для проблем в JSON — только файл.
Перечисляется не более 15, потому что пятьдесят сломанных файлов обычно сломаны одним и
тем же способом, и причиной, как правило, является первый.
Что эта проверка не ловит
Она проверяет, что ваши файлы читаемы, а не что они корректны.- Она не проверяет, устраивает ли Nexo содержимое файла. Аккуратный YAML-файл, указывающий несуществующий тип предмета, проходит эту проверку и всё равно падает на бэкенде.
- Проверка JSON — это минимальная планка. Она ловит пропущенную скобку или запятую. Она примет кое-что из того, что клиент Minecraft не принял бы.
- Файлы больше 32 МБ пропускаются, как и скрытые файлы и резервные копии с
~.
/nexohub status.
Проверка без отправки
Каждый отправленный набор файлов сохраняется
Снимокnexo-data/ делается всякий раз, когда ваши файлы меняются и проходят проверку.
Ничего не хранится дважды, поэтому перезапуск, /nexohub push и тронутый, но не
изменённый файл ничего не стоят.
Снимки также делаются перед двумя операциями, которые перезаписывают ваши файлы целиком:
/nexohub adopt и самим /nexohub rollback.
sync.snapshots определяет,
сколько снимков хранить, по умолчанию 20; 0 отключает историю.
Откат
Снимок содержит те же файлы, что и отправка, поэтому скрытых файлов, резервных копий с
~ и всего, что больше 64 МБ, в нём нет, и они не вернутся. Если вы храните крупные
исходники графики в nexo-data/, делайте их резервную копию и в другом месте.Сначала попробовать на одном сервере
Откат — это ответ, когда игроки уже увидели изменение. Стейджинг — ответ до того, как они его увидят.dev, удерживаются на файлах в их нынешнем виде. Редактируйте
nexo-data/, смотрите на dev и завершите одним из двух способов:
/nexohub push этого не делает и никогда не делало. Бэкенд, которому
не отправили изменение, ждёт на long poll и подтягивает то же изменение секундой позже,
поэтому единственный способ удержать правку от боевых серверов — чтобы хаб продолжал
отдавать им то, что у них уже было. Именно это и делает стейдж.
Копия делается при выполнении stage, а не при promote, поэтому запускайте стейдж до
правок. Всё, что изменено до этого, уже находится на каждом бэкенде.
Отмена тоже не разрушительна. Перед возвратом nexo-data/ делается снимок, так что
выброшенная работа всё ещё доступна в /nexohub history.
Как об этом узнать
Консоль — не то место, где большинство людей узнают, что что-то не так. Направьтеnotify на вебхук, и сбои будут приходить к вам сами:
push из этого списка, останется только то, что требует внимания. Полный
список — в конфигурации прокси.
validation_failed — тот, который стоит иметь. Файл, не прошедший разбор, не
отправляется, поэтому сеть продолжает работать и никто ничего не замечает, пока кто-то
не спросит, почему его новый предмет так и не появился.