Rename remaining uses of fullnode to validator (#6476)

automerge
This commit is contained in:
Greg Fitzgerald 2019-10-21 21:21:21 -06:00 committed by Grimes
parent 18feba2431
commit 3b9b9b1500
12 changed files with 139 additions and 139 deletions

View File

@ -69,7 +69,7 @@ To run a multinode testnet, after starting a leader node, spin up some additiona
$ ./multinode-demo/validator-x.sh
```
To run a performance-enhanced full node on Linux, [CUDA 10.0](https://developer.nvidia.com/cuda-downloads) must be installed on your system:
To run a performance-enhanced validator on Linux, [CUDA 10.0](https://developer.nvidia.com/cuda-downloads) must be installed on your system:
```bash
$ ./fetch-perf-libs.sh

View File

@ -188,7 +188,7 @@ The public key of a [keypair](terminology.md#keypair).
## archiver
Storage mining client, stores some part of the ledger enumerated in blocks and submits storage proofs to the chain. Not a full-node.
Storage mining client, stores some part of the ledger enumerated in blocks and submits storage proofs to the chain. Not a validator.
## root

View File

@ -5,10 +5,10 @@ cd "$(dirname "$0")"/..
source ci/upload-ci-artifact.sh
zone=
bootstrapFullNodeAddress=
bootstrapFullNodeMachineType=
bootstrapValidatorAddress=
bootstrapValidatorMachineType=
clientNodeCount=0
additionalFullNodeCount=10
additionalValidatorCount=10
publicNetwork=false
stopNetwork=false
reuseLedger=false
@ -29,7 +29,7 @@ maybeInternalNodesLamports=
maybeExternalPrimordialAccountsFile=
maybeLamports=
maybeLetsEncrypt=
maybeFullnodeAdditionalDiskSize=
maybeValidatorAdditionalDiskSize=
maybeNoSnapshot=
maybeLimitLedgerSize=
@ -54,13 +54,13 @@ Deploys a CD testnet
specified release channel (edge|beta|stable) or release tag
(vX.Y.Z)
(default: $tarChannelOrTag)
-n [number] - Number of additional full nodes (default: $additionalFullNodeCount)
-n [number] - Number of additional validators (default: $additionalValidatorCount)
-c [number] - Number of client bencher nodes (default: $clientNodeCount)
-u - Include a Blockstreamer (default: $blockstreamer)
-P - Use public network IP addresses (default: $publicNetwork)
-G - Enable GPU, and set count/type of GPUs to use (e.g n1-standard-16 --accelerator count=2,type=nvidia-tesla-v100)
-g - Enable GPU (default: $enableGpu)
-a [address] - Set the bootstrap fullnode's external IP address to this GCE address
-a [address] - Set the bootstrap validator's external IP address to this GCE address
-d [disk-type] - Specify a boot disk type (default None) Use pd-ssd to get ssd on GCE.
-D - Delete the network
-r - Reuse existing node/ledger configuration from a
@ -88,8 +88,8 @@ Deploys a CD testnet
- If set, will not fetch logs from remote nodes
--letsencrypt [dns name]
- Attempt to generate a TLS certificate using this DNS name
--fullnode-additional-disk-size-gb [number]
- Size of additional disk in GB for all fullnodes
--validator-additional-disk-size-gb [number]
- Size of additional disk in GB for all validators
--no-snapshot-fetch
- If set, disables booting validators from a snapshot
@ -128,8 +128,8 @@ while [[ -n $1 ]]; do
elif [[ $1 = --letsencrypt ]]; then
maybeLetsEncrypt="$1 $2"
shift 2
elif [[ $1 = --fullnode-additional-disk-size-gb ]]; then
maybeFullnodeAdditionalDiskSize="$1 $2"
elif [[ $1 = --validator-additional-disk-size-gb ]]; then
maybeValidatorAdditionalDiskSize="$1 $2"
shift 2
elif [[ $1 == --machine-type* ]]; then # Bypass quoted long args for GPUs
shortArgs+=("$1")
@ -167,7 +167,7 @@ while getopts "h?p:Pn:c:t:gG:a:Dd:rusxz:p:C:Sfe" opt "${shortArgs[@]}"; do
publicNetwork=true
;;
n)
additionalFullNodeCount=$OPTARG
additionalValidatorCount=$OPTARG
;;
c)
clientNodeCount=$OPTARG
@ -187,10 +187,10 @@ while getopts "h?p:Pn:c:t:gG:a:Dd:rusxz:p:C:Sfe" opt "${shortArgs[@]}"; do
;;
G)
enableGpu=true
bootstrapFullNodeMachineType=$OPTARG
bootstrapValidatorMachineType=$OPTARG
;;
a)
bootstrapFullNodeAddress=$OPTARG
bootstrapValidatorAddress=$OPTARG
;;
d)
bootDiskType=$OPTARG
@ -275,9 +275,9 @@ if ! $skipCreate; then
echo "--- $cloudProvider.sh create"
create_args=(
-p "$netName"
-a "$bootstrapFullNodeAddress"
-a "$bootstrapValidatorAddress"
-c "$clientNodeCount"
-n "$additionalFullNodeCount"
-n "$additionalValidatorCount"
--dedicated
)
# shellcheck disable=SC2206
@ -297,10 +297,10 @@ if ! $skipCreate; then
fi
if $enableGpu; then
if [[ -z $bootstrapFullNodeMachineType ]]; then
if [[ -z $bootstrapValidatorMachineType ]]; then
create_args+=(-g)
else
create_args+=(-G "$bootstrapFullNodeMachineType")
create_args+=(-G "$bootstrapValidatorMachineType")
fi
fi
@ -316,9 +316,9 @@ if ! $skipCreate; then
create_args+=(-f)
fi
if [[ -n $maybeFullnodeAdditionalDiskSize ]]; then
if [[ -n $maybeValidatorAdditionalDiskSize ]]; then
# shellcheck disable=SC2206 # Do not want to quote
create_args+=($maybeFullnodeAdditionalDiskSize)
create_args+=($maybeValidatorAdditionalDiskSize)
fi
time net/"$cloudProvider".sh create "${create_args[@]}"

View File

@ -114,7 +114,7 @@ GCE_ZONES=(
europe-west4-c
)
# GCE zones with enough quota for one CPU-only fullnode
# GCE zones with enough quota for one CPU-only validator
GCE_LOW_QUOTA_ZONES=(
asia-east2-a
asia-northeast1-b
@ -515,11 +515,11 @@ deploy() {
fi
if [[ -z $ADDITIONAL_DISK_SIZE_GB ]]; then
maybeAdditionalDisk="--fullnode-additional-disk-size-gb 32000"
maybeAdditionalDisk="--validator-additional-disk-size-gb 32000"
elif [[ $ADDITIONAL_DISK_SIZE_GB == skip ]]; then
maybeAdditionalDisk=""
else
maybeAdditionalDisk="--fullnode-additional-disk-size-gb ${ADDITIONAL_DISK_SIZE_GB}"
maybeAdditionalDisk="--validator-additional-disk-size-gb ${ADDITIONAL_DISK_SIZE_GB}"
fi

View File

@ -29,9 +29,9 @@ sshPrivateKey=
letsEncryptDomainName=
externalNodeSshKey=
sshOptions=()
fullnodeIpList=()
fullnodeIpListPrivate=()
fullnodeIpListZone=()
validatorIpList=()
validatorIpListPrivate=()
validatorIpListZone=()
clientIpList=()
clientIpListPrivate=()
clientIpListZone=()
@ -64,14 +64,14 @@ loadConfigFile() {
[[ -n "$publicNetwork" ]] || usage "Config file invalid, publicNetwork unspecified: $configFile"
[[ -n "$netBasename" ]] || usage "Config file invalid, netBasename unspecified: $configFile"
[[ -n $sshPrivateKey ]] || usage "Config file invalid, sshPrivateKey unspecified: $configFile"
[[ ${#fullnodeIpList[@]} -gt 0 ]] || usage "Config file invalid, fullnodeIpList unspecified: $configFile"
[[ ${#fullnodeIpListPrivate[@]} -gt 0 ]] || usage "Config file invalid, fullnodeIpListPrivate unspecified: $configFile"
[[ ${#fullnodeIpList[@]} -eq ${#fullnodeIpListPrivate[@]} ]] || usage "Config file invalid, fullnodeIpList/fullnodeIpListPrivate length mismatch: $configFile"
[[ ${#validatorIpList[@]} -gt 0 ]] || usage "Config file invalid, validatorIpList unspecified: $configFile"
[[ ${#validatorIpListPrivate[@]} -gt 0 ]] || usage "Config file invalid, validatorIpListPrivate unspecified: $configFile"
[[ ${#validatorIpList[@]} -eq ${#validatorIpListPrivate[@]} ]] || usage "Config file invalid, validatorIpList/validatorIpListPrivate length mismatch: $configFile"
if $publicNetwork; then
entrypointIp=${fullnodeIpList[0]}
entrypointIp=${validatorIpList[0]}
else
entrypointIp=${fullnodeIpListPrivate[0]}
entrypointIp=${validatorIpListPrivate[0]}
fi
buildSshOptions

View File

@ -15,7 +15,7 @@ gce)
cpuBootstrapLeaderMachineType="--custom-cpu 12 --custom-memory 32GB --min-cpu-platform Intel%20Skylake"
gpuBootstrapLeaderMachineType="$cpuBootstrapLeaderMachineType --accelerator count=1,type=nvidia-tesla-p100"
bootstrapLeaderMachineType=$cpuBootstrapLeaderMachineType
fullNodeMachineType=$cpuBootstrapLeaderMachineType
validatorMachineType=$cpuBootstrapLeaderMachineType
clientMachineType="--custom-cpu 16 --custom-memory 20GB"
blockstreamerMachineType="--machine-type n1-standard-8"
archiverMachineType="--custom-cpu 4 --custom-memory 16GB"
@ -31,7 +31,7 @@ ec2)
# AVX-512
gpuBootstrapLeaderMachineType=p2.xlarge
bootstrapLeaderMachineType=$cpuBootstrapLeaderMachineType
fullNodeMachineType=$cpuBootstrapLeaderMachineType
validatorMachineType=$cpuBootstrapLeaderMachineType
clientMachineType=c5.2xlarge
blockstreamerMachineType=c5.2xlarge
archiverMachineType=c5.xlarge
@ -44,7 +44,7 @@ azure)
cpuBootstrapLeaderMachineType=Standard_D16s_v3
gpuBootstrapLeaderMachineType=Standard_NC12
bootstrapLeaderMachineType=$cpuBootstrapLeaderMachineType
fullNodeMachineType=$cpuBootstrapLeaderMachineType
validatorMachineType=$cpuBootstrapLeaderMachineType
clientMachineType=Standard_D16s_v3
blockstreamerMachineType=Standard_D16s_v3
archiverMachineType=Standard_D4s_v3
@ -56,7 +56,7 @@ colo)
cpuBootstrapLeaderMachineType=0
gpuBootstrapLeaderMachineType=1
bootstrapLeaderMachineType=$cpuBootstrapLeaderMachineType
fullNodeMachineType=$cpuBootstrapLeaderMachineType
validatorMachineType=$cpuBootstrapLeaderMachineType
clientMachineType=0
blockstreamerMachineType=0
archiverMachineType=0
@ -68,14 +68,14 @@ esac
prefix=testnet-dev-${USER//[^A-Za-z0-9]/}
additionalFullNodeCount=2
additionalValidatorCount=2
clientNodeCount=0
archiverNodeCount=0
blockstreamer=false
fullNodeBootDiskSizeInGb=500
validatorBootDiskSizeInGb=500
clientBootDiskSizeInGb=75
archiverBootDiskSizeInGb=500
fullNodeAdditionalDiskSizeInGb=
validatorAdditionalDiskSizeInGb=
externalNodes=false
failOnValidatorBootupFailure=true
preemptible=true
@ -114,7 +114,7 @@ Manage testnet instances
-p [prefix] - Optional common prefix for instance names to avoid
collisions (default: $prefix)
-z [zone] - Zone(s) for the nodes (default: $(cloud_DefaultZone))
If specified multiple times, the fullnodes will be evenly
If specified multiple times, the validators will be evenly
distributed over all specified zones and
client/blockstreamer nodes will be created in the first
zone
@ -125,7 +125,7 @@ Manage testnet instances
successfully
create-specific options:
-n [number] - Number of additional fullnodes (default: $additionalFullNodeCount)
-n [number] - Number of additional validators (default: $additionalValidatorCount)
-c [number] - Number of client nodes (default: $clientNodeCount)
-r [number] - Number of archiver nodes (default: $archiverNodeCount)
-u - Include a Blockstreamer (default: $blockstreamer)
@ -134,7 +134,7 @@ Manage testnet instances
-G - Enable GPU, and set count/type of GPUs to use
(e.g $gpuBootstrapLeaderMachineType)
-a [address] - Address to be be assigned to the Blockstreamer if present,
otherwise the bootstrap fullnode.
otherwise the bootstrap validator.
* For GCE, [address] is the "name" of the desired External
IP Address.
* For EC2, [address] is the "allocation ID" of the desired
@ -143,11 +143,11 @@ Manage testnet instances
--letsencrypt [dns name] - Attempt to generate a TLS certificate using this
DNS name (useful only when the -a and -P options
are also provided)
--fullnode-additional-disk-size-gb [number]
- Add an additional [number] GB SSD to all fullnodes to store the config directory.
--validator-additional-disk-size-gb [number]
- Add an additional [number] GB SSD to all validators to store the config directory.
If not set, config will be written to the boot disk by default.
Only supported on GCE.
--dedicated - Use dedicated instances for additional full nodes
--dedicated - Use dedicated instances for additional validators
(by default preemptible instances are used to reduce
cost). Note that the bootstrap leader, archiver,
blockstreamer and client nodes are always dedicated.
@ -177,8 +177,8 @@ while [[ -n $1 ]]; do
if [[ $1 = --letsencrypt ]]; then
letsEncryptDomainName="$2"
shift 2
elif [[ $1 = --fullnode-additional-disk-size-gb ]]; then
fullNodeAdditionalDiskSizeInGb="$2"
elif [[ $1 = --validator-additional-disk-size-gb ]]; then
validatorAdditionalDiskSizeInGb="$2"
shift 2
elif [[ $1 == --machine-type* || $1 == --custom-cpu* ]]; then # Bypass quoted long args for GPUs
shortArgs+=("$1")
@ -211,7 +211,7 @@ while getopts "h?p:Pn:c:r:z:gG:a:d:uxf" opt "${shortArgs[@]}"; do
publicNetwork=true
;;
n)
additionalFullNodeCount=$OPTARG
additionalValidatorCount=$OPTARG
;;
c)
clientNodeCount=$OPTARG
@ -225,13 +225,13 @@ while getopts "h?p:Pn:c:r:z:gG:a:d:uxf" opt "${shortArgs[@]}"; do
g)
enableGpu=true
bootstrapLeaderMachineType=$gpuBootstrapLeaderMachineType
fullNodeMachineType=$bootstrapLeaderMachineType
validatorMachineType=$bootstrapLeaderMachineType
blockstreamerMachineType=$bootstrapLeaderMachineType
;;
G)
enableGpu=true
bootstrapLeaderMachineType="$OPTARG"
fullNodeMachineType=$bootstrapLeaderMachineType
validatorMachineType=$bootstrapLeaderMachineType
blockstreamerMachineType=$bootstrapLeaderMachineType
;;
a)
@ -268,8 +268,8 @@ case $cloudProvider in
gce)
;;
ec2|azure|colo)
if [[ -n $fullNodeAdditionalDiskSizeInGb ]] ; then
usage "Error: --fullnode-additional-disk-size-gb currently only supported with cloud provider: gce"
if [[ -n $validatorAdditionalDiskSizeInGb ]] ; then
usage "Error: --validator-additional-disk-size-gb currently only supported with cloud provider: gce"
fi
;;
*)
@ -492,16 +492,16 @@ EOF
exit 1
}
echo "fullnodeIpList=()" >> "$configFile"
echo "fullnodeIpListPrivate=()" >> "$configFile"
cloud_ForEachInstance recordInstanceIp true fullnodeIpList
echo "validatorIpList=()" >> "$configFile"
echo "validatorIpListPrivate=()" >> "$configFile"
cloud_ForEachInstance recordInstanceIp true validatorIpList
fi
if [[ $additionalFullNodeCount -gt 0 ]]; then
if [[ $additionalValidatorCount -gt 0 ]]; then
numZones=${#zones[@]}
if [[ $additionalFullNodeCount -gt $numZones ]]; then
numNodesPerZone=$((additionalFullNodeCount / numZones))
numLeftOverNodes=$((additionalFullNodeCount % numZones))
if [[ $additionalValidatorCount -gt $numZones ]]; then
numNodesPerZone=$((additionalValidatorCount / numZones))
numLeftOverNodes=$((additionalValidatorCount % numZones))
else
numNodesPerZone=1
numLeftOverNodes=0
@ -512,13 +512,13 @@ EOF
if [[ $i -eq 0 ]]; then
numNodesPerZone=$((numNodesPerZone + numLeftOverNodes))
fi
echo "Looking for additional fullnode instances in $zone ..."
cloud_FindInstances "$prefix-$zone-fullnode"
echo "Looking for additional validator instances in $zone ..."
cloud_FindInstances "$prefix-$zone-validator"
declare numInstances=${#instances[@]}
if [[ $numInstances -ge $numNodesPerZone || ( ! $failOnValidatorBootupFailure && $numInstances -gt 0 ) ]]; then
cloud_ForEachInstance recordInstanceIp "$failOnValidatorBootupFailure" fullnodeIpList
cloud_ForEachInstance recordInstanceIp "$failOnValidatorBootupFailure" validatorIpList
else
echo "Unable to find additional fullnodes"
echo "Unable to find additional validators"
if $failOnValidatorBootupFailure; then
exit 1
fi
@ -600,7 +600,7 @@ delete)
;;
create)
[[ -n $additionalFullNodeCount ]] || usage "Need number of nodes"
[[ -n $additionalValidatorCount ]] || usage "Need number of nodes"
delete
@ -619,7 +619,7 @@ create)
cat <<EOF
==[ Network composition ]===============================================================
Bootstrap leader = $bootstrapLeaderMachineType (GPU=$enableGpu)
Additional fullnodes = $additionalFullNodeCount x $fullNodeMachineType
Additional validators = $additionalValidatorCount x $validatorMachineType
Client(s) = $clientNodeCount x $clientMachineType
Archivers(s) = $archiverNodeCount x $archiverMachineType
Blockstreamer = $blockstreamer
@ -706,7 +706,7 @@ $(
cat enable-nvidia-persistence-mode.sh
fi
if [[ -n $fullNodeAdditionalDiskSizeInGb ]]; then
if [[ -n $validatorAdditionalDiskSizeInGb ]]; then
cat mount-additional-disk.sh
fi
)
@ -734,16 +734,16 @@ EOF
echo "Bootstrap leader is already configured"
else
cloud_CreateInstances "$prefix" "$prefix-bootstrap-leader" 1 \
"$enableGpu" "$bootstrapLeaderMachineType" "${zones[0]}" "$fullNodeBootDiskSizeInGb" \
"$startupScript" "$bootstrapLeaderAddress" "$bootDiskType" "$fullNodeAdditionalDiskSizeInGb" \
"$enableGpu" "$bootstrapLeaderMachineType" "${zones[0]}" "$validatorBootDiskSizeInGb" \
"$startupScript" "$bootstrapLeaderAddress" "$bootDiskType" "$validatorAdditionalDiskSizeInGb" \
"never preemptible" "$sshPrivateKey"
fi
if [[ $additionalFullNodeCount -gt 0 ]]; then
if [[ $additionalValidatorCount -gt 0 ]]; then
num_zones=${#zones[@]}
if [[ $additionalFullNodeCount -gt $num_zones ]]; then
numNodesPerZone=$((additionalFullNodeCount / num_zones))
numLeftOverNodes=$((additionalFullNodeCount % num_zones))
if [[ $additionalValidatorCount -gt $num_zones ]]; then
numNodesPerZone=$((additionalValidatorCount / num_zones))
numLeftOverNodes=$((additionalValidatorCount % num_zones))
else
numNodesPerZone=1
numLeftOverNodes=0
@ -754,9 +754,9 @@ EOF
if [[ $i -eq 0 ]]; then
numNodesPerZone=$((numNodesPerZone + numLeftOverNodes))
fi
cloud_CreateInstances "$prefix" "$prefix-$zone-fullnode" "$numNodesPerZone" \
"$enableGpu" "$fullNodeMachineType" "$zone" "$fullNodeBootDiskSizeInGb" \
"$startupScript" "" "$bootDiskType" "$fullNodeAdditionalDiskSizeInGb" \
cloud_CreateInstances "$prefix" "$prefix-$zone-validator" "$numNodesPerZone" \
"$enableGpu" "$validatorMachineType" "$zone" "$validatorBootDiskSizeInGb" \
"$startupScript" "" "$bootDiskType" "$validatorAdditionalDiskSizeInGb" \
"$preemptible" "$sshPrivateKey" &
done
@ -771,7 +771,7 @@ EOF
if $blockstreamer; then
cloud_CreateInstances "$prefix" "$prefix-blockstreamer" "1" \
"$enableGpu" "$blockstreamerMachineType" "${zones[0]}" "$fullNodeBootDiskSizeInGb" \
"$enableGpu" "$blockstreamerMachineType" "${zones[0]}" "$validatorBootDiskSizeInGb" \
"$startupScript" "$blockstreamerAddress" "$bootDiskType" "" "$sshPrivateKey"
fi
@ -802,12 +802,12 @@ info)
printNode "Node Type" "Public IP" "Private IP" "Zone"
echo "-------------------+-----------------+-----------------+--------------"
nodeType=bootstrap-leader
for i in $(seq 0 $(( ${#fullnodeIpList[@]} - 1)) ); do
ipAddress=${fullnodeIpList[$i]}
ipAddressPrivate=${fullnodeIpListPrivate[$i]}
zone=${fullnodeIpListZone[$i]}
for i in $(seq 0 $(( ${#validatorIpList[@]} - 1)) ); do
ipAddress=${validatorIpList[$i]}
ipAddressPrivate=${validatorIpListPrivate[$i]}
zone=${validatorIpListZone[$i]}
printNode $nodeType "$ipAddress" "$ipAddressPrivate" "$zone"
nodeType=fullnode
nodeType=validator
done
for i in $(seq 0 $(( ${#clientIpList[@]} - 1)) ); do

View File

@ -48,7 +48,7 @@ Operate a configured testnet
-c bench-tps=2="--tx_count 25000"
This will start 2 bench-tps clients, and supply "--tx_count 25000"
to the bench-tps client.
-n NUM_FULL_NODES - Number of fullnodes to apply command to.
-n NUM_VALIDATORS - Number of validators to apply command to.
--gpu-mode GPU_MODE - Specify GPU mode to launch validators with (default: $gpuMode).
MODE must be one of
on - GPU *required*, any vendor *
@ -124,7 +124,7 @@ benchTpsExtraArgs=
benchExchangeExtraArgs=
failOnValidatorBootupFailure=true
genesisOptions=
numFullnodesRequested=
numValidatorsRequested=
externalPrimordialAccountsFile=
remoteExternalPrimordialAccountsFile=
internalNodesStakeLamports=
@ -235,7 +235,7 @@ while getopts "h?T:t:o:f:rD:c:Fn:i:d" opt "${shortArgs[@]}"; do
esac
;;
n)
numFullnodesRequested=$OPTARG
numValidatorsRequested=$OPTARG
;;
r)
skipSetup=true
@ -303,10 +303,10 @@ done
loadConfigFile
if [[ -n $numFullnodesRequested ]]; then
truncatedNodeList=( "${fullnodeIpList[@]:0:$numFullnodesRequested}" )
unset fullnodeIpList
fullnodeIpList=( "${truncatedNodeList[@]}" )
if [[ -n $numValidatorsRequested ]]; then
truncatedNodeList=( "${validatorIpList[@]:0:$numValidatorsRequested}" )
unset validatorIpList
validatorIpList=( "${truncatedNodeList[@]}" )
fi
numClients=${#clientIpList[@]}
@ -401,7 +401,7 @@ startBootstrapLeader() {
echo "--- Starting bootstrap leader: $ipAddress"
echo "start log: $logFile"
# Deploy local binaries to bootstrap fullnode. Other fullnodes and clients later fetch the
# Deploy local binaries to bootstrap validator. Other validators and clients later fetch the
# binaries from it
(
set -x
@ -429,7 +429,7 @@ startBootstrapLeader() {
$deployMethod \
bootstrap-leader \
$entrypointIp \
$((${#fullnodeIpList[@]} + ${#blockstreamerIpList[@]} + ${#archiverIpList[@]})) \
$((${#validatorIpList[@]} + ${#blockstreamerIpList[@]} + ${#archiverIpList[@]})) \
\"$RUST_LOG\" \
$skipSetup \
$failOnValidatorBootupFailure \
@ -455,7 +455,7 @@ startNode() {
declare ipAddress=$1
declare nodeType=$2
declare nodeIndex="$3"
declare logFile="$netLogDir/fullnode-$ipAddress.log"
declare logFile="$netLogDir/validator-$ipAddress.log"
if [[ -z $nodeType ]]; then
echo nodeType not specified
@ -494,7 +494,7 @@ startNode() {
$deployMethod \
$nodeType \
$entrypointIp \
$((${#fullnodeIpList[@]} + ${#blockstreamerIpList[@]} + ${#archiverIpList[@]})) \
$((${#validatorIpList[@]} + ${#blockstreamerIpList[@]} + ${#archiverIpList[@]})) \
\"$RUST_LOG\" \
$skipSetup \
$failOnValidatorBootupFailure \
@ -511,7 +511,7 @@ startNode() {
"
) >> "$logFile" 2>&1 &
declare pid=$!
ln -sf "fullnode-$ipAddress.log" "$netLogDir/fullnode-$pid.log"
ln -sf "validator-$ipAddress.log" "$netLogDir/validator-$pid.log"
pids+=("$pid")
}
@ -541,7 +541,7 @@ sanity() {
$metricsWriteDatapoint "testnet-deploy net-sanity-begin=1"
declare ok=true
declare bootstrapLeader=${fullnodeIpList[0]}
declare bootstrapLeader=${validatorIpList[0]}
declare blockstreamer=${blockstreamerIpList[0]}
annotateBlockexplorerUrl
@ -581,7 +581,7 @@ deployUpdate() {
fi
declare ok=true
declare bootstrapLeader=${fullnodeIpList[0]}
declare bootstrapLeader=${validatorIpList[0]}
for updatePlatform in $updatePlatforms; do
echo "--- Deploying solana-install update: $updatePlatform"
@ -610,7 +610,7 @@ getNodeType() {
nodeIndex=0 # <-- global
nodeType=validator # <-- global
for ipAddress in "${fullnodeIpList[@]}" b "${blockstreamerIpList[@]}" r "${archiverIpList[@]}"; do
for ipAddress in "${validatorIpList[@]}" b "${blockstreamerIpList[@]}" r "${archiverIpList[@]}"; do
if [[ $ipAddress = b ]]; then
nodeType=blockstreamer
continue
@ -673,7 +673,7 @@ prepare_deploy() {
echo "Fetching current software version"
(
set -x
rsync -vPrc -e "ssh ${sshOptions[*]}" "${fullnodeIpList[0]}":~/version.yml current-version.yml
rsync -vPrc -e "ssh ${sshOptions[*]}" "${validatorIpList[0]}":~/version.yml current-version.yml
)
cat current-version.yml
if ! diff -q current-version.yml "$SOLANA_ROOT"/solana-release/version.yml; then
@ -690,7 +690,7 @@ deploy() {
$metricsWriteDatapoint "testnet-deploy net-start-begin=1"
declare bootstrapLeader=true
for nodeAddress in "${fullnodeIpList[@]}" "${blockstreamerIpList[@]}" "${archiverIpList[@]}"; do
for nodeAddress in "${validatorIpList[@]}" "${blockstreamerIpList[@]}" "${archiverIpList[@]}"; do
nodeType=
nodeIndex=
getNodeType
@ -721,8 +721,8 @@ deploy() {
declare ok=true
wait "$pid" || ok=false
if ! $ok; then
echo "+++ fullnode failed to start"
cat "$netLogDir/fullnode-$pid.log"
echo "+++ validator failed to start"
cat "$netLogDir/validator-$pid.log"
if $failOnValidatorBootupFailure; then
exit 1
else
@ -731,7 +731,7 @@ deploy() {
fi
done
$metricsWriteDatapoint "testnet-deploy net-fullnodes-started=1"
$metricsWriteDatapoint "testnet-deploy net-validators-started=1"
additionalNodeDeployTime=$SECONDS
annotateBlockexplorerUrl
@ -775,7 +775,7 @@ deploy() {
echo
echo "+++ Deployment Successful"
echo "Bootstrap leader deployment took $bootstrapNodeDeployTime seconds"
echo "Additional fullnode deployment (${#fullnodeIpList[@]} full nodes, ${#blockstreamerIpList[@]} blockstreamer nodes, ${#archiverIpList[@]} archivers) took $additionalNodeDeployTime seconds"
echo "Additional validator deployment (${#validatorIpList[@]} validators, ${#blockstreamerIpList[@]} blockstreamer nodes, ${#archiverIpList[@]} archivers) took $additionalNodeDeployTime seconds"
echo "Client deployment (${#clientIpList[@]} instances) took $clientDeployTime seconds"
echo "Network start logs in $netLogDir"
}
@ -784,7 +784,7 @@ deploy() {
stopNode() {
local ipAddress=$1
local block=$2
declare logFile="$netLogDir/stop-fullnode-$ipAddress.log"
declare logFile="$netLogDir/stop-validator-$ipAddress.log"
echo "--- Stopping node: $ipAddress"
echo "stop log: $logFile"
(
@ -807,7 +807,7 @@ stopNode() {
) >> "$logFile" 2>&1 &
declare pid=$!
ln -sf "stop-fullnode-$ipAddress.log" "$netLogDir/stop-fullnode-$pid.log"
ln -sf "stop-validator-$ipAddress.log" "$netLogDir/stop-validator-$pid.log"
if $block; then
wait $pid
else
@ -821,7 +821,7 @@ stop() {
declare loopCount=0
pids=()
for ipAddress in "${fullnodeIpList[@]}" "${blockstreamerIpList[@]}" "${archiverIpList[@]}" "${clientIpList[@]}"; do
for ipAddress in "${validatorIpList[@]}" "${blockstreamerIpList[@]}" "${archiverIpList[@]}" "${clientIpList[@]}"; do
stopNode "$ipAddress" false
# Stagger additional node stop time to avoid too many concurrent ssh
@ -842,13 +842,13 @@ stop() {
checkPremptibleInstances() {
# The fullnodeIpList nodes may be preemptible instances that can disappear at
# any time. Try to detect when a fullnode has been preempted to help the user
# The validatorIpList nodes may be preemptible instances that can disappear at
# any time. Try to detect when a validator has been preempted to help the user
# out.
#
# Of course this isn't airtight as an instance could always disappear
# immediately after its successfully pinged.
for ipAddress in "${fullnodeIpList[@]}"; do
for ipAddress in "${validatorIpList[@]}"; do
(
set -x
timeout 5s ping -c 1 "$ipAddress" | tr - _
@ -913,18 +913,18 @@ logs)
"$ipAddress":solana/"$log".log "$netLogDir"/remote-"$log"-"$ipAddress".log
) || echo "failed to fetch log"
}
fetchRemoteLog "${fullnodeIpList[0]}" drone
for ipAddress in "${fullnodeIpList[@]}"; do
fetchRemoteLog "$ipAddress" fullnode
fetchRemoteLog "${validatorIpList[0]}" drone
for ipAddress in "${validatorIpList[@]}"; do
fetchRemoteLog "$ipAddress" validator
done
for ipAddress in "${clientIpList[@]}"; do
fetchRemoteLog "$ipAddress" client
done
for ipAddress in "${blockstreamerIpList[@]}"; do
fetchRemoteLog "$ipAddress" fullnode
fetchRemoteLog "$ipAddress" validator
done
for ipAddress in "${archiverIpList[@]}"; do
fetchRemoteLog "$ipAddress" fullnode
fetchRemoteLog "$ipAddress" validator
done
;;

View File

@ -1,7 +1,7 @@
#!/usr/bin/env bash
set -e
#
# This script is to be run on the bootstrap full node
# This script is to be run on the bootstrap validator
#
cd "$(dirname "$0")"/../..

View File

@ -72,7 +72,7 @@ cd ~/solana
source scripts/oom-score-adj.sh
now=\$(date -u +"%Y-%m-%dT%H:%M:%SZ")
ln -sfT fullnode.log.\$now fullnode.log
ln -sfT validator.log.\$now validator.log
EOF
chmod +x ~/solana/on-reboot
echo "@reboot ~/solana/on-reboot" | crontab -
@ -155,11 +155,11 @@ EOF
setup_secondary_mount
if [[ -n $internalNodesLamports ]]; then
echo "---" >> config/fullnode-balances.yml
echo "---" >> config/validator-balances.yml
for i in $(seq 0 "$numNodes"); do
solana-keygen new -o config/fullnode-"$i"-identity.json
pubkey="$(solana-keygen pubkey config/fullnode-"$i"-identity.json)"
cat >> config/fullnode-balances.yml <<EOF
solana-keygen new -o config/validator-"$i"-identity.json
pubkey="$(solana-keygen pubkey config/validator-"$i"-identity.json)"
cat >> config/validator-balances.yml <<EOF
$pubkey:
balance: $internalNodesLamports
owner: 11111111111111111111111111111111
@ -195,10 +195,10 @@ EOF
echo "" >> config/client-accounts.yml
done
if [[ -f $externalPrimordialAccountsFile ]]; then
cat "$externalPrimordialAccountsFile" >> config/fullnode-balances.yml
cat "$externalPrimordialAccountsFile" >> config/validator-balances.yml
fi
if [[ -f config/fullnode-balances.yml ]]; then
genesisOptions+=" --primordial-accounts-file config/fullnode-balances.yml"
if [[ -f config/validator-balances.yml ]]; then
genesisOptions+=" --primordial-accounts-file config/validator-balances.yml"
fi
if [[ -f config/client-accounts.yml ]]; then
genesisOptions+=" --primordial-keypairs-file config/client-accounts.yml"
@ -228,7 +228,7 @@ EOF
args+=($extraNodeArgs)
cat >> ~/solana/on-reboot <<EOF
nohup ./multinode-demo/bootstrap-leader.sh ${args[@]} > fullnode.log.\$now 2>&1 &
nohup ./multinode-demo/bootstrap-leader.sh ${args[@]} > validator.log.\$now 2>&1 &
pid=\$!
oom_score_adj "\$pid" 1000
disown
@ -251,7 +251,7 @@ EOF
clear_config_dir "$SOLANA_CONFIG_DIR"
setup_secondary_mount
[[ -z $internalNodesLamports ]] || net/scripts/rsync-retry.sh -vPrc \
"$entrypointIp":~/solana/config/fullnode-"$nodeIndex"-identity.json config/fullnode-identity.json
"$entrypointIp":~/solana/config/validator-"$nodeIndex"-identity.json config/validator-identity.json
fi
args=(
@ -271,10 +271,10 @@ EOF
fi
fi
if [[ ! -f config/fullnode-identity.json ]]; then
solana-keygen new -o config/fullnode-identity.json
if [[ ! -f config/validator-identity.json ]]; then
solana-keygen new -o config/validator-identity.json
fi
args+=(--identity config/fullnode-identity.json)
args+=(--identity config/validator-identity.json)
if [[ $airdropsEnabled != true ]]; then
args+=(--no-airdrop)
@ -337,7 +337,7 @@ EOF
# shellcheck disable=SC2206 # Don't want to double quote $extraNodeArgs
args+=($extraNodeArgs)
cat >> ~/solana/on-reboot <<EOF
nohup multinode-demo/validator.sh ${args[@]} > fullnode.log.\$now 2>&1 &
nohup multinode-demo/validator.sh ${args[@]} > validator.log.\$now 2>&1 &
pid=\$!
oom_score_adj "\$pid" 1000
disown
@ -354,8 +354,8 @@ EOF
if [[ $airdropsEnabled != true ]]; then
args+=(--no-airdrop)
fi
if [[ -f config/fullnode-identity.json ]]; then
args+=(--keypair config/fullnode-identity.json)
if [[ -f config/validator-identity.json ]]; then
args+=(--keypair config/validator-identity.json)
fi
multinode-demo/delegate-stake.sh "${args[@]}"
@ -363,7 +363,7 @@ EOF
if [[ $skipSetup != true ]]; then
solana --url http://"$entrypointIp":8899 \
--keypair config/fullnode-identity.json \
--keypair config/validator-identity.json \
validator-info publish "$(hostname)" -n team/solana --force || true
fi
;;
@ -384,7 +384,7 @@ EOF
fi
cat >> ~/solana/on-reboot <<EOF
nohup multinode-demo/archiver.sh ${args[@]} > fullnode.log.\$now 2>&1 &
nohup multinode-demo/archiver.sh ${args[@]} > validator.log.\$now 2>&1 &
pid=\$!
oom_score_adj "\$pid" 1000
disown

View File

@ -1,7 +1,7 @@
#!/usr/bin/env bash
set -e
#
# This script is to be run on the bootstrap full node
# This script is to be run on the bootstrap validator
#
cd "$(dirname "$0")"/../..

View File

@ -180,7 +180,7 @@ colo_node_status_all() {
# TODO: As part of COLO_TOOD_PARALLELIZE this list will need to be maintained
# in a lockfile to work around `cloud_CreateInstance` being called in the
# background for fullnodes
# background for validators
export COLO_RES_REQUISITIONED=()
colo_node_requisition() {
declare IP=$1

View File

@ -49,9 +49,9 @@ printNode() {
printf " %-25s | For logs run: $0 $ip tail -f solana/$nodeType.log\n" "$0 $ip"
}
echo Full nodes:
for ipAddress in "${fullnodeIpList[@]}"; do
printNode fullnode "$ipAddress"
echo Validators:
for ipAddress in "${validatorIpList[@]}"; do
printNode validator "$ipAddress"
done
echo
echo Clients:
@ -68,7 +68,7 @@ if [[ ${#blockstreamerIpList[@]} -eq 0 ]]; then
echo " None"
else
for ipAddress in "${blockstreamerIpList[@]}"; do
printNode fullnode "$ipAddress"
printNode validator "$ipAddress"
done
fi
echo
@ -77,7 +77,7 @@ if [[ ${#archiverIpList[@]} -eq 0 ]]; then
echo " None"
else
for ipAddress in "${archiverIpList[@]}"; do
printNode fullnode "$ipAddress"
printNode validator "$ipAddress"
done
fi
echo