#!/usr/bin/env bash # # Start a fullnode # here=$(dirname "$0") # shellcheck source=multinode-demo/common.sh source "$here"/common.sh # shellcheck source=scripts/oom-score-adj.sh source "$here"/../scripts/oom-score-adj.sh fullnode_usage() { if [[ -n $1 ]]; then echo "$*" echo fi cat </dev/null 2>&1 } set -e PS4="$(basename "$0"): " pid= kill_fullnode() { # Note: do not echo anything from this function to ensure $pid is actually # killed when stdout/stderr are redirected set +ex if [[ -n $pid ]]; then declare _pid=$pid pid= kill "$_pid" || true wait "$_pid" || true fi exit } trap 'kill_fullnode' INT TERM ERR if ((reset_ledger)); then echo "Resetting ledger..." ( set -x rm -rf "$state_dir" rm -rf "$ledger_config_dir" ) if [[ -d "$SOLANA_RSYNC_CONFIG_DIR"/ledger/ ]]; then cp -a "$SOLANA_RSYNC_CONFIG_DIR"/ledger/ "$ledger_config_dir" fi fi while true; do if [[ $node_type != bootstrap_leader ]] && new_genesis_block; then # If the genesis block has changed remove the now stale ledger and start all # over again ( set -x rm -rf "$ledger_config_dir" "$state_dir" "$configured_flag" ) fi if [[ $node_type = replicator ]]; then storage_pubkey=$($solana_keygen pubkey "$storage_keypair_path") setup_replicator_account "${entrypoint_address%:*}" \ "$node_lamports" cat <