Recover A Stuck Fullnode
Use this runbook for a non-validator fullnode that is healthy at the process level but not advancing height.
Never wipe data as the first option.
1. Check Current Height
If RPC is enabled:
curl http://localhost:8545/health
curl http://localhost:8545/chain/info | jq
Local binary:
SENTRIX_DATA_DIR=./data/fullnode \
SENTRIX_ENCRYPTED_DISK=true \
./target/release/sentrix chain info
Compare the height with a trusted peer or public RPC for the same network.
2. Check Logs
Systemd:
sudo journalctl -u <fullnode-service-name> -n 300 --no-pager
Docker:
docker compose -f docker-compose.fullnode.yml --env-file .env.fullnode logs --tail=300 sentrix-fullnode
Look for:
- repeated
Invalid block; bft_tx FULL;apply_watchdog;- repeated peer dial errors;
- storage or permission errors.
3. Check Networking And Peers
Confirm the fullnode is listening:
ss -ltnp | grep -E '(:8545|:30303)'
Confirm the --peers value is current. If it is not known:
TODO: confirm current bootstrap peers for the target network.
4. Verify Disk Space
df -h
du -sh ./data/fullnode/chain.db
Low disk or a full filesystem can make the node appear stuck.
5. Verify Config And Genesis
For testnet, confirm both are true:
echo "$SENTRIX_CHAIN_ID"
test -f genesis/testnet.toml
The running command should include:
--genesis genesis/testnet.toml
For mainnet, the command should omit --genesis unless maintainers explicitly
provided a replacement genesis.
6. Safe Recovery Path
Restart only the fullnode first:
sudo systemctl restart <fullnode-service-name>
or Docker:
docker compose -f docker-compose.fullnode.yml --env-file .env.fullnode restart sentrix-fullnode
Then re-check height:
curl http://localhost:8545/chain/info | jq
If the node catches up, keep it running and continue monitoring logs.
7. Back Up Before Deeper Repair
Stop the fullnode and back up data before any deeper operation:
sudo systemctl stop <fullnode-service-name>
tar -C . -czf "$HOME/sentrix-fullnode-data-$(date -u +%Y%m%dT%H%M%SZ).tar.gz" data/fullnode
Docker:
docker compose -f docker-compose.fullnode.yml --env-file .env.fullnode stop sentrix-fullnode
tar -C . -czf "$HOME/sentrix-fullnode-data-$(date -u +%Y%m%dT%H%M%SZ).tar.gz" data/fullnode
8. Unsafe Last Resort
Deleting chain.db or the mounted data directory forces a fresh resync and
destroys local chain history/cache.
Only do this intentionally after:
- a backup exists;
- maintainers confirm the node should resync from scratch;
- current bootstrap peers are known and reachable.
Command intentionally omitted. This runbook does not recommend wiping data as a normal recovery step.