SHA256
3.5 KiB
3.5 KiB
Проверка и эксплуатация Archive Publisher
Перед ночным тестом
- Новый
shine_usersуже развёрнут на том Solana-кластере, который использует сервер. - Серверный JAR собран из этого пакета.
- БД забэкаплена.
archive.publish.enabled=true.archive.publish.time=00:00.archive.publish.zoneIdсоответствует желаемой локальной полуночи.server.SHiNE.loginсоответствует root/client keys.- Arweave JWK читается пользователем процесса.
- На Arweave wallet достаточно AR.
data/archiveдоступна на запись.- В логе есть
Archive publisher включёни точное время следующего запуска.
Во время job
Нормальная последовательность логов/статусов:
SNAPSHOT_CREATED
FILE_BUILT
ARWEAVE_UPLOADED
ARWEAVE_CONFIRMED
SOLANA_SUBMITTED
SOLANA_FINALIZED
CURSORS_COMMITTED
После FILE_BUILT существует .tmp.SHiNE-archive.
После полного Arweave upload имя уже содержит настоящий TX ID.
После успешного первого job
Проверить:
find data/archive -maxdepth 1 -type f -name '*.SHiNE-archive' -ls
SELECT big_block_number, status, local_archive_path, arweave_confirmations
FROM archive_publish_job ORDER BY id DESC LIMIT 1;
SELECT count(*) AS archived_blockchains FROM archive_chain_cursor;
SELECT login, archive_head_tx_id, archive_head_hash
FROM solana_user_pda_current
WHERE login='<SERVER_LOGIN>';
Проверка второй публикации
До следующей полуночи добавить несколько новых SHiNE records только в часть blockchain. После следующего job:
- в новый big block должны попасть только изменившиеся blockchain;
- одна blockchain в новом big block должна иметь один chunk независимо от числа новых records;
- cursor blockchain, которая не изменилась, должен остаться на старом big block/chunk;
- backlink изменившегося chunk должен указывать на предыдущий chunk этой же blockchain;
- FULL reference table нового big block должна содержать все предыдущие finalized big blocks.
Crash/restart сценарии
Restart после FILE_BUILT
Должен использоваться тот же frozen job и тот же локальный файл.
Restart после ARWEAVE_UPLOADED
Не должно быть повторной оплаты/upload. Если TX сохранён, но rename не успел произойти, recovery переименует .tmp в имя с TX ID.
Restart после SOLANA_FINALIZED
При совпадении PDA head с job сервер должен только commit cursors.
Обычный сервер без публикации
Проверить отдельно:
archive.publish.enabled=false
Сервер должен запускаться без Arweave/root/client archive key files и не создавать archive_publish_job.