Streamline multinode-demo/ restart logic (#7094)
* bootstrap-leader.sh will now restart the node automatically by default * Streamline validator restart
This commit is contained in:
parent
ef55c15537
commit
68bad56e7d
|
@ -75,6 +75,7 @@ source multinode-demo/common.sh
|
||||||
nodes=(
|
nodes=(
|
||||||
"multinode-demo/drone.sh"
|
"multinode-demo/drone.sh"
|
||||||
"multinode-demo/bootstrap-leader.sh \
|
"multinode-demo/bootstrap-leader.sh \
|
||||||
|
--no-restart \
|
||||||
--init-complete-file init-complete-node1.log \
|
--init-complete-file init-complete-node1.log \
|
||||||
--dynamic-port-range 8000-8050"
|
--dynamic-port-range 8000-8050"
|
||||||
"multinode-demo/validator.sh \
|
"multinode-demo/validator.sh \
|
||||||
|
|
|
@ -19,6 +19,8 @@ else
|
||||||
program=$solana_validator
|
program=$solana_validator
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
no_restart=0
|
||||||
|
|
||||||
args=()
|
args=()
|
||||||
while [[ -n $1 ]]; do
|
while [[ -n $1 ]]; do
|
||||||
if [[ ${1:0:1} = - ]]; then
|
if [[ ${1:0:1} = - ]]; then
|
||||||
|
@ -43,6 +45,9 @@ while [[ -n $1 ]]; do
|
||||||
elif [[ $1 = --log ]]; then
|
elif [[ $1 = --log ]]; then
|
||||||
args+=("$1" "$2")
|
args+=("$1" "$2")
|
||||||
shift 2
|
shift 2
|
||||||
|
elif [[ $1 = --no-restart ]]; then
|
||||||
|
no_restart=1
|
||||||
|
shift
|
||||||
else
|
else
|
||||||
echo "Unknown argument: $1"
|
echo "Unknown argument: $1"
|
||||||
$program --help
|
$program --help
|
||||||
|
@ -87,6 +92,46 @@ args+=(
|
||||||
default_arg --gossip-port 8001
|
default_arg --gossip-port 8001
|
||||||
default_arg --log -
|
default_arg --log -
|
||||||
|
|
||||||
set -x
|
|
||||||
# shellcheck disable=SC2086 # Don't want to double quote $program
|
|
||||||
exec $program "${args[@]}"
|
pid=
|
||||||
|
kill_node() {
|
||||||
|
# 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
|
||||||
|
}
|
||||||
|
|
||||||
|
kill_node_and_exit() {
|
||||||
|
kill_node
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
trap 'kill_node_and_exit' INT TERM ERR
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
echo "$program ${args[*]}"
|
||||||
|
$program "${args[@]}" &
|
||||||
|
pid=$!
|
||||||
|
echo "pid: $pid"
|
||||||
|
|
||||||
|
if ((no_restart)); then
|
||||||
|
wait "$pid"
|
||||||
|
exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
if [[ -z $pid ]] || ! kill -0 "$pid"; then
|
||||||
|
echo "############## validator exited, restarting ##############"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
kill_node
|
||||||
|
done
|
||||||
|
|
|
@ -278,14 +278,15 @@ setup_validator_accounts() {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rpc_url=$($solana_gossip get-rpc-url --entrypoint "$gossip_entrypoint")
|
||||||
|
|
||||||
|
[[ -r "$identity_keypair_path" ]] || $solana_keygen new -o "$identity_keypair_path"
|
||||||
|
[[ -r "$voting_keypair_path" ]] || $solana_keygen new -o "$voting_keypair_path"
|
||||||
|
[[ -r "$storage_keypair_path" ]] || $solana_keygen new -o "$storage_keypair_path"
|
||||||
|
|
||||||
|
setup_validator_accounts "$node_lamports"
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
rpc_url=$($solana_gossip get-rpc-url --entrypoint "$gossip_entrypoint")
|
|
||||||
|
|
||||||
[[ -r "$identity_keypair_path" ]] || $solana_keygen new -o "$identity_keypair_path"
|
|
||||||
[[ -r "$voting_keypair_path" ]] || $solana_keygen new -o "$voting_keypair_path"
|
|
||||||
[[ -r "$storage_keypair_path" ]] || $solana_keygen new -o "$storage_keypair_path"
|
|
||||||
|
|
||||||
setup_validator_accounts "$node_lamports"
|
|
||||||
echo "$PS4$program ${args[*]}"
|
echo "$PS4$program ${args[*]}"
|
||||||
|
|
||||||
$program "${args[@]}" &
|
$program "${args[@]}" &
|
||||||
|
@ -306,9 +307,4 @@ while true; do
|
||||||
done
|
done
|
||||||
|
|
||||||
kill_node
|
kill_node
|
||||||
# give the cluster time to come back up
|
|
||||||
(
|
|
||||||
set -x
|
|
||||||
sleep 60
|
|
||||||
)
|
|
||||||
done
|
done
|
||||||
|
|
Loading…
Reference in New Issue