solana-with-rpc-optimizations/multinode-demo/drone.sh

53 lines
1.4 KiB
Bash
Raw Normal View History

2018-06-24 10:10:55 -07:00
#!/bin/bash
#
2018-08-27 09:13:53 -07:00
# Starts an instance of solana-drone
#
# usage: $0 <rsync network path to solana repo on leader machine>
2018-06-24 10:10:55 -07:00
#
here=$(dirname "$0")
# shellcheck source=multinode-demo/common.sh
source "$here"/common.sh
SOLANA_CONFIG_DIR="$SOLANA_CONFIG_DIR"-drone
2018-06-24 10:10:55 -07:00
# shellcheck source=scripts/oom-score-adj.sh
source "$here"/../scripts/oom-score-adj.sh
2018-06-24 10:10:55 -07:00
if [[ -d "$SNAP" ]]; then
# Exit if mode is not yet configured
# (typically the case after the Snap is first installed)
[[ -n "$(snapctl get mode)" ]] || exit 0
# Select leader from the Snap configuration
leader_address="$(snapctl get leader-address)"
if [[ -z "$leader_address" ]]; then
# Assume drone is running on the same node as the leader by default
leader_address="localhost"
fi
leader="$leader_address"
2018-06-24 10:10:55 -07:00
else
2018-08-10 11:27:36 -07:00
leader=${1:-${here}/..} # Default to local tree for data
2018-06-24 10:10:55 -07:00
fi
2018-07-02 16:10:55 -07:00
[[ -f "$SOLANA_CONFIG_PRIVATE_DIR"/mint.json ]] || {
echo "$SOLANA_CONFIG_PRIVATE_DIR/mint.json not found, create it by running:"
echo
echo " ${here}/setup.sh -t leader"
exit 1
}
rsync_leader_url=$(rsync_url "$leader")
2018-06-24 10:10:55 -07:00
set -ex
2018-07-02 16:35:44 -07:00
mkdir -p "$SOLANA_CONFIG_DIR"
$rsync -vPz "$rsync_leader_url"/config/leader.json "$SOLANA_CONFIG_DIR"/
2018-06-24 10:10:55 -07:00
trap 'kill "$pid" && wait "$pid"' INT TERM
$solana_drone \
-l "$SOLANA_CONFIG_DIR"/leader.json -k "$SOLANA_CONFIG_PRIVATE_DIR"/mint.json \
--timeout 120 \
> >($drone_logger) 2>&1 &
pid=$!
oom_score_adj "$pid" 1000
wait "$pid"