[anza migration] rename crates (#10)
* rename geyser-plugin-interface * rename cargo registry * rename watchtower * rename ledger tool * rename validator * rename install * rename geyser plugin interface when patch
This commit is contained in:
parent
ff1d892277
commit
14cb9cff92
|
@ -22,3 +22,6 @@ if semverGT "$project_used_solana_version" "$SOLANA_VER"; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
./patch.crates-io.sh "$SOLANA_DIR"
|
./patch.crates-io.sh "$SOLANA_DIR"
|
||||||
|
|
||||||
|
# anza migration stopgap. can be removed when agave is fully recommended for public usage.
|
||||||
|
sed -i 's/solana-geyser-plugin-interface/agave-geyser-plugin-interface/g' ./Cargo.toml
|
||||||
|
|
|
@ -70,7 +70,7 @@ jobs:
|
||||||
mkdir -p "windows-release/$FOLDER_NAME"
|
mkdir -p "windows-release/$FOLDER_NAME"
|
||||||
cp -v "solana-release-x86_64-pc-windows-msvc.tar.bz2" "windows-release/$FOLDER_NAME/"
|
cp -v "solana-release-x86_64-pc-windows-msvc.tar.bz2" "windows-release/$FOLDER_NAME/"
|
||||||
cp -v "solana-release-x86_64-pc-windows-msvc.yml" "windows-release/$FOLDER_NAME/"
|
cp -v "solana-release-x86_64-pc-windows-msvc.yml" "windows-release/$FOLDER_NAME/"
|
||||||
cp -v "solana-install-init-x86_64-pc-windows-msvc"* "windows-release/$FOLDER_NAME"
|
cp -v "agave-install-init-x86_64-pc-windows-msvc"* "windows-release/$FOLDER_NAME"
|
||||||
|
|
||||||
- name: Upload Artifacts
|
- name: Upload Artifacts
|
||||||
if: ${{ steps.build.outputs.channel != '' || steps.build.outputs.tag != '' }}
|
if: ${{ steps.build.outputs.channel != '' || steps.build.outputs.tag != '' }}
|
||||||
|
|
|
@ -62,6 +62,217 @@ dependencies = [
|
||||||
"zeroize",
|
"zeroize",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "agave-cargo-registry"
|
||||||
|
version = "1.19.0"
|
||||||
|
dependencies = [
|
||||||
|
"clap 2.33.3",
|
||||||
|
"flate2",
|
||||||
|
"hex",
|
||||||
|
"hyper",
|
||||||
|
"log",
|
||||||
|
"rustc_version 0.4.0",
|
||||||
|
"serde",
|
||||||
|
"serde_json",
|
||||||
|
"sha2 0.10.8",
|
||||||
|
"solana-clap-utils",
|
||||||
|
"solana-cli",
|
||||||
|
"solana-cli-config",
|
||||||
|
"solana-cli-output",
|
||||||
|
"solana-logger",
|
||||||
|
"solana-remote-wallet",
|
||||||
|
"solana-rpc-client",
|
||||||
|
"solana-rpc-client-api",
|
||||||
|
"solana-sdk",
|
||||||
|
"solana-version",
|
||||||
|
"tar",
|
||||||
|
"tempfile",
|
||||||
|
"tokio",
|
||||||
|
"toml 0.8.10",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "agave-geyser-plugin-interface"
|
||||||
|
version = "1.19.0"
|
||||||
|
dependencies = [
|
||||||
|
"log",
|
||||||
|
"solana-sdk",
|
||||||
|
"solana-transaction-status",
|
||||||
|
"thiserror",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "agave-install"
|
||||||
|
version = "1.19.0"
|
||||||
|
dependencies = [
|
||||||
|
"atty",
|
||||||
|
"bincode",
|
||||||
|
"bzip2",
|
||||||
|
"chrono",
|
||||||
|
"clap 2.33.3",
|
||||||
|
"console",
|
||||||
|
"crossbeam-channel",
|
||||||
|
"ctrlc",
|
||||||
|
"dirs-next",
|
||||||
|
"indicatif",
|
||||||
|
"lazy_static",
|
||||||
|
"nix 0.26.4",
|
||||||
|
"reqwest",
|
||||||
|
"scopeguard",
|
||||||
|
"semver 1.0.22",
|
||||||
|
"serde",
|
||||||
|
"serde_yaml 0.8.26",
|
||||||
|
"serde_yaml 0.9.32",
|
||||||
|
"solana-clap-utils",
|
||||||
|
"solana-config-program",
|
||||||
|
"solana-logger",
|
||||||
|
"solana-rpc-client",
|
||||||
|
"solana-sdk",
|
||||||
|
"solana-version",
|
||||||
|
"tar",
|
||||||
|
"tempfile",
|
||||||
|
"url 2.5.0",
|
||||||
|
"winapi 0.3.9",
|
||||||
|
"winreg",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "agave-ledger-tool"
|
||||||
|
version = "1.19.0"
|
||||||
|
dependencies = [
|
||||||
|
"assert_cmd",
|
||||||
|
"bs58",
|
||||||
|
"bytecount",
|
||||||
|
"chrono",
|
||||||
|
"clap 2.33.3",
|
||||||
|
"crossbeam-channel",
|
||||||
|
"csv",
|
||||||
|
"dashmap",
|
||||||
|
"futures 0.3.30",
|
||||||
|
"histogram",
|
||||||
|
"itertools",
|
||||||
|
"log",
|
||||||
|
"num_cpus",
|
||||||
|
"regex",
|
||||||
|
"serde",
|
||||||
|
"serde_json",
|
||||||
|
"signal-hook",
|
||||||
|
"solana-account-decoder",
|
||||||
|
"solana-accounts-db",
|
||||||
|
"solana-bpf-loader-program",
|
||||||
|
"solana-clap-utils",
|
||||||
|
"solana-cli-output",
|
||||||
|
"solana-core",
|
||||||
|
"solana-cost-model",
|
||||||
|
"solana-entry",
|
||||||
|
"solana-geyser-plugin-manager",
|
||||||
|
"solana-gossip",
|
||||||
|
"solana-ledger",
|
||||||
|
"solana-logger",
|
||||||
|
"solana-measure",
|
||||||
|
"solana-program-runtime",
|
||||||
|
"solana-rpc",
|
||||||
|
"solana-runtime",
|
||||||
|
"solana-sdk",
|
||||||
|
"solana-stake-program",
|
||||||
|
"solana-storage-bigtable",
|
||||||
|
"solana-streamer",
|
||||||
|
"solana-svm",
|
||||||
|
"solana-transaction-status",
|
||||||
|
"solana-unified-scheduler-pool",
|
||||||
|
"solana-version",
|
||||||
|
"solana-vote-program",
|
||||||
|
"solana_rbpf",
|
||||||
|
"thiserror",
|
||||||
|
"tikv-jemallocator",
|
||||||
|
"tokio",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "agave-validator"
|
||||||
|
version = "1.19.0"
|
||||||
|
dependencies = [
|
||||||
|
"agave-geyser-plugin-interface",
|
||||||
|
"chrono",
|
||||||
|
"clap 2.33.3",
|
||||||
|
"console",
|
||||||
|
"core_affinity",
|
||||||
|
"crossbeam-channel",
|
||||||
|
"fd-lock",
|
||||||
|
"indicatif",
|
||||||
|
"itertools",
|
||||||
|
"jsonrpc-core",
|
||||||
|
"jsonrpc-core-client",
|
||||||
|
"jsonrpc-derive",
|
||||||
|
"jsonrpc-ipc-server",
|
||||||
|
"jsonrpc-server-utils",
|
||||||
|
"lazy_static",
|
||||||
|
"libc",
|
||||||
|
"libloading",
|
||||||
|
"log",
|
||||||
|
"num_cpus",
|
||||||
|
"rand 0.8.5",
|
||||||
|
"rayon",
|
||||||
|
"serde",
|
||||||
|
"serde_json",
|
||||||
|
"serde_yaml 0.9.32",
|
||||||
|
"signal-hook",
|
||||||
|
"solana-account-decoder",
|
||||||
|
"solana-accounts-db",
|
||||||
|
"solana-clap-utils",
|
||||||
|
"solana-cli-config",
|
||||||
|
"solana-core",
|
||||||
|
"solana-download-utils",
|
||||||
|
"solana-entry",
|
||||||
|
"solana-faucet",
|
||||||
|
"solana-genesis-utils",
|
||||||
|
"solana-geyser-plugin-manager",
|
||||||
|
"solana-gossip",
|
||||||
|
"solana-ledger",
|
||||||
|
"solana-logger",
|
||||||
|
"solana-metrics",
|
||||||
|
"solana-net-utils",
|
||||||
|
"solana-perf",
|
||||||
|
"solana-poh",
|
||||||
|
"solana-rpc",
|
||||||
|
"solana-rpc-client",
|
||||||
|
"solana-rpc-client-api",
|
||||||
|
"solana-runtime",
|
||||||
|
"solana-sdk",
|
||||||
|
"solana-send-transaction-service",
|
||||||
|
"solana-storage-bigtable",
|
||||||
|
"solana-streamer",
|
||||||
|
"solana-svm",
|
||||||
|
"solana-test-validator",
|
||||||
|
"solana-tpu-client",
|
||||||
|
"solana-unified-scheduler-pool",
|
||||||
|
"solana-version",
|
||||||
|
"solana-vote-program",
|
||||||
|
"spl-token-2022",
|
||||||
|
"symlink",
|
||||||
|
"thiserror",
|
||||||
|
"tikv-jemallocator",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "agave-watchtower"
|
||||||
|
version = "1.19.0"
|
||||||
|
dependencies = [
|
||||||
|
"clap 2.33.3",
|
||||||
|
"humantime",
|
||||||
|
"log",
|
||||||
|
"solana-clap-utils",
|
||||||
|
"solana-cli-config",
|
||||||
|
"solana-cli-output",
|
||||||
|
"solana-logger",
|
||||||
|
"solana-metrics",
|
||||||
|
"solana-notifier",
|
||||||
|
"solana-rpc-client",
|
||||||
|
"solana-rpc-client-api",
|
||||||
|
"solana-sdk",
|
||||||
|
"solana-version",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ahash"
|
name = "ahash"
|
||||||
version = "0.7.6"
|
version = "0.7.6"
|
||||||
|
@ -5482,35 +5693,6 @@ dependencies = [
|
||||||
"tar",
|
"tar",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "solana-cargo-registry"
|
|
||||||
version = "1.19.0"
|
|
||||||
dependencies = [
|
|
||||||
"clap 2.33.3",
|
|
||||||
"flate2",
|
|
||||||
"hex",
|
|
||||||
"hyper",
|
|
||||||
"log",
|
|
||||||
"rustc_version 0.4.0",
|
|
||||||
"serde",
|
|
||||||
"serde_json",
|
|
||||||
"sha2 0.10.8",
|
|
||||||
"solana-clap-utils",
|
|
||||||
"solana-cli",
|
|
||||||
"solana-cli-config",
|
|
||||||
"solana-cli-output",
|
|
||||||
"solana-logger",
|
|
||||||
"solana-remote-wallet",
|
|
||||||
"solana-rpc-client",
|
|
||||||
"solana-rpc-client-api",
|
|
||||||
"solana-sdk",
|
|
||||||
"solana-version",
|
|
||||||
"tar",
|
|
||||||
"tempfile",
|
|
||||||
"tokio",
|
|
||||||
"toml 0.8.10",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-cargo-test-bpf"
|
name = "solana-cargo-test-bpf"
|
||||||
version = "1.19.0"
|
version = "1.19.0"
|
||||||
|
@ -6040,20 +6222,11 @@ dependencies = [
|
||||||
"solana-sdk",
|
"solana-sdk",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "solana-geyser-plugin-interface"
|
|
||||||
version = "1.19.0"
|
|
||||||
dependencies = [
|
|
||||||
"log",
|
|
||||||
"solana-sdk",
|
|
||||||
"solana-transaction-status",
|
|
||||||
"thiserror",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-geyser-plugin-manager"
|
name = "solana-geyser-plugin-manager"
|
||||||
version = "1.19.0"
|
version = "1.19.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"agave-geyser-plugin-interface",
|
||||||
"bs58",
|
"bs58",
|
||||||
"crossbeam-channel",
|
"crossbeam-channel",
|
||||||
"json5",
|
"json5",
|
||||||
|
@ -6064,7 +6237,6 @@ dependencies = [
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"solana-accounts-db",
|
"solana-accounts-db",
|
||||||
"solana-entry",
|
"solana-entry",
|
||||||
"solana-geyser-plugin-interface",
|
|
||||||
"solana-ledger",
|
"solana-ledger",
|
||||||
"solana-measure",
|
"solana-measure",
|
||||||
"solana-metrics",
|
"solana-metrics",
|
||||||
|
@ -6126,41 +6298,6 @@ dependencies = [
|
||||||
"thiserror",
|
"thiserror",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "solana-install"
|
|
||||||
version = "1.19.0"
|
|
||||||
dependencies = [
|
|
||||||
"atty",
|
|
||||||
"bincode",
|
|
||||||
"bzip2",
|
|
||||||
"chrono",
|
|
||||||
"clap 2.33.3",
|
|
||||||
"console",
|
|
||||||
"crossbeam-channel",
|
|
||||||
"ctrlc",
|
|
||||||
"dirs-next",
|
|
||||||
"indicatif",
|
|
||||||
"lazy_static",
|
|
||||||
"nix 0.26.4",
|
|
||||||
"reqwest",
|
|
||||||
"scopeguard",
|
|
||||||
"semver 1.0.22",
|
|
||||||
"serde",
|
|
||||||
"serde_yaml 0.8.26",
|
|
||||||
"serde_yaml 0.9.32",
|
|
||||||
"solana-clap-utils",
|
|
||||||
"solana-config-program",
|
|
||||||
"solana-logger",
|
|
||||||
"solana-rpc-client",
|
|
||||||
"solana-sdk",
|
|
||||||
"solana-version",
|
|
||||||
"tar",
|
|
||||||
"tempfile",
|
|
||||||
"url 2.5.0",
|
|
||||||
"winapi 0.3.9",
|
|
||||||
"winreg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-keygen"
|
name = "solana-keygen"
|
||||||
version = "1.19.0"
|
version = "1.19.0"
|
||||||
|
@ -6248,58 +6385,6 @@ dependencies = [
|
||||||
"trees",
|
"trees",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "solana-ledger-tool"
|
|
||||||
version = "1.19.0"
|
|
||||||
dependencies = [
|
|
||||||
"assert_cmd",
|
|
||||||
"bs58",
|
|
||||||
"bytecount",
|
|
||||||
"chrono",
|
|
||||||
"clap 2.33.3",
|
|
||||||
"crossbeam-channel",
|
|
||||||
"csv",
|
|
||||||
"dashmap",
|
|
||||||
"futures 0.3.30",
|
|
||||||
"histogram",
|
|
||||||
"itertools",
|
|
||||||
"log",
|
|
||||||
"num_cpus",
|
|
||||||
"regex",
|
|
||||||
"serde",
|
|
||||||
"serde_json",
|
|
||||||
"signal-hook",
|
|
||||||
"solana-account-decoder",
|
|
||||||
"solana-accounts-db",
|
|
||||||
"solana-bpf-loader-program",
|
|
||||||
"solana-clap-utils",
|
|
||||||
"solana-cli-output",
|
|
||||||
"solana-core",
|
|
||||||
"solana-cost-model",
|
|
||||||
"solana-entry",
|
|
||||||
"solana-geyser-plugin-manager",
|
|
||||||
"solana-gossip",
|
|
||||||
"solana-ledger",
|
|
||||||
"solana-logger",
|
|
||||||
"solana-measure",
|
|
||||||
"solana-program-runtime",
|
|
||||||
"solana-rpc",
|
|
||||||
"solana-runtime",
|
|
||||||
"solana-sdk",
|
|
||||||
"solana-stake-program",
|
|
||||||
"solana-storage-bigtable",
|
|
||||||
"solana-streamer",
|
|
||||||
"solana-svm",
|
|
||||||
"solana-transaction-status",
|
|
||||||
"solana-unified-scheduler-pool",
|
|
||||||
"solana-version",
|
|
||||||
"solana-vote-program",
|
|
||||||
"solana_rbpf",
|
|
||||||
"thiserror",
|
|
||||||
"tikv-jemallocator",
|
|
||||||
"tokio",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-loader-v4-program"
|
name = "solana-loader-v4-program"
|
||||||
version = "1.19.0"
|
version = "1.19.0"
|
||||||
|
@ -7463,72 +7548,6 @@ dependencies = [
|
||||||
"solana-metrics",
|
"solana-metrics",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "solana-validator"
|
|
||||||
version = "1.19.0"
|
|
||||||
dependencies = [
|
|
||||||
"chrono",
|
|
||||||
"clap 2.33.3",
|
|
||||||
"console",
|
|
||||||
"core_affinity",
|
|
||||||
"crossbeam-channel",
|
|
||||||
"fd-lock",
|
|
||||||
"indicatif",
|
|
||||||
"itertools",
|
|
||||||
"jsonrpc-core",
|
|
||||||
"jsonrpc-core-client",
|
|
||||||
"jsonrpc-derive",
|
|
||||||
"jsonrpc-ipc-server",
|
|
||||||
"jsonrpc-server-utils",
|
|
||||||
"lazy_static",
|
|
||||||
"libc",
|
|
||||||
"libloading",
|
|
||||||
"log",
|
|
||||||
"num_cpus",
|
|
||||||
"rand 0.8.5",
|
|
||||||
"rayon",
|
|
||||||
"serde",
|
|
||||||
"serde_json",
|
|
||||||
"serde_yaml 0.9.32",
|
|
||||||
"signal-hook",
|
|
||||||
"solana-account-decoder",
|
|
||||||
"solana-accounts-db",
|
|
||||||
"solana-clap-utils",
|
|
||||||
"solana-cli-config",
|
|
||||||
"solana-core",
|
|
||||||
"solana-download-utils",
|
|
||||||
"solana-entry",
|
|
||||||
"solana-faucet",
|
|
||||||
"solana-genesis-utils",
|
|
||||||
"solana-geyser-plugin-interface",
|
|
||||||
"solana-geyser-plugin-manager",
|
|
||||||
"solana-gossip",
|
|
||||||
"solana-ledger",
|
|
||||||
"solana-logger",
|
|
||||||
"solana-metrics",
|
|
||||||
"solana-net-utils",
|
|
||||||
"solana-perf",
|
|
||||||
"solana-poh",
|
|
||||||
"solana-rpc",
|
|
||||||
"solana-rpc-client",
|
|
||||||
"solana-rpc-client-api",
|
|
||||||
"solana-runtime",
|
|
||||||
"solana-sdk",
|
|
||||||
"solana-send-transaction-service",
|
|
||||||
"solana-storage-bigtable",
|
|
||||||
"solana-streamer",
|
|
||||||
"solana-svm",
|
|
||||||
"solana-test-validator",
|
|
||||||
"solana-tpu-client",
|
|
||||||
"solana-unified-scheduler-pool",
|
|
||||||
"solana-version",
|
|
||||||
"solana-vote-program",
|
|
||||||
"spl-token-2022",
|
|
||||||
"symlink",
|
|
||||||
"thiserror",
|
|
||||||
"tikv-jemallocator",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-version"
|
name = "solana-version"
|
||||||
version = "1.19.0"
|
version = "1.19.0"
|
||||||
|
@ -7585,25 +7604,6 @@ dependencies = [
|
||||||
"thiserror",
|
"thiserror",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "solana-watchtower"
|
|
||||||
version = "1.19.0"
|
|
||||||
dependencies = [
|
|
||||||
"clap 2.33.3",
|
|
||||||
"humantime",
|
|
||||||
"log",
|
|
||||||
"solana-clap-utils",
|
|
||||||
"solana-cli-config",
|
|
||||||
"solana-cli-output",
|
|
||||||
"solana-logger",
|
|
||||||
"solana-metrics",
|
|
||||||
"solana-notifier",
|
|
||||||
"solana-rpc-client",
|
|
||||||
"solana-rpc-client-api",
|
|
||||||
"solana-sdk",
|
|
||||||
"solana-version",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-wen-restart"
|
name = "solana-wen-restart"
|
||||||
version = "1.19.0"
|
version = "1.19.0"
|
||||||
|
|
|
@ -317,7 +317,7 @@ solana-bench-tps = { path = "bench-tps", version = "=1.19.0" }
|
||||||
solana-bloom = { path = "bloom", version = "=1.19.0" }
|
solana-bloom = { path = "bloom", version = "=1.19.0" }
|
||||||
solana-bpf-loader-program = { path = "programs/bpf_loader", version = "=1.19.0" }
|
solana-bpf-loader-program = { path = "programs/bpf_loader", version = "=1.19.0" }
|
||||||
solana-bucket-map = { path = "bucket_map", version = "=1.19.0" }
|
solana-bucket-map = { path = "bucket_map", version = "=1.19.0" }
|
||||||
solana-cargo-registry = { path = "cargo-registry", version = "=1.19.0" }
|
agave-cargo-registry = { path = "cargo-registry", version = "=1.19.0" }
|
||||||
solana-clap-utils = { path = "clap-utils", version = "=1.19.0" }
|
solana-clap-utils = { path = "clap-utils", version = "=1.19.0" }
|
||||||
solana-clap-v3-utils = { path = "clap-v3-utils", version = "=1.19.0" }
|
solana-clap-v3-utils = { path = "clap-v3-utils", version = "=1.19.0" }
|
||||||
solana-cli = { path = "cli", version = "=1.19.0" }
|
solana-cli = { path = "cli", version = "=1.19.0" }
|
||||||
|
@ -336,7 +336,7 @@ solana-frozen-abi = { path = "frozen-abi", version = "=1.19.0" }
|
||||||
solana-frozen-abi-macro = { path = "frozen-abi/macro", version = "=1.19.0" }
|
solana-frozen-abi-macro = { path = "frozen-abi/macro", version = "=1.19.0" }
|
||||||
solana-genesis = { path = "genesis", version = "=1.19.0" }
|
solana-genesis = { path = "genesis", version = "=1.19.0" }
|
||||||
solana-genesis-utils = { path = "genesis-utils", version = "=1.19.0" }
|
solana-genesis-utils = { path = "genesis-utils", version = "=1.19.0" }
|
||||||
solana-geyser-plugin-interface = { path = "geyser-plugin-interface", version = "=1.19.0" }
|
agave-geyser-plugin-interface = { path = "geyser-plugin-interface", version = "=1.19.0" }
|
||||||
solana-geyser-plugin-manager = { path = "geyser-plugin-manager", version = "=1.19.0" }
|
solana-geyser-plugin-manager = { path = "geyser-plugin-manager", version = "=1.19.0" }
|
||||||
solana-gossip = { path = "gossip", version = "=1.19.0" }
|
solana-gossip = { path = "gossip", version = "=1.19.0" }
|
||||||
solana-ledger = { path = "ledger", version = "=1.19.0" }
|
solana-ledger = { path = "ledger", version = "=1.19.0" }
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
[package]
|
[package]
|
||||||
name = "solana-cargo-registry"
|
name = "agave-cargo-registry"
|
||||||
description = "Solana cargo registry"
|
description = "Solana cargo registry"
|
||||||
documentation = "https://docs.rs/solana-cargo-registry"
|
documentation = "https://docs.rs/agave-cargo-registry"
|
||||||
version = { workspace = true }
|
version = { workspace = true }
|
||||||
authors = { workspace = true }
|
authors = { workspace = true }
|
||||||
repository = { workspace = true }
|
repository = { workspace = true }
|
||||||
|
|
|
@ -202,8 +202,8 @@ killNodes() {
|
||||||
# Try to use the RPC exit API to cleanly exit the first two nodes
|
# Try to use the RPC exit API to cleanly exit the first two nodes
|
||||||
# (dynamic nodes, -x, are just killed)
|
# (dynamic nodes, -x, are just killed)
|
||||||
echo "--- RPC exit"
|
echo "--- RPC exit"
|
||||||
$solana_validator --ledger "$SOLANA_CONFIG_DIR"/bootstrap-validator exit --force || true
|
$agave_validator --ledger "$SOLANA_CONFIG_DIR"/bootstrap-validator exit --force || true
|
||||||
$solana_validator --ledger "$SOLANA_CONFIG_DIR"/validator exit --force || true
|
$agave_validator --ledger "$SOLANA_CONFIG_DIR"/validator exit --force || true
|
||||||
|
|
||||||
# Give the nodes a splash of time to cleanly exit before killing them
|
# Give the nodes a splash of time to cleanly exit before killing them
|
||||||
sleep 2
|
sleep 2
|
||||||
|
|
|
@ -31,7 +31,7 @@ SOLANA_RELEASE=$CHANNEL_OR_TAG
|
||||||
SOLANA_INSTALL_INIT_ARGS=$CHANNEL_OR_TAG
|
SOLANA_INSTALL_INIT_ARGS=$CHANNEL_OR_TAG
|
||||||
SOLANA_DOWNLOAD_ROOT=https://release.anza.xyz
|
SOLANA_DOWNLOAD_ROOT=https://release.anza.xyz
|
||||||
EOF
|
EOF
|
||||||
cat install/solana-install-init.sh >>release.anza.xyz-install
|
cat install/agave-install-init.sh >>release.anza.xyz-install
|
||||||
|
|
||||||
echo --- GCS: "install"
|
echo --- GCS: "install"
|
||||||
upload-gcs-artifact "/solana/release.anza.xyz-install" "gs://anza-release/$CHANNEL_OR_TAG/install"
|
upload-gcs-artifact "/solana/release.anza.xyz-install" "gs://anza-release/$CHANNEL_OR_TAG/install"
|
||||||
|
|
|
@ -93,7 +93,7 @@ echo --- Creating release tarball
|
||||||
|
|
||||||
tar cvf "${TARBALL_BASENAME}"-$TARGET.tar "${RELEASE_BASENAME}"
|
tar cvf "${TARBALL_BASENAME}"-$TARGET.tar "${RELEASE_BASENAME}"
|
||||||
bzip2 "${TARBALL_BASENAME}"-$TARGET.tar
|
bzip2 "${TARBALL_BASENAME}"-$TARGET.tar
|
||||||
cp "${RELEASE_BASENAME}"/bin/solana-install-init solana-install-init-$TARGET
|
cp "${RELEASE_BASENAME}"/bin/agave-install-init agave-install-init-$TARGET
|
||||||
cp "${RELEASE_BASENAME}"/version.yml "${TARBALL_BASENAME}"-$TARGET.yml
|
cp "${RELEASE_BASENAME}"/version.yml "${TARBALL_BASENAME}"-$TARGET.yml
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -110,7 +110,7 @@ fi
|
||||||
|
|
||||||
source ci/upload-ci-artifact.sh
|
source ci/upload-ci-artifact.sh
|
||||||
|
|
||||||
for file in "${TARBALL_BASENAME}"-$TARGET.tar.bz2 "${TARBALL_BASENAME}"-$TARGET.yml solana-install-init-"$TARGET"* $MAYBE_TARBALLS; do
|
for file in "${TARBALL_BASENAME}"-$TARGET.tar.bz2 "${TARBALL_BASENAME}"-$TARGET.yml agave-install-init-"$TARGET"* $MAYBE_TARBALLS; do
|
||||||
if [[ -n $DO_NOT_PUBLISH_TAR ]]; then
|
if [[ -n $DO_NOT_PUBLISH_TAR ]]; then
|
||||||
upload-ci-artifact "$file"
|
upload-ci-artifact "$file"
|
||||||
echo "Skipped $file due to DO_NOT_PUBLISH_TAR"
|
echo "Skipped $file due to DO_NOT_PUBLISH_TAR"
|
||||||
|
|
|
@ -31,7 +31,7 @@ while [[ $latest_slot -le $((snapshot_slot + 1)) ]]; do
|
||||||
latest_slot=$($solana_cli --url http://localhost:8899 slot --commitment processed)
|
latest_slot=$($solana_cli --url http://localhost:8899 slot --commitment processed)
|
||||||
done
|
done
|
||||||
|
|
||||||
$solana_validator --ledger config/ledger exit --force || true
|
$agave_validator --ledger config/ledger exit --force || true
|
||||||
|
|
||||||
wait $pid
|
wait $pid
|
||||||
|
|
||||||
|
|
|
@ -76,7 +76,7 @@ Major releases:
|
||||||
- [`solana-program`](https://docs.rs/solana-program/) - Rust SDK for writing programs
|
- [`solana-program`](https://docs.rs/solana-program/) - Rust SDK for writing programs
|
||||||
- [`solana-client`](https://docs.rs/solana-client/) - Rust client for connecting to RPC API
|
- [`solana-client`](https://docs.rs/solana-client/) - Rust client for connecting to RPC API
|
||||||
- [`solana-cli-config`](https://docs.rs/solana-cli-config/) - Rust client for managing Solana CLI config files
|
- [`solana-cli-config`](https://docs.rs/solana-cli-config/) - Rust client for managing Solana CLI config files
|
||||||
- [`solana-geyser-plugin-interface`](https://docs.rs/solana-geyser-plugin-interface/) - Rust interface for developing Solana Geyser plugins.
|
- [`agave-geyser-plugin-interface`](https://docs.rs/agave-geyser-plugin-interface/) - Rust interface for developing Solana Geyser plugins.
|
||||||
|
|
||||||
Patch releases:
|
Patch releases:
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,7 @@ Please update your PATH environment variable to include the solana programs:
|
||||||
solana --version
|
solana --version
|
||||||
```
|
```
|
||||||
|
|
||||||
- After a successful install, `solana-install update` may be used to easily
|
- After a successful install, `agave-install update` may be used to easily
|
||||||
update the Solana software to a newer version at any time.
|
update the Solana software to a newer version at any time.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -74,7 +74,7 @@ solana --version
|
||||||
installer into a temporary directory:
|
installer into a temporary directory:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cmd /c "curl https://release.solana.com/LATEST_SOLANA_RELEASE_VERSION/solana-install-init-x86_64-pc-windows-msvc.exe --output C:\solana-install-tmp\solana-install-init.exe --create-dirs"
|
cmd /c "curl https://release.solana.com/LATEST_SOLANA_RELEASE_VERSION/agave-install-init-x86_64-pc-windows-msvc.exe --output C:\agave-install-tmp\agave-install-init.exe --create-dirs"
|
||||||
```
|
```
|
||||||
|
|
||||||
- Copy and paste the following command, then press Enter to install the latest
|
- Copy and paste the following command, then press Enter to install the latest
|
||||||
|
@ -82,7 +82,7 @@ cmd /c "curl https://release.solana.com/LATEST_SOLANA_RELEASE_VERSION/solana-ins
|
||||||
to allow the program to run.
|
to allow the program to run.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
C:\solana-install-tmp\solana-install-init.exe LATEST_SOLANA_RELEASE_VERSION
|
C:\agave-install-tmp\agave-install-init.exe LATEST_SOLANA_RELEASE_VERSION
|
||||||
```
|
```
|
||||||
|
|
||||||
- When the installer is finished, press Enter.
|
- When the installer is finished, press Enter.
|
||||||
|
@ -97,12 +97,12 @@ C:\solana-install-tmp\solana-install-init.exe LATEST_SOLANA_RELEASE_VERSION
|
||||||
solana --version
|
solana --version
|
||||||
```
|
```
|
||||||
|
|
||||||
- After a successful install, `solana-install update` may be used to easily
|
- After a successful install, `agave-install update` may be used to easily
|
||||||
update the Solana software to a newer version at any time.
|
update the Solana software to a newer version at any time.
|
||||||
|
|
||||||
## Download Prebuilt Binaries
|
## Download Prebuilt Binaries
|
||||||
|
|
||||||
If you would rather not use `solana-install` to manage the install, you can
|
If you would rather not use `agave-install` to manage the install, you can
|
||||||
manually download and install the binaries.
|
manually download and install the binaries.
|
||||||
|
|
||||||
### Linux
|
### Linux
|
||||||
|
@ -255,7 +255,7 @@ You can then run the following command to obtain the same result as with
|
||||||
prebuilt binaries:
|
prebuilt binaries:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
solana-install init
|
agave-install init
|
||||||
```
|
```
|
||||||
|
|
||||||
## Use Homebrew
|
## Use Homebrew
|
||||||
|
|
|
@ -41,10 +41,10 @@ export SOLANA_METRICS_CONFIG="host=https://metrics.solana.com:8086,db=devnet,u=s
|
||||||
solana config set --url https://api.devnet.solana.com
|
solana config set --url https://api.devnet.solana.com
|
||||||
```
|
```
|
||||||
|
|
||||||
##### Example `solana-validator` command-line
|
##### Example `agave-validator` command-line
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ solana-validator \
|
$ agave-validator \
|
||||||
--identity validator-keypair.json \
|
--identity validator-keypair.json \
|
||||||
--vote-account vote-account-keypair.json \
|
--vote-account vote-account-keypair.json \
|
||||||
--known-validator dv1ZAGvdsz5hHLwWXsVnM94hWf1pjbKVau1QVkaMJ92 \
|
--known-validator dv1ZAGvdsz5hHLwWXsVnM94hWf1pjbKVau1QVkaMJ92 \
|
||||||
|
@ -93,10 +93,10 @@ export SOLANA_METRICS_CONFIG="host=https://metrics.solana.com:8086,db=tds,u=test
|
||||||
solana config set --url https://api.testnet.solana.com
|
solana config set --url https://api.testnet.solana.com
|
||||||
```
|
```
|
||||||
|
|
||||||
##### Example `solana-validator` command-line
|
##### Example `agave-validator` command-line
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ solana-validator \
|
$ agave-validator \
|
||||||
--identity validator-keypair.json \
|
--identity validator-keypair.json \
|
||||||
--vote-account vote-account-keypair.json \
|
--vote-account vote-account-keypair.json \
|
||||||
--known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \
|
--known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \
|
||||||
|
@ -145,10 +145,10 @@ export SOLANA_METRICS_CONFIG="host=https://metrics.solana.com:8086,db=mainnet-be
|
||||||
solana config set --url https://api.mainnet-beta.solana.com
|
solana config set --url https://api.mainnet-beta.solana.com
|
||||||
```
|
```
|
||||||
|
|
||||||
##### Example `solana-validator` command-line
|
##### Example `agave-validator` command-line
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ solana-validator \
|
$ agave-validator \
|
||||||
--identity ~/validator-keypair.json \
|
--identity ~/validator-keypair.json \
|
||||||
--vote-account ~/vote-account-keypair.json \
|
--vote-account ~/vote-account-keypair.json \
|
||||||
--known-validator 7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2 \
|
--known-validator 7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2 \
|
||||||
|
|
|
@ -108,7 +108,7 @@ For example
|
||||||
|
|
||||||
Generally we are using `debug` for infrequent debug messages, `trace` for potentially frequent messages and `info` for performance-related logging.
|
Generally we are using `debug` for infrequent debug messages, `trace` for potentially frequent messages and `info` for performance-related logging.
|
||||||
|
|
||||||
You can also attach to a running process with GDB. The leader's process is named _solana-validator_:
|
You can also attach to a running process with GDB. The leader's process is named _agave-validator_:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo gdb
|
sudo gdb
|
||||||
|
|
|
@ -13,16 +13,16 @@ This document proposes an easy to use software install and updater that can be u
|
||||||
The easiest install method for supported platforms:
|
The easiest install method for supported platforms:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ curl -sSf https://raw.githubusercontent.com/solana-labs/solana/v1.0.0/install/solana-install-init.sh | sh
|
$ curl -sSf https://raw.githubusercontent.com/solana-labs/solana/v1.0.0/install/agave-install-init.sh | sh
|
||||||
```
|
```
|
||||||
|
|
||||||
This script will check github for the latest tagged release and download and run the `solana-install-init` binary from there.
|
This script will check github for the latest tagged release and download and run the `agave-install-init` binary from there.
|
||||||
|
|
||||||
If additional arguments need to be specified during the installation, the following shell syntax is used:
|
If additional arguments need to be specified during the installation, the following shell syntax is used:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ init_args=.... # arguments for `solana-install-init ...`
|
$ init_args=.... # arguments for `agave-install-init ...`
|
||||||
$ curl -sSf https://raw.githubusercontent.com/solana-labs/solana/v1.0.0/install/solana-install-init.sh | sh -s - ${init_args}
|
$ curl -sSf https://raw.githubusercontent.com/solana-labs/solana/v1.0.0/install/agave-install-init.sh | sh -s - ${init_args}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Fetch and run a pre-built installer from a Github release
|
### Fetch and run a pre-built installer from a Github release
|
||||||
|
@ -30,9 +30,9 @@ $ curl -sSf https://raw.githubusercontent.com/solana-labs/solana/v1.0.0/install/
|
||||||
With a well-known release URL, a pre-built binary can be obtained for supported platforms:
|
With a well-known release URL, a pre-built binary can be obtained for supported platforms:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ curl -o solana-install-init https://github.com/solana-labs/solana/releases/download/v1.0.0/solana-install-init-x86_64-apple-darwin
|
$ curl -o agave-install-init https://github.com/solana-labs/solana/releases/download/v1.0.0/agave-install-init-x86_64-apple-darwin
|
||||||
$ chmod +x ./solana-install-init
|
$ chmod +x ./agave-install-init
|
||||||
$ ./solana-install-init --help
|
$ ./agave-install-init --help
|
||||||
```
|
```
|
||||||
|
|
||||||
### Build and run the installer from source
|
### Build and run the installer from source
|
||||||
|
@ -51,16 +51,16 @@ Given a solana release tarball \(as created by `ci/publish-tarball.sh`\) that ha
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ solana-keygen new -o update-manifest.json # <-- only generated once, the public key is shared with users
|
$ solana-keygen new -o update-manifest.json # <-- only generated once, the public key is shared with users
|
||||||
$ solana-install deploy http://example.com/path/to/solana-release.tar.bz2 update-manifest.json
|
$ agave-install deploy http://example.com/path/to/solana-release.tar.bz2 update-manifest.json
|
||||||
```
|
```
|
||||||
|
|
||||||
### Run a validator node that auto updates itself
|
### Run a validator node that auto updates itself
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ solana-install init --pubkey 92DMonmBYXwEMHJ99c9ceRSpAmk9v6i3RdvDdXaVcrfj # <-- pubkey is obtained from whoever is deploying the updates
|
$ agave-install init --pubkey 92DMonmBYXwEMHJ99c9ceRSpAmk9v6i3RdvDdXaVcrfj # <-- pubkey is obtained from whoever is deploying the updates
|
||||||
$ export PATH=~/.local/share/solana-install/bin:$PATH
|
$ export PATH=~/.local/share/agave-install/bin:$PATH
|
||||||
$ solana-keygen ... # <-- runs the latest solana-keygen
|
$ solana-keygen ... # <-- runs the latest solana-keygen
|
||||||
$ solana-install run solana-validator ... # <-- runs a validator, restarting it as necessary when an update is applied
|
$ agave-install run agave-validator ... # <-- runs a validator, restarting it as necessary when an update is applied
|
||||||
```
|
```
|
||||||
|
|
||||||
## On-chain Update Manifest
|
## On-chain Update Manifest
|
||||||
|
@ -87,9 +87,9 @@ pub struct SignedUpdateManifest {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Note that the `manifest` field itself contains a corresponding signature \(`manifest_signature`\) to guard against man-in-the-middle attacks between the `solana-install` tool and the solana cluster RPC API.
|
Note that the `manifest` field itself contains a corresponding signature \(`manifest_signature`\) to guard against man-in-the-middle attacks between the `agave-install` tool and the solana cluster RPC API.
|
||||||
|
|
||||||
To guard against rollback attacks, `solana-install` will refuse to install an update with an older `timestamp_secs` than what is currently installed.
|
To guard against rollback attacks, `agave-install` will refuse to install an update with an older `timestamp_secs` than what is currently installed.
|
||||||
|
|
||||||
## Release Archive Contents
|
## Release Archive Contents
|
||||||
|
|
||||||
|
@ -101,17 +101,17 @@ A release archive is expected to be a tar file compressed with bzip2 with the fo
|
||||||
|
|
||||||
- `/bin/` -- directory containing available programs in the release.
|
- `/bin/` -- directory containing available programs in the release.
|
||||||
|
|
||||||
`solana-install` will symlink this directory to
|
`agave-install` will symlink this directory to
|
||||||
|
|
||||||
`~/.local/share/solana-install/bin` for use by the `PATH` environment
|
`~/.local/share/agave-install/bin` for use by the `PATH` environment
|
||||||
|
|
||||||
variable.
|
variable.
|
||||||
|
|
||||||
- `...` -- any additional files and directories are permitted
|
- `...` -- any additional files and directories are permitted
|
||||||
|
|
||||||
## solana-install Tool
|
## agave-install Tool
|
||||||
|
|
||||||
The `solana-install` tool is used by the user to install and update their cluster software.
|
The `agave-install` tool is used by the user to install and update their cluster software.
|
||||||
|
|
||||||
It manages the following files and directories in the user's home directory:
|
It manages the following files and directories in the user's home directory:
|
||||||
|
|
||||||
|
@ -122,11 +122,11 @@ It manages the following files and directories in the user's home directory:
|
||||||
### Command-line Interface
|
### Command-line Interface
|
||||||
|
|
||||||
```text
|
```text
|
||||||
solana-install 0.16.0
|
agave-install 0.16.0
|
||||||
The solana cluster software installer
|
The solana cluster software installer
|
||||||
|
|
||||||
USAGE:
|
USAGE:
|
||||||
solana-install [OPTIONS] <SUBCOMMAND>
|
agave-install [OPTIONS] <SUBCOMMAND>
|
||||||
|
|
||||||
FLAGS:
|
FLAGS:
|
||||||
-h, --help Prints help information
|
-h, --help Prints help information
|
||||||
|
@ -145,11 +145,11 @@ SUBCOMMANDS:
|
||||||
```
|
```
|
||||||
|
|
||||||
```text
|
```text
|
||||||
solana-install-init
|
agave-install-init
|
||||||
initializes a new installation
|
initializes a new installation
|
||||||
|
|
||||||
USAGE:
|
USAGE:
|
||||||
solana-install init [OPTIONS]
|
agave-install init [OPTIONS]
|
||||||
|
|
||||||
FLAGS:
|
FLAGS:
|
||||||
-h, --help Prints help information
|
-h, --help Prints help information
|
||||||
|
@ -161,11 +161,11 @@ OPTIONS:
|
||||||
```
|
```
|
||||||
|
|
||||||
```text
|
```text
|
||||||
solana-install info
|
agave-install info
|
||||||
displays information about the current installation
|
displays information about the current installation
|
||||||
|
|
||||||
USAGE:
|
USAGE:
|
||||||
solana-install info [FLAGS]
|
agave-install info [FLAGS]
|
||||||
|
|
||||||
FLAGS:
|
FLAGS:
|
||||||
-h, --help Prints help information
|
-h, --help Prints help information
|
||||||
|
@ -173,11 +173,11 @@ FLAGS:
|
||||||
```
|
```
|
||||||
|
|
||||||
```text
|
```text
|
||||||
solana-install deploy
|
agave-install deploy
|
||||||
deploys a new update
|
deploys a new update
|
||||||
|
|
||||||
USAGE:
|
USAGE:
|
||||||
solana-install deploy <download_url> <update_manifest_keypair>
|
agave-install deploy <download_url> <update_manifest_keypair>
|
||||||
|
|
||||||
FLAGS:
|
FLAGS:
|
||||||
-h, --help Prints help information
|
-h, --help Prints help information
|
||||||
|
@ -188,22 +188,22 @@ ARGS:
|
||||||
```
|
```
|
||||||
|
|
||||||
```text
|
```text
|
||||||
solana-install update
|
agave-install update
|
||||||
checks for an update, and if available downloads and applies it
|
checks for an update, and if available downloads and applies it
|
||||||
|
|
||||||
USAGE:
|
USAGE:
|
||||||
solana-install update
|
agave-install update
|
||||||
|
|
||||||
FLAGS:
|
FLAGS:
|
||||||
-h, --help Prints help information
|
-h, --help Prints help information
|
||||||
```
|
```
|
||||||
|
|
||||||
```text
|
```text
|
||||||
solana-install run
|
agave-install run
|
||||||
Runs a program while periodically checking and applying software updates
|
Runs a program while periodically checking and applying software updates
|
||||||
|
|
||||||
USAGE:
|
USAGE:
|
||||||
solana-install run <program_name> [program_arguments]...
|
agave-install run <program_name> [program_arguments]...
|
||||||
|
|
||||||
FLAGS:
|
FLAGS:
|
||||||
-h, --help Prints help information
|
-h, --help Prints help information
|
||||||
|
|
|
@ -68,7 +68,7 @@ the results of BigTable queries more complicated but is not a significant issue.
|
||||||
## Data Population
|
## Data Population
|
||||||
|
|
||||||
The ongoing population of instance data will occur on an epoch cadence through
|
The ongoing population of instance data will occur on an epoch cadence through
|
||||||
the use of a new `solana-ledger-tool` command that will convert rocksdb data for
|
the use of a new `agave-ledger-tool` command that will convert rocksdb data for
|
||||||
a given slot range into the instance schema.
|
a given slot range into the instance schema.
|
||||||
|
|
||||||
The same process will be run once, manually, to backfill the existing ledger
|
The same process will be run once, manually, to backfill the existing ledger
|
||||||
|
|
|
@ -23,12 +23,12 @@ watch past workshops through the
|
||||||
|
|
||||||
## Help with the validator command line
|
## Help with the validator command line
|
||||||
|
|
||||||
From within the Solana CLI, you can execute the `solana-validator` command with
|
From within the Solana CLI, you can execute the `agave-validator` command with
|
||||||
the `--help` flag to get a better understanding of the flags and sub commands
|
the `--help` flag to get a better understanding of the flags and sub commands
|
||||||
available.
|
available.
|
||||||
|
|
||||||
```
|
```
|
||||||
solana-validator --help
|
agave-validator --help
|
||||||
```
|
```
|
||||||
|
|
||||||
## Restarting your validator
|
## Restarting your validator
|
||||||
|
@ -49,14 +49,14 @@ solana leader-schedule
|
||||||
Based on the current slot and the leader schedule, you can calculate open time
|
Based on the current slot and the leader schedule, you can calculate open time
|
||||||
windows where your validator is not expected to produce blocks.
|
windows where your validator is not expected to produce blocks.
|
||||||
|
|
||||||
Assuming you are ready to restart, you may use the `solana-validator exit`
|
Assuming you are ready to restart, you may use the `agave-validator exit`
|
||||||
command. The command exits your validator process when an appropriate idle time
|
command. The command exits your validator process when an appropriate idle time
|
||||||
window is reached. Assuming that you have systemd implemented for your validator
|
window is reached. Assuming that you have systemd implemented for your validator
|
||||||
process, the validator should restart automatically after the exit. See the
|
process, the validator should restart automatically after the exit. See the
|
||||||
below help command for details:
|
below help command for details:
|
||||||
|
|
||||||
```
|
```
|
||||||
solana-validator exit --help
|
agave-validator exit --help
|
||||||
```
|
```
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
@ -75,28 +75,28 @@ process.
|
||||||
It is a best practice to always build your Solana binaries from source. If you
|
It is a best practice to always build your Solana binaries from source. If you
|
||||||
build from source, you are certain that the code you are building has not been
|
build from source, you are certain that the code you are building has not been
|
||||||
tampered with before the binary was created. You may also be able to optimize
|
tampered with before the binary was created. You may also be able to optimize
|
||||||
your `solana-validator` binary to your specific hardware.
|
your `agave-validator` binary to your specific hardware.
|
||||||
|
|
||||||
If you build from source on the validator machine (or a machine with the same
|
If you build from source on the validator machine (or a machine with the same
|
||||||
CPU), you can target your specific architecture using the `-march` flag. Refer
|
CPU), you can target your specific architecture using the `-march` flag. Refer
|
||||||
to the following doc for
|
to the following doc for
|
||||||
[instructions on building from source](../../cli/install.md#build-from-source).
|
[instructions on building from source](../../cli/install.md#build-from-source).
|
||||||
|
|
||||||
### solana-install
|
### agave-install
|
||||||
|
|
||||||
If you are not comfortable building from source, or you need to quickly install
|
If you are not comfortable building from source, or you need to quickly install
|
||||||
a new version to test something out, you could instead try using the
|
a new version to test something out, you could instead try using the
|
||||||
`solana-install` command.
|
`agave-install` command.
|
||||||
|
|
||||||
Assuming you want to install Solana version `1.14.17`, you would execute the
|
Assuming you want to install Solana version `1.14.17`, you would execute the
|
||||||
following:
|
following:
|
||||||
|
|
||||||
```
|
```
|
||||||
solana-install init 1.14.17
|
agave-install init 1.14.17
|
||||||
```
|
```
|
||||||
|
|
||||||
This command downloads the executable for `1.14.17` and installs it into a
|
This command downloads the executable for `1.14.17` and installs it into a
|
||||||
`.local` directory. You can also look at `solana-install --help` for more
|
`.local` directory. You can also look at `agave-install --help` for more
|
||||||
options.
|
options.
|
||||||
|
|
||||||
> **Note** this command only works if you already have the solana cli installed.
|
> **Note** this command only works if you already have the solana cli installed.
|
||||||
|
@ -106,7 +106,7 @@ options.
|
||||||
### Restart
|
### Restart
|
||||||
|
|
||||||
For all install methods, the validator process will need to be restarted before
|
For all install methods, the validator process will need to be restarted before
|
||||||
the newly installed version is in use. Use `solana-validator exit` to restart
|
the newly installed version is in use. Use `agave-validator exit` to restart
|
||||||
your validator process.
|
your validator process.
|
||||||
|
|
||||||
### Verifying version
|
### Verifying version
|
||||||
|
@ -132,13 +132,13 @@ have state locally. In other cases such as restarts for upgrades, a snapshot
|
||||||
download should be avoided.
|
download should be avoided.
|
||||||
|
|
||||||
To avoid downloading a snapshot on restart, add the following flag to the
|
To avoid downloading a snapshot on restart, add the following flag to the
|
||||||
`solana-validator` command:
|
`agave-validator` command:
|
||||||
|
|
||||||
```
|
```
|
||||||
--no-snapshot-fetch
|
--no-snapshot-fetch
|
||||||
```
|
```
|
||||||
|
|
||||||
If you use this flag with the `solana-validator` command, make sure that you run
|
If you use this flag with the `agave-validator` command, make sure that you run
|
||||||
`solana catchup <pubkey>` after your validator starts to make sure that the
|
`solana catchup <pubkey>` after your validator starts to make sure that the
|
||||||
validator is catching up in a reasonable time. After some time (potentially a
|
validator is catching up in a reasonable time. After some time (potentially a
|
||||||
few hours), if it appears that your validator continues to fall behind, then you
|
few hours), if it appears that your validator continues to fall behind, then you
|
||||||
|
@ -199,7 +199,7 @@ It is important that you do not accidentally run out of funds in your identity
|
||||||
account, as your node will stop voting. It is also important to note that this
|
account, as your node will stop voting. It is also important to note that this
|
||||||
account keypair is the most vulnerable of the three keypairs in a vote account
|
account keypair is the most vulnerable of the three keypairs in a vote account
|
||||||
because the keypair for the identity account is stored on your validator when
|
because the keypair for the identity account is stored on your validator when
|
||||||
running the `solana-validator` software. How much SOL you should store there is
|
running the `agave-validator` software. How much SOL you should store there is
|
||||||
up to you. As a best practice, make sure to check the account regularly and
|
up to you. As a best practice, make sure to check the account regularly and
|
||||||
refill or deduct from it as needed. To check the account balance do:
|
refill or deduct from it as needed. To check the account balance do:
|
||||||
|
|
||||||
|
@ -207,7 +207,7 @@ refill or deduct from it as needed. To check the account balance do:
|
||||||
solana balance validator-keypair.json
|
solana balance validator-keypair.json
|
||||||
```
|
```
|
||||||
|
|
||||||
> **Note** `solana-watchtower` can monitor for a minimum validator identity
|
> **Note** `agave-watchtower` can monitor for a minimum validator identity
|
||||||
> balance. See [monitoring best practices](./monitoring.md) for details.
|
> balance. See [monitoring best practices](./monitoring.md) for details.
|
||||||
|
|
||||||
## Withdrawing From The Vote Account
|
## Withdrawing From The Vote Account
|
||||||
|
|
|
@ -4,34 +4,34 @@ sidebar_label: Monitoring
|
||||||
pagination_label: "Best Practices: Validator Monitoring"
|
pagination_label: "Best Practices: Validator Monitoring"
|
||||||
---
|
---
|
||||||
|
|
||||||
It is essential that you have monitoring in place on your validator. In the event that your validator is delinquent (behind the rest of the network) you want to respond immediately to fix the issue. One very useful tool to monitor your validator is [`solana-watchtower`](#solana-watchtower).
|
It is essential that you have monitoring in place on your validator. In the event that your validator is delinquent (behind the rest of the network) you want to respond immediately to fix the issue. One very useful tool to monitor your validator is [`agave-watchtower`](#agave-watchtower).
|
||||||
|
|
||||||
## Solana Watchtower
|
## Solana Watchtower
|
||||||
|
|
||||||
Solana Watchtower is an extremely useful monitoring tool that will regularly monitor the health of your validator. It can monitor your validator for delinquency then notify you on your application of choice: Slack, Discord, Telegram or Twilio. Additionally, `solana-watchtower` has the ability to monitor the health of the entire cluster so that you can be aware of any cluster wide problems.
|
Solana Watchtower is an extremely useful monitoring tool that will regularly monitor the health of your validator. It can monitor your validator for delinquency then notify you on your application of choice: Slack, Discord, Telegram or Twilio. Additionally, `agave-watchtower` has the ability to monitor the health of the entire cluster so that you can be aware of any cluster wide problems.
|
||||||
|
|
||||||
### Getting Started
|
### Getting Started
|
||||||
|
|
||||||
To get started with Solana Watchtower, run `solana-watchtower --help`. From the help menu, you can see the optional flags and an explanation of the command.
|
To get started with Solana Watchtower, run `agave-watchtower --help`. From the help menu, you can see the optional flags and an explanation of the command.
|
||||||
|
|
||||||
Here is a sample command that will monitor a validator node with an identity public key of `2uTk98rqqwENevkPH2AHHzGHXgeGc1h6ku8hQUqWeXZp`:
|
Here is a sample command that will monitor a validator node with an identity public key of `2uTk98rqqwENevkPH2AHHzGHXgeGc1h6ku8hQUqWeXZp`:
|
||||||
|
|
||||||
```
|
```
|
||||||
solana-watchtower --monitor-active-stake --validator-identity \
|
agave-watchtower --monitor-active-stake --validator-identity \
|
||||||
2uTk98rqqwENevkPH2AHHzGHXgeGc1h6ku8hQUqWeXZp
|
2uTk98rqqwENevkPH2AHHzGHXgeGc1h6ku8hQUqWeXZp
|
||||||
```
|
```
|
||||||
|
|
||||||
The command will monitor your validator, but you will not get notifications unless you added the environment variables mentioned in `solana-watchtower --help`. Since getting each of these services setup for notifications is not straight forward, the next section will walk through [setting up watchtower notifications on Telegram](#setup-telegram-notifications).
|
The command will monitor your validator, but you will not get notifications unless you added the environment variables mentioned in `agave-watchtower --help`. Since getting each of these services setup for notifications is not straight forward, the next section will walk through [setting up watchtower notifications on Telegram](#setup-telegram-notifications).
|
||||||
|
|
||||||
### Best Practices
|
### Best Practices
|
||||||
|
|
||||||
It is a best practice to run the `solana-watchtower` command on a separate server from your validator.
|
It is a best practice to run the `agave-watchtower` command on a separate server from your validator.
|
||||||
|
|
||||||
In the case that you run `solana-watchtower` on the same computer as your `solana-validator` process, then during catastrophic events like a power outage, you will not be aware of the issue, because your `solana-watchtower` process will stop at the same time as your `solana-validator` process.
|
In the case that you run `agave-watchtower` on the same computer as your `agave-validator` process, then during catastrophic events like a power outage, you will not be aware of the issue, because your `agave-watchtower` process will stop at the same time as your `agave-validator` process.
|
||||||
|
|
||||||
Additionally, while running the `solana-watchtower` process manually with environment variables set in the terminal is a good way to test out the command, it is not operationally sound because the process will not be restarted when the terminal closes or during a system restart.
|
Additionally, while running the `agave-watchtower` process manually with environment variables set in the terminal is a good way to test out the command, it is not operationally sound because the process will not be restarted when the terminal closes or during a system restart.
|
||||||
|
|
||||||
Instead, you could run your `solana-watchtower` command as a system process similar to `solana-validator`. In the system process file, you can specify the environment variables for your bot.
|
Instead, you could run your `agave-watchtower` command as a system process similar to `agave-validator`. In the system process file, you can specify the environment variables for your bot.
|
||||||
|
|
||||||
### Setup Telegram Notifications
|
### Setup Telegram Notifications
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ To send validator health notifications to your Telegram account, we are going to
|
||||||
2. Send a message to the bot
|
2. Send a message to the bot
|
||||||
3. Create a Telegram group that will get the watchtower notifications
|
3. Create a Telegram group that will get the watchtower notifications
|
||||||
4. Add the environment variables to your command line environment
|
4. Add the environment variables to your command line environment
|
||||||
5. Restart the `solana-watchtower` command
|
5. Restart the `agave-watchtower` command
|
||||||
|
|
||||||
#### Create a Bot Using BotFather
|
#### Create a Bot Using BotFather
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ In Telegram, click on the new message icon and then select new group. Find your
|
||||||
|
|
||||||
Now that you have a bot setup, you will need to set the environment variables for the bot so that watchtower can send notifications.
|
Now that you have a bot setup, you will need to set the environment variables for the bot so that watchtower can send notifications.
|
||||||
|
|
||||||
First, recall the chat message that you got from _@BotFather_. In the message, there was an HTTP API token for your bot. The token will have this format: `389178471:MMTKMrnZB4ErUzJmuFIXTKE6DupLSgoa7h4o`. You will use that token to set the `TELEGRAM_BOT_TOKEN` environment variable. In the terminal where you plan to run `solana-watchtower`, run the following:
|
First, recall the chat message that you got from _@BotFather_. In the message, there was an HTTP API token for your bot. The token will have this format: `389178471:MMTKMrnZB4ErUzJmuFIXTKE6DupLSgoa7h4o`. You will use that token to set the `TELEGRAM_BOT_TOKEN` environment variable. In the terminal where you plan to run `agave-watchtower`, run the following:
|
||||||
|
|
||||||
```
|
```
|
||||||
export TELEGRAM_BOT_TOKEN=<HTTP API Token>
|
export TELEGRAM_BOT_TOKEN=<HTTP API Token>
|
||||||
|
@ -73,14 +73,14 @@ Next, in your browser, go to `https://api.telegram.org/bot<HTTP API Token>/getUp
|
||||||
|
|
||||||
The response should be in JSON. Search for the string `"chat":` in the JSON. The `id` value of that chat is your `TELEGRAM_CHAT_ID`. It will be a negative number like: `-781559558`. Remember to include the negative sign! If you cannot find `"chat":` in the JSON, then you may have to remove the bot from your chat group and add it again.
|
The response should be in JSON. Search for the string `"chat":` in the JSON. The `id` value of that chat is your `TELEGRAM_CHAT_ID`. It will be a negative number like: `-781559558`. Remember to include the negative sign! If you cannot find `"chat":` in the JSON, then you may have to remove the bot from your chat group and add it again.
|
||||||
|
|
||||||
With your Telegram chat id in hand, export the environment variable where you plan to run `solana-watchtower`:
|
With your Telegram chat id in hand, export the environment variable where you plan to run `agave-watchtower`:
|
||||||
|
|
||||||
```
|
```
|
||||||
export TELEGRAM_CHAT_ID=<negative chat id number>
|
export TELEGRAM_CHAT_ID=<negative chat id number>
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Restart solana-watchtower
|
#### Restart agave-watchtower
|
||||||
|
|
||||||
Once your environment variables are set, restart `solana-watchtower`. You should see output about your validator.
|
Once your environment variables are set, restart `agave-watchtower`. You should see output about your validator.
|
||||||
|
|
||||||
To test that your Telegram configuration is working properly, you could stop your validator briefly until it is labeled as delinquent. Up to a minute after the validator is delinquent, you should receive a message in the Telegram group from your bot. Start the validator again and verify that you get another message in your Telegram group from the bot. The message should say `all clear`.
|
To test that your Telegram configuration is working properly, you could stop your validator briefly until it is labeled as delinquent. Up to a minute after the validator is delinquent, you should receive a message in the Telegram group from your bot. Start the validator again and verify that you get another message in your Telegram group from the bot. The message should say `all clear`.
|
|
@ -11,7 +11,7 @@ pagination_label: "Validator Guides: Restart a Cluster"
|
||||||
In Solana 1.14 or greater, run the following command to output the latest
|
In Solana 1.14 or greater, run the following command to output the latest
|
||||||
optimistically confirmed slot your validator observed:
|
optimistically confirmed slot your validator observed:
|
||||||
```bash
|
```bash
|
||||||
solana-ledger-tool -l ledger latest-optimistic-slots
|
agave-ledger-tool -l ledger latest-optimistic-slots
|
||||||
```
|
```
|
||||||
|
|
||||||
In Solana 1.13 or less, the latest optimistically confirmed can be found by looking for the more recent occurrence of
|
In Solana 1.13 or less, the latest optimistically confirmed can be found by looking for the more recent occurrence of
|
||||||
|
@ -34,11 +34,11 @@ instead.
|
||||||
### Step 4. Create a new snapshot for slot `SLOT_X` with a hard fork at slot `SLOT_X`
|
### Step 4. Create a new snapshot for slot `SLOT_X` with a hard fork at slot `SLOT_X`
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ solana-ledger-tool -l <LEDGER_PATH> --snapshot-archive-path <SNAPSHOTS_PATH> --incremental-snapshot-archive-path <INCREMENTAL_SNAPSHOTS_PATH> create-snapshot SLOT_X <SNAPSHOTS_PATH> --hard-fork SLOT_X
|
$ agave-ledger-tool -l <LEDGER_PATH> --snapshot-archive-path <SNAPSHOTS_PATH> --incremental-snapshot-archive-path <INCREMENTAL_SNAPSHOTS_PATH> create-snapshot SLOT_X <SNAPSHOTS_PATH> --hard-fork SLOT_X
|
||||||
```
|
```
|
||||||
|
|
||||||
The snapshots directory should now contain the new snapshot.
|
The snapshots directory should now contain the new snapshot.
|
||||||
`solana-ledger-tool create-snapshot` will also output the new shred version, and bank hash value,
|
`agave-ledger-tool create-snapshot` will also output the new shred version, and bank hash value,
|
||||||
call this NEW_SHRED_VERSION and NEW_BANK_HASH respectively.
|
call this NEW_SHRED_VERSION and NEW_BANK_HASH respectively.
|
||||||
|
|
||||||
Adjust your validator's arguments:
|
Adjust your validator's arguments:
|
||||||
|
@ -68,7 +68,7 @@ Post something like the following to #announcements (adjusting the text as appro
|
||||||
> 2. a. Preferred method, start from your local ledger with:
|
> 2. a. Preferred method, start from your local ledger with:
|
||||||
>
|
>
|
||||||
> ```bash
|
> ```bash
|
||||||
> solana-validator
|
> agave-validator
|
||||||
> --wait-for-supermajority SLOT_X # <-- NEW! IMPORTANT! REMOVE AFTER THIS RESTART
|
> --wait-for-supermajority SLOT_X # <-- NEW! IMPORTANT! REMOVE AFTER THIS RESTART
|
||||||
> --expected-bank-hash NEW_BANK_HASH # <-- NEW! IMPORTANT! REMOVE AFTER THIS RESTART
|
> --expected-bank-hash NEW_BANK_HASH # <-- NEW! IMPORTANT! REMOVE AFTER THIS RESTART
|
||||||
> --hard-fork SLOT_X # <-- NEW! IMPORTANT! REMOVE AFTER THIS RESTART
|
> --hard-fork SLOT_X # <-- NEW! IMPORTANT! REMOVE AFTER THIS RESTART
|
||||||
|
@ -84,7 +84,7 @@ Post something like the following to #announcements (adjusting the text as appro
|
||||||
> b. If your validator doesn't have ledger up to slot SLOT_X or if you have deleted your ledger, have it instead download a snapshot with:
|
> b. If your validator doesn't have ledger up to slot SLOT_X or if you have deleted your ledger, have it instead download a snapshot with:
|
||||||
>
|
>
|
||||||
> ```bash
|
> ```bash
|
||||||
> solana-validator
|
> agave-validator
|
||||||
> --wait-for-supermajority SLOT_X # <-- NEW! IMPORTANT! REMOVE AFTER THIS RESTART
|
> --wait-for-supermajority SLOT_X # <-- NEW! IMPORTANT! REMOVE AFTER THIS RESTART
|
||||||
> --expected-bank-hash NEW_BANK_HASH # <-- NEW! IMPORTANT! REMOVE AFTER THIS RESTART
|
> --expected-bank-hash NEW_BANK_HASH # <-- NEW! IMPORTANT! REMOVE AFTER THIS RESTART
|
||||||
> --entrypoint entrypoint.testnet.solana.com:8001
|
> --entrypoint entrypoint.testnet.solana.com:8001
|
||||||
|
@ -95,7 +95,7 @@ Post something like the following to #announcements (adjusting the text as appro
|
||||||
> ... # <-- your other --identity/--vote-account/etc arguments
|
> ... # <-- your other --identity/--vote-account/etc arguments
|
||||||
> ```
|
> ```
|
||||||
>
|
>
|
||||||
> You can check for which slots your ledger has with: `solana-ledger-tool -l path/to/ledger bounds`
|
> You can check for which slots your ledger has with: `agave-ledger-tool -l path/to/ledger bounds`
|
||||||
>
|
>
|
||||||
> 3. Wait until 80% of the stake comes online
|
> 3. Wait until 80% of the stake comes online
|
||||||
>
|
>
|
||||||
|
@ -122,7 +122,7 @@ and create a new snapshot with additional `--destake-vote-account <PUBKEY>`
|
||||||
arguments for each of the non-responsive validator's vote account address
|
arguments for each of the non-responsive validator's vote account address
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ solana-ledger-tool -l ledger create-snapshot SLOT_X ledger --hard-fork SLOT_X \
|
$ agave-ledger-tool -l ledger create-snapshot SLOT_X ledger --hard-fork SLOT_X \
|
||||||
--destake-vote-account <VOTE_ACCOUNT_1> \
|
--destake-vote-account <VOTE_ACCOUNT_1> \
|
||||||
--destake-vote-account <VOTE_ACCOUNT_2> \
|
--destake-vote-account <VOTE_ACCOUNT_2> \
|
||||||
.
|
.
|
||||||
|
|
|
@ -85,11 +85,11 @@ For more information on etcd TLS setup, please refer to
|
||||||
https://etcd.io/docs/v3.5/op-guide/security/#example-2-client-to-server-authentication-with-https-client-certificates
|
https://etcd.io/docs/v3.5/op-guide/security/#example-2-client-to-server-authentication-with-https-client-certificates
|
||||||
|
|
||||||
### Primary Validator
|
### Primary Validator
|
||||||
The following additional `solana-validator` parameters are required to enable
|
The following additional `agave-validator` parameters are required to enable
|
||||||
tower storage into etcd:
|
tower storage into etcd:
|
||||||
|
|
||||||
```
|
```
|
||||||
solana-validator ... \
|
agave-validator ... \
|
||||||
--tower-storage etcd \
|
--tower-storage etcd \
|
||||||
--etcd-cacert-file certs/etcd-ca.pem \
|
--etcd-cacert-file certs/etcd-ca.pem \
|
||||||
--etcd-cert-file certs/validator.pem \
|
--etcd-cert-file certs/validator.pem \
|
||||||
|
@ -103,7 +103,7 @@ that your etcd endpoint remain accessible at all times.
|
||||||
|
|
||||||
### Secondary Validator
|
### Secondary Validator
|
||||||
Configure the secondary validator like the primary with the exception of the
|
Configure the secondary validator like the primary with the exception of the
|
||||||
following `solana-validator` command-line argument changes:
|
following `agave-validator` command-line argument changes:
|
||||||
* Generate and use a secondary validator identity: `--identity secondary-validator-keypair.json`
|
* Generate and use a secondary validator identity: `--identity secondary-validator-keypair.json`
|
||||||
* Add `--no-check-vote-account`
|
* Add `--no-check-vote-account`
|
||||||
* Add `--authorized-voter validator-keypair.json` (where
|
* Add `--authorized-voter validator-keypair.json` (where
|
||||||
|
@ -114,8 +114,8 @@ When both validators are running normally and caught up to the cluster, a
|
||||||
failover from primary to secondary can be triggered by running the following
|
failover from primary to secondary can be triggered by running the following
|
||||||
command on the secondary validator:
|
command on the secondary validator:
|
||||||
```bash
|
```bash
|
||||||
$ solana-validator wait-for-restart-window --identity validator-keypair.json \
|
$ agave-validator wait-for-restart-window --identity validator-keypair.json \
|
||||||
&& solana-validator set-identity validator-keypair.json
|
&& agave-validator set-identity validator-keypair.json
|
||||||
```
|
```
|
||||||
|
|
||||||
The secondary validator will acquire a lock on the tower in etcd to ensure
|
The secondary validator will acquire a lock on the tower in etcd to ensure
|
||||||
|
@ -131,7 +131,7 @@ exit. However if/when the secondary validator restarts, it will do so using the
|
||||||
secondary validator identity and thus the restart cycle is broken.
|
secondary validator identity and thus the restart cycle is broken.
|
||||||
|
|
||||||
## Triggering a failover via monitoring
|
## Triggering a failover via monitoring
|
||||||
Monitoring of your choosing can invoke the `solana-validator set-identity
|
Monitoring of your choosing can invoke the `agave-validator set-identity
|
||||||
validator-keypair.json` command mentioned in the previous section.
|
validator-keypair.json` command mentioned in the previous section.
|
||||||
|
|
||||||
It is not necessary to guarantee the primary validator has halted before failing
|
It is not necessary to guarantee the primary validator has halted before failing
|
||||||
|
|
|
@ -32,7 +32,7 @@ detail on cluster activity.
|
||||||
## Enabling CUDA
|
## Enabling CUDA
|
||||||
|
|
||||||
If your machine has a GPU with CUDA installed \(Linux-only currently\), include
|
If your machine has a GPU with CUDA installed \(Linux-only currently\), include
|
||||||
the `--cuda` argument to `solana-validator`.
|
the `--cuda` argument to `agave-validator`.
|
||||||
|
|
||||||
When your validator is started look for the following log message to indicate
|
When your validator is started look for the following log message to indicate
|
||||||
that CUDA is enabled: `"[<timestamp> solana::validator] CUDA is enabled"`
|
that CUDA is enabled: `"[<timestamp> solana::validator] CUDA is enabled"`
|
||||||
|
@ -47,7 +47,7 @@ the following commands.
|
||||||
#### **Optimize sysctl knobs**
|
#### **Optimize sysctl knobs**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo bash -c "cat >/etc/sysctl.d/21-solana-validator.conf <<EOF
|
sudo bash -c "cat >/etc/sysctl.d/21-agave-validator.conf <<EOF
|
||||||
# Increase UDP buffer sizes
|
# Increase UDP buffer sizes
|
||||||
net.core.rmem_default = 134217728
|
net.core.rmem_default = 134217728
|
||||||
net.core.rmem_max = 134217728
|
net.core.rmem_max = 134217728
|
||||||
|
@ -63,7 +63,7 @@ EOF"
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo sysctl -p /etc/sysctl.d/21-solana-validator.conf
|
sudo sysctl -p /etc/sysctl.d/21-agave-validator.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
#### **Increase systemd and session file limits**
|
#### **Increase systemd and session file limits**
|
||||||
|
@ -261,7 +261,7 @@ Read more about [creating and managing a vote account](./vote-accounts.md).
|
||||||
## Known validators
|
## Known validators
|
||||||
|
|
||||||
If you know and respect other validator operators, you can specify this on the command line with the `--known-validator <PUBKEY>`
|
If you know and respect other validator operators, you can specify this on the command line with the `--known-validator <PUBKEY>`
|
||||||
argument to `solana-validator`. You can specify multiple ones by repeating the argument `--known-validator <PUBKEY1> --known-validator <PUBKEY2>`.
|
argument to `agave-validator`. You can specify multiple ones by repeating the argument `--known-validator <PUBKEY1> --known-validator <PUBKEY2>`.
|
||||||
This has two effects, one is when the validator is booting with `--only-known-rpc`, it will only ask that set of
|
This has two effects, one is when the validator is booting with `--only-known-rpc`, it will only ask that set of
|
||||||
known nodes for downloading genesis and snapshot data. Another is that in combination with the `--halt-on-known-validators-accounts-hash-mismatch` option,
|
known nodes for downloading genesis and snapshot data. Another is that in combination with the `--halt-on-known-validators-accounts-hash-mismatch` option,
|
||||||
it will monitor the merkle root hash of the entire accounts state of other known nodes on gossip and if the hashes produce any mismatch,
|
it will monitor the merkle root hash of the entire accounts state of other known nodes on gossip and if the hashes produce any mismatch,
|
||||||
|
@ -277,13 +277,13 @@ account state divergence.
|
||||||
Connect to the cluster by running:
|
Connect to the cluster by running:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
solana-validator \
|
agave-validator \
|
||||||
--identity ~/validator-keypair.json \
|
--identity ~/validator-keypair.json \
|
||||||
--vote-account ~/vote-account-keypair.json \
|
--vote-account ~/vote-account-keypair.json \
|
||||||
--rpc-port 8899 \
|
--rpc-port 8899 \
|
||||||
--entrypoint entrypoint.devnet.solana.com:8001 \
|
--entrypoint entrypoint.devnet.solana.com:8001 \
|
||||||
--limit-ledger-size \
|
--limit-ledger-size \
|
||||||
--log ~/solana-validator.log
|
--log ~/agave-validator.log
|
||||||
```
|
```
|
||||||
|
|
||||||
To force validator logging to the console add a `--log -` argument, otherwise
|
To force validator logging to the console add a `--log -` argument, otherwise
|
||||||
|
@ -296,7 +296,7 @@ The ledger will be placed in the `ledger/` directory by default, use the
|
||||||
> [paper wallet seed phrase](../../cli/wallets/paper.md)
|
> [paper wallet seed phrase](../../cli/wallets/paper.md)
|
||||||
> for your `--identity` and/or
|
> for your `--identity` and/or
|
||||||
> `--authorized-voter` keypairs. To use these, pass the respective argument as
|
> `--authorized-voter` keypairs. To use these, pass the respective argument as
|
||||||
> `solana-validator --identity ASK ... --authorized-voter ASK ...`
|
> `agave-validator --identity ASK ... --authorized-voter ASK ...`
|
||||||
> and you will be prompted to enter your seed phrases and optional passphrase.
|
> and you will be prompted to enter your seed phrases and optional passphrase.
|
||||||
|
|
||||||
Confirm your validator is connected to the network by opening a new terminal and
|
Confirm your validator is connected to the network by opening a new terminal and
|
||||||
|
@ -312,7 +312,7 @@ If your validator is connected, its public key and IP address will appear in the
|
||||||
|
|
||||||
By default the validator will dynamically select available network ports in the
|
By default the validator will dynamically select available network ports in the
|
||||||
8000-10000 range, and may be overridden with `--dynamic-port-range`. For
|
8000-10000 range, and may be overridden with `--dynamic-port-range`. For
|
||||||
example, `solana-validator --dynamic-port-range 11000-11020 ...` will restrict
|
example, `agave-validator --dynamic-port-range 11000-11020 ...` will restrict
|
||||||
the validator to ports 11000-11020.
|
the validator to ports 11000-11020.
|
||||||
|
|
||||||
### Limiting ledger size to conserve disk space
|
### Limiting ledger size to conserve disk space
|
||||||
|
@ -366,8 +366,8 @@ WantedBy=multi-user.target
|
||||||
```
|
```
|
||||||
|
|
||||||
Now create `/home/sol/bin/validator.sh` to include the desired
|
Now create `/home/sol/bin/validator.sh` to include the desired
|
||||||
`solana-validator` command-line. Ensure that the 'exec' command is used to
|
`agave-validator` command-line. Ensure that the 'exec' command is used to
|
||||||
start the validator process (i.e. "exec solana-validator ..."). This is
|
start the validator process (i.e. "exec agave-validator ..."). This is
|
||||||
important because without it, logrotate will end up killing the validator
|
important because without it, logrotate will end up killing the validator
|
||||||
every time the logs are rotated.
|
every time the logs are rotated.
|
||||||
|
|
||||||
|
@ -394,14 +394,14 @@ to be reverted and the issue reproduced before help can be provided.
|
||||||
|
|
||||||
#### Log rotation
|
#### Log rotation
|
||||||
|
|
||||||
The validator log file, as specified by `--log ~/solana-validator.log`, can get
|
The validator log file, as specified by `--log ~/agave-validator.log`, can get
|
||||||
very large over time and it's recommended that log rotation be configured.
|
very large over time and it's recommended that log rotation be configured.
|
||||||
|
|
||||||
The validator will re-open its log file when it receives the `USR1` signal, which is the
|
The validator will re-open its log file when it receives the `USR1` signal, which is the
|
||||||
basic primitive that enables log rotation.
|
basic primitive that enables log rotation.
|
||||||
|
|
||||||
If the validator is being started by a wrapper shell script, it is important to
|
If the validator is being started by a wrapper shell script, it is important to
|
||||||
launch the process with `exec` (`exec solana-validator ...`) when using logrotate.
|
launch the process with `exec` (`exec agave-validator ...`) when using logrotate.
|
||||||
This will prevent the `USR1` signal from being sent to the script's process
|
This will prevent the `USR1` signal from being sent to the script's process
|
||||||
instead of the validator's, which will kill them both.
|
instead of the validator's, which will kill them both.
|
||||||
|
|
||||||
|
@ -409,13 +409,13 @@ instead of the validator's, which will kill them both.
|
||||||
|
|
||||||
An example setup for the `logrotate`, which assumes that the validator is
|
An example setup for the `logrotate`, which assumes that the validator is
|
||||||
running as a systemd service called `sol.service` and writes a log file at
|
running as a systemd service called `sol.service` and writes a log file at
|
||||||
/home/sol/solana-validator.log:
|
/home/sol/agave-validator.log:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Setup log rotation
|
# Setup log rotation
|
||||||
|
|
||||||
cat > logrotate.sol <<EOF
|
cat > logrotate.sol <<EOF
|
||||||
/home/sol/solana-validator.log {
|
/home/sol/agave-validator.log {
|
||||||
rotate 7
|
rotate 7
|
||||||
daily
|
daily
|
||||||
missingok
|
missingok
|
||||||
|
@ -430,7 +430,7 @@ systemctl restart logrotate.service
|
||||||
|
|
||||||
As mentioned earlier, be sure that if you use logrotate, any script you create
|
As mentioned earlier, be sure that if you use logrotate, any script you create
|
||||||
which starts the solana validator process uses "exec" to do so (example: "exec
|
which starts the solana validator process uses "exec" to do so (example: "exec
|
||||||
solana-validator ..."); otherwise, when logrotate sends its signal to the
|
agave-validator ..."); otherwise, when logrotate sends its signal to the
|
||||||
validator, the enclosing script will die and take the validator process with
|
validator, the enclosing script will die and take the validator process with
|
||||||
it.
|
it.
|
||||||
|
|
||||||
|
@ -465,7 +465,7 @@ Example configuration:
|
||||||
5. Enable swap with `sudo swapon -a` and mount the tmpfs with `sudo mount /mnt/solana-accounts/`
|
5. Enable swap with `sudo swapon -a` and mount the tmpfs with `sudo mount /mnt/solana-accounts/`
|
||||||
6. Confirm swap is active with `free -g` and the tmpfs is mounted with `mount`
|
6. Confirm swap is active with `free -g` and the tmpfs is mounted with `mount`
|
||||||
|
|
||||||
Now add the `--accounts /mnt/solana-accounts` argument to your `solana-validator`
|
Now add the `--accounts /mnt/solana-accounts` argument to your `agave-validator`
|
||||||
command-line arguments and restart the validator.
|
command-line arguments and restart the validator.
|
||||||
|
|
||||||
### Account indexing
|
### Account indexing
|
||||||
|
|
|
@ -94,7 +94,7 @@ The vote authority can be changed at most once per epoch. If the authority is
|
||||||
changed with
|
changed with
|
||||||
[vote-authorize-voter-checked](../../cli/usage.md#solana-vote-authorize-voter-checked),
|
[vote-authorize-voter-checked](../../cli/usage.md#solana-vote-authorize-voter-checked),
|
||||||
this will not take effect until the beginning of the next epoch. To support a
|
this will not take effect until the beginning of the next epoch. To support a
|
||||||
smooth transition of the vote signing, `solana-validator` allows the
|
smooth transition of the vote signing, `agave-validator` allows the
|
||||||
`--authorized-voter` argument to be specified multiple times. This allows the
|
`--authorized-voter` argument to be specified multiple times. This allows the
|
||||||
validator process to keep voting successfully when the network reaches an epoch
|
validator process to keep voting successfully when the network reaches an epoch
|
||||||
boundary at which the validator's vote authority account changes.
|
boundary at which the validator's vote authority account changes.
|
||||||
|
@ -213,7 +213,7 @@ no longer listed in the `solana leader-schedule` output.
|
||||||
### Vote Account Authorized Voter
|
### Vote Account Authorized Voter
|
||||||
|
|
||||||
The _vote authority_ keypair may only be changed at epoch boundaries and
|
The _vote authority_ keypair may only be changed at epoch boundaries and
|
||||||
requires some additional arguments to `solana-validator` for a seamless
|
requires some additional arguments to `agave-validator` for a seamless
|
||||||
migration.
|
migration.
|
||||||
|
|
||||||
1. Run `solana epoch-info`. If there is not much time remaining time in the
|
1. Run `solana epoch-info`. If there is not much time remaining time in the
|
||||||
|
@ -229,13 +229,13 @@ migration.
|
||||||
`solana vote-authorize-voter-checked ~/vote-account-keypair.json ~/validator-keypair.json ~/new-vote-authority.json`.
|
`solana vote-authorize-voter-checked ~/vote-account-keypair.json ~/validator-keypair.json ~/new-vote-authority.json`.
|
||||||
The new vote authority is scheduled to become active starting at the next
|
The new vote authority is scheduled to become active starting at the next
|
||||||
epoch.
|
epoch.
|
||||||
5. `solana-validator` now needs to be restarted with the old and new vote
|
5. `agave-validator` now needs to be restarted with the old and new vote
|
||||||
authority keypairs, so that it can smoothly transition at the next epoch. Add
|
authority keypairs, so that it can smoothly transition at the next epoch. Add
|
||||||
the two arguments on restart:
|
the two arguments on restart:
|
||||||
`--authorized-voter ~/validator-keypair.json --authorized-voter ~/new-vote-authority.json`
|
`--authorized-voter ~/validator-keypair.json --authorized-voter ~/new-vote-authority.json`
|
||||||
6. After the cluster reaches the next epoch, remove the
|
6. After the cluster reaches the next epoch, remove the
|
||||||
`--authorized-voter ~/validator-keypair.json` argument and restart
|
`--authorized-voter ~/validator-keypair.json` argument and restart
|
||||||
`solana-validator`, as the old vote authority keypair is no longer required.
|
`agave-validator`, as the old vote authority keypair is no longer required.
|
||||||
|
|
||||||
### Vote Account Authorized Withdrawer
|
### Vote Account Authorized Withdrawer
|
||||||
|
|
||||||
|
|
|
@ -307,7 +307,7 @@ not start without the settings below.
|
||||||
#### **Optimize sysctl knobs**
|
#### **Optimize sysctl knobs**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo bash -c "cat >/etc/sysctl.d/21-solana-validator.conf <<EOF
|
sudo bash -c "cat >/etc/sysctl.d/21-agave-validator.conf <<EOF
|
||||||
# Increase UDP buffer sizes
|
# Increase UDP buffer sizes
|
||||||
net.core.rmem_default = 134217728
|
net.core.rmem_default = 134217728
|
||||||
net.core.rmem_max = 134217728
|
net.core.rmem_max = 134217728
|
||||||
|
@ -323,7 +323,7 @@ EOF"
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo sysctl -p /etc/sysctl.d/21-solana-validator.conf
|
sudo sysctl -p /etc/sysctl.d/21-agave-validator.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
#### **Increase systemd and session file limits**
|
#### **Increase systemd and session file limits**
|
||||||
|
@ -409,7 +409,7 @@ nano /home/sol/bin/validator.sh
|
||||||
Copy and paste the following contents into `validator.sh` then save the file:
|
Copy and paste the following contents into `validator.sh` then save the file:
|
||||||
|
|
||||||
```
|
```
|
||||||
exec solana-validator \
|
exec agave-validator \
|
||||||
--identity validator-keypair.json \
|
--identity validator-keypair.json \
|
||||||
--vote-account vote-account-keypair.json \
|
--vote-account vote-account-keypair.json \
|
||||||
--known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \
|
--known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \
|
||||||
|
@ -417,7 +417,7 @@ exec solana-validator \
|
||||||
--known-validator Ft5fbkqNa76vnsjYNwjDZUXoTWpP7VYm3mtsaQckQADN \
|
--known-validator Ft5fbkqNa76vnsjYNwjDZUXoTWpP7VYm3mtsaQckQADN \
|
||||||
--known-validator 9QxCLckBiJc783jnMvXZubK4wH86Eqqvashtrwvcsgkv \
|
--known-validator 9QxCLckBiJc783jnMvXZubK4wH86Eqqvashtrwvcsgkv \
|
||||||
--only-known-rpc \
|
--only-known-rpc \
|
||||||
--log /home/sol/solana-validator.log \
|
--log /home/sol/agave-validator.log \
|
||||||
--ledger /mnt/ledger \
|
--ledger /mnt/ledger \
|
||||||
--rpc-port 8899 \
|
--rpc-port 8899 \
|
||||||
--dynamic-port-range 8000-8020 \
|
--dynamic-port-range 8000-8020 \
|
||||||
|
@ -429,7 +429,7 @@ exec solana-validator \
|
||||||
--limit-ledger-size
|
--limit-ledger-size
|
||||||
```
|
```
|
||||||
|
|
||||||
Refer to `solana-validator --help` for more information on what each flag is
|
Refer to `agave-validator --help` for more information on what each flag is
|
||||||
doing in this script. Also refer to the section on
|
doing in this script. Also refer to the section on
|
||||||
[best practices for operating a validator](./best-practices/general.md).
|
[best practices for operating a validator](./best-practices/general.md).
|
||||||
|
|
||||||
|
@ -442,14 +442,14 @@ Test that your `validator.sh` file is running properly by executing the
|
||||||
/home/sol/bin/validator.sh
|
/home/sol/bin/validator.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
The script should execute the `solana-validator` process. In a new terminal
|
The script should execute the `agave-validator` process. In a new terminal
|
||||||
window, shh into your server, then verify that the process is running:
|
window, shh into your server, then verify that the process is running:
|
||||||
|
|
||||||
```
|
```
|
||||||
ps aux | grep solana-validator
|
ps aux | grep agave-validator
|
||||||
```
|
```
|
||||||
|
|
||||||
You should see a line in the output that includes `solana-validator` with all
|
You should see a line in the output that includes `agave-validator` with all
|
||||||
the flags that were added to your `validator.sh` script.
|
the flags that were added to your `validator.sh` script.
|
||||||
|
|
||||||
Next, we need to look at the logs to make sure everything is operating properly.
|
Next, we need to look at the logs to make sure everything is operating properly.
|
||||||
|
@ -464,7 +464,7 @@ In a new terminal window, ssh into your validator machine, switch users to the
|
||||||
|
|
||||||
```
|
```
|
||||||
su - sol
|
su - sol
|
||||||
tail -f solana-validator.log
|
tail -f agave-validator.log
|
||||||
```
|
```
|
||||||
|
|
||||||
The `tail` command will continue to display the output of a file as the file
|
The `tail` command will continue to display the output of a file as the file
|
||||||
|
@ -567,14 +567,14 @@ Now verify that the validator is running properly by tailing the logs and using
|
||||||
the commands mentioned earlier to check gossip and Solana validators:
|
the commands mentioned earlier to check gossip and Solana validators:
|
||||||
|
|
||||||
```
|
```
|
||||||
tail -f /home/sol/solana-validator*.log
|
tail -f /home/sol/agave-validator*.log
|
||||||
```
|
```
|
||||||
|
|
||||||
## Monitoring
|
## Monitoring
|
||||||
|
|
||||||
`solana-watchtower` is a command you can run on a separate machine to monitor
|
`agave-watchtower` is a command you can run on a separate machine to monitor
|
||||||
your server. You can read more about handling
|
your server. You can read more about handling
|
||||||
[automatic restarts and monitoring](./best-practices/monitoring.md#solana-watchtower)
|
[automatic restarts and monitoring](./best-practices/monitoring.md#agave-watchtower)
|
||||||
using Solana Watchtower here in the docs.
|
using Solana Watchtower here in the docs.
|
||||||
|
|
||||||
## Common issues
|
## Common issues
|
||||||
|
|
|
@ -18,11 +18,11 @@ You will want to be aware of the following flags:
|
||||||
- `--no-voting`: runs the validator without participating in consensus. Typically, you do not want to run a validator as _both_ a consensus node and a full RPC node due to resource constraints.
|
- `--no-voting`: runs the validator without participating in consensus. Typically, you do not want to run a validator as _both_ a consensus node and a full RPC node due to resource constraints.
|
||||||
- `--private-rpc`: does not publish the validator's open RPC port in the `solana gossip` command
|
- `--private-rpc`: does not publish the validator's open RPC port in the `solana gossip` command
|
||||||
|
|
||||||
> For more explanation on the flags used in the command, refer to the `solana-validator --help` command
|
> For more explanation on the flags used in the command, refer to the `agave-validator --help` command
|
||||||
|
|
||||||
```
|
```
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
exec solana-validator \
|
exec agave-validator \
|
||||||
--identity /home/sol/validator-keypair.json \
|
--identity /home/sol/validator-keypair.json \
|
||||||
--known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \
|
--known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \
|
||||||
--known-validator dDzy5SR3AXdYWVqbDEkVFdvSPCtS9ihF5kJkHCtXoFs \
|
--known-validator dDzy5SR3AXdYWVqbDEkVFdvSPCtS9ihF5kJkHCtXoFs \
|
||||||
|
|
|
@ -24,20 +24,20 @@ implementation for the PostgreSQL database.
|
||||||
|
|
||||||
### Important Crates:
|
### Important Crates:
|
||||||
|
|
||||||
- [`solana-geyser-plugin-interface`] — This crate defines the plugin
|
- [`agave-geyser-plugin-interface`] — This crate defines the plugin
|
||||||
interfaces.
|
interfaces.
|
||||||
|
|
||||||
- [`solana-accountsdb-plugin-postgres`] — The crate for the referential
|
- [`solana-accountsdb-plugin-postgres`] — The crate for the referential
|
||||||
plugin implementation for the PostgreSQL database.
|
plugin implementation for the PostgreSQL database.
|
||||||
|
|
||||||
[`solana-geyser-plugin-interface`]: https://docs.rs/solana-geyser-plugin-interface
|
[`agave-geyser-plugin-interface`]: https://docs.rs/agave-geyser-plugin-interface
|
||||||
[`solana-accountsdb-plugin-postgres`]: https://docs.rs/solana-accountsdb-plugin-postgres
|
[`solana-accountsdb-plugin-postgres`]: https://docs.rs/solana-accountsdb-plugin-postgres
|
||||||
[`solana-sdk`]: https://docs.rs/solana-sdk
|
[`solana-sdk`]: https://docs.rs/solana-sdk
|
||||||
[`solana-transaction-status`]: https://docs.rs/solana-transaction-status
|
[`solana-transaction-status`]: https://docs.rs/solana-transaction-status
|
||||||
|
|
||||||
## The Plugin Interface
|
## The Plugin Interface
|
||||||
|
|
||||||
The Plugin interface is declared in [`solana-geyser-plugin-interface`]. It
|
The Plugin interface is declared in [`agave-geyser-plugin-interface`]. It
|
||||||
is defined by the trait `GeyserPlugin`. The plugin should implement the
|
is defined by the trait `GeyserPlugin`. The plugin should implement the
|
||||||
trait and expose a "C" function `_create_plugin` to return the pointer to this
|
trait and expose a "C" function `_create_plugin` to return the pointer to this
|
||||||
trait. For example, in the referential implementation, the following code
|
trait. For example, in the referential implementation, the following code
|
||||||
|
@ -166,7 +166,7 @@ please refer to [`solana-sdk`] and [`solana-transaction-status`]
|
||||||
|
|
||||||
The `slot` points to the slot the transaction is executed at.
|
The `slot` points to the slot the transaction is executed at.
|
||||||
For more details, please refer to the Rust documentation in
|
For more details, please refer to the Rust documentation in
|
||||||
[`solana-geyser-plugin-interface`].
|
[`agave-geyser-plugin-interface`].
|
||||||
|
|
||||||
## Example PostgreSQL Plugin
|
## Example PostgreSQL Plugin
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
[package]
|
[package]
|
||||||
name = "solana-geyser-plugin-interface"
|
name = "agave-geyser-plugin-interface"
|
||||||
description = "The Solana Geyser plugin interface."
|
description = "The Solana Geyser plugin interface."
|
||||||
documentation = "https://docs.rs/solana-geyser-plugin-interface"
|
documentation = "https://docs.rs/agave-geyser-plugin-interface"
|
||||||
version = { workspace = true }
|
version = { workspace = true }
|
||||||
authors = { workspace = true }
|
authors = { workspace = true }
|
||||||
repository = { workspace = true }
|
repository = { workspace = true }
|
||||||
|
|
|
@ -327,7 +327,7 @@ pub trait GeyserPlugin: Any + Send + Sync + std::fmt::Debug {
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
/// ```
|
/// ```
|
||||||
/// use solana_geyser_plugin_interface::geyser_plugin_interface::{GeyserPlugin,
|
/// use agave_geyser_plugin_interface::geyser_plugin_interface::{GeyserPlugin,
|
||||||
/// GeyserPluginError, Result};
|
/// GeyserPluginError, Result};
|
||||||
///
|
///
|
||||||
/// #[derive(Debug)]
|
/// #[derive(Debug)]
|
||||||
|
|
|
@ -10,6 +10,7 @@ license = { workspace = true }
|
||||||
edition = { workspace = true }
|
edition = { workspace = true }
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
agave-geyser-plugin-interface = { workspace = true }
|
||||||
bs58 = { workspace = true }
|
bs58 = { workspace = true }
|
||||||
crossbeam-channel = { workspace = true }
|
crossbeam-channel = { workspace = true }
|
||||||
json5 = { workspace = true }
|
json5 = { workspace = true }
|
||||||
|
@ -20,7 +21,6 @@ log = { workspace = true }
|
||||||
serde_json = { workspace = true }
|
serde_json = { workspace = true }
|
||||||
solana-accounts-db = { workspace = true }
|
solana-accounts-db = { workspace = true }
|
||||||
solana-entry = { workspace = true }
|
solana-entry = { workspace = true }
|
||||||
solana-geyser-plugin-interface = { workspace = true }
|
|
||||||
solana-ledger = { workspace = true }
|
solana-ledger = { workspace = true }
|
||||||
solana-measure = { workspace = true }
|
solana-measure = { workspace = true }
|
||||||
solana-metrics = { workspace = true }
|
solana-metrics = { workspace = true }
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
/// Module responsible for notifying plugins of account updates
|
/// Module responsible for notifying plugins of account updates
|
||||||
use {
|
use {
|
||||||
crate::geyser_plugin_manager::GeyserPluginManager,
|
crate::geyser_plugin_manager::GeyserPluginManager,
|
||||||
|
agave_geyser_plugin_interface::geyser_plugin_interface::{
|
||||||
|
ReplicaAccountInfoV3, ReplicaAccountInfoVersions,
|
||||||
|
},
|
||||||
log::*,
|
log::*,
|
||||||
solana_accounts_db::{
|
solana_accounts_db::{
|
||||||
account_storage::meta::StoredAccountMeta,
|
account_storage::meta::StoredAccountMeta,
|
||||||
accounts_update_notifier_interface::AccountsUpdateNotifierInterface,
|
accounts_update_notifier_interface::AccountsUpdateNotifierInterface,
|
||||||
},
|
},
|
||||||
solana_geyser_plugin_interface::geyser_plugin_interface::{
|
|
||||||
ReplicaAccountInfoV3, ReplicaAccountInfoVersions,
|
|
||||||
},
|
|
||||||
solana_measure::measure::Measure,
|
solana_measure::measure::Measure,
|
||||||
solana_metrics::*,
|
solana_metrics::*,
|
||||||
solana_sdk::{
|
solana_sdk::{
|
||||||
|
|
|
@ -3,10 +3,10 @@ use {
|
||||||
block_metadata_notifier_interface::BlockMetadataNotifier,
|
block_metadata_notifier_interface::BlockMetadataNotifier,
|
||||||
geyser_plugin_manager::GeyserPluginManager,
|
geyser_plugin_manager::GeyserPluginManager,
|
||||||
},
|
},
|
||||||
log::*,
|
agave_geyser_plugin_interface::geyser_plugin_interface::{
|
||||||
solana_geyser_plugin_interface::geyser_plugin_interface::{
|
|
||||||
ReplicaBlockInfoV3, ReplicaBlockInfoVersions,
|
ReplicaBlockInfoV3, ReplicaBlockInfoVersions,
|
||||||
},
|
},
|
||||||
|
log::*,
|
||||||
solana_measure::measure::Measure,
|
solana_measure::measure::Measure,
|
||||||
solana_metrics::*,
|
solana_metrics::*,
|
||||||
solana_sdk::{clock::UnixTimestamp, pubkey::Pubkey, reward_info::RewardInfo},
|
solana_sdk::{clock::UnixTimestamp, pubkey::Pubkey, reward_info::RewardInfo},
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
/// Module responsible for notifying plugins about entries
|
/// Module responsible for notifying plugins about entries
|
||||||
use {
|
use {
|
||||||
crate::geyser_plugin_manager::GeyserPluginManager,
|
crate::geyser_plugin_manager::GeyserPluginManager,
|
||||||
log::*,
|
agave_geyser_plugin_interface::geyser_plugin_interface::{
|
||||||
solana_entry::entry::EntrySummary,
|
|
||||||
solana_geyser_plugin_interface::geyser_plugin_interface::{
|
|
||||||
ReplicaEntryInfoV2, ReplicaEntryInfoVersions,
|
ReplicaEntryInfoV2, ReplicaEntryInfoVersions,
|
||||||
},
|
},
|
||||||
|
log::*,
|
||||||
|
solana_entry::entry::EntrySummary,
|
||||||
solana_ledger::entry_notifier_interface::EntryNotifier,
|
solana_ledger::entry_notifier_interface::EntryNotifier,
|
||||||
solana_measure::measure::Measure,
|
solana_measure::measure::Measure,
|
||||||
solana_metrics::*,
|
solana_metrics::*,
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
use {
|
use {
|
||||||
|
agave_geyser_plugin_interface::geyser_plugin_interface::GeyserPlugin,
|
||||||
jsonrpc_core::{ErrorCode, Result as JsonRpcResult},
|
jsonrpc_core::{ErrorCode, Result as JsonRpcResult},
|
||||||
jsonrpc_server_utils::tokio::sync::oneshot::Sender as OneShotSender,
|
jsonrpc_server_utils::tokio::sync::oneshot::Sender as OneShotSender,
|
||||||
libloading::Library,
|
libloading::Library,
|
||||||
log::*,
|
log::*,
|
||||||
solana_geyser_plugin_interface::geyser_plugin_interface::GeyserPlugin,
|
|
||||||
std::{
|
std::{
|
||||||
ops::{Deref, DerefMut},
|
ops::{Deref, DerefMut},
|
||||||
path::Path,
|
path::Path,
|
||||||
|
@ -442,8 +442,8 @@ mod tests {
|
||||||
crate::geyser_plugin_manager::{
|
crate::geyser_plugin_manager::{
|
||||||
GeyserPluginManager, LoadedGeyserPlugin, TESTPLUGIN2_CONFIG, TESTPLUGIN_CONFIG,
|
GeyserPluginManager, LoadedGeyserPlugin, TESTPLUGIN2_CONFIG, TESTPLUGIN_CONFIG,
|
||||||
},
|
},
|
||||||
|
agave_geyser_plugin_interface::geyser_plugin_interface::GeyserPlugin,
|
||||||
libloading::Library,
|
libloading::Library,
|
||||||
solana_geyser_plugin_interface::geyser_plugin_interface::GeyserPlugin,
|
|
||||||
std::sync::{Arc, RwLock},
|
std::sync::{Arc, RwLock},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use {
|
use {
|
||||||
crate::geyser_plugin_manager::GeyserPluginManager,
|
crate::geyser_plugin_manager::GeyserPluginManager,
|
||||||
|
agave_geyser_plugin_interface::geyser_plugin_interface::SlotStatus,
|
||||||
log::*,
|
log::*,
|
||||||
solana_geyser_plugin_interface::geyser_plugin_interface::SlotStatus,
|
|
||||||
solana_measure::measure::Measure,
|
solana_measure::measure::Measure,
|
||||||
solana_metrics::*,
|
solana_metrics::*,
|
||||||
solana_sdk::clock::Slot,
|
solana_sdk::clock::Slot,
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
/// Module responsible for notifying plugins of transactions
|
/// Module responsible for notifying plugins of transactions
|
||||||
use {
|
use {
|
||||||
crate::geyser_plugin_manager::GeyserPluginManager,
|
crate::geyser_plugin_manager::GeyserPluginManager,
|
||||||
log::*,
|
agave_geyser_plugin_interface::geyser_plugin_interface::{
|
||||||
solana_geyser_plugin_interface::geyser_plugin_interface::{
|
|
||||||
ReplicaTransactionInfoV2, ReplicaTransactionInfoVersions,
|
ReplicaTransactionInfoV2, ReplicaTransactionInfoVersions,
|
||||||
},
|
},
|
||||||
|
log::*,
|
||||||
solana_measure::measure::Measure,
|
solana_measure::measure::Measure,
|
||||||
solana_metrics::*,
|
solana_metrics::*,
|
||||||
solana_rpc::transaction_notifier_interface::TransactionNotifier,
|
solana_rpc::transaction_notifier_interface::TransactionNotifier,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
[package]
|
[package]
|
||||||
name = "solana-install"
|
name = "agave-install"
|
||||||
description = "The solana cluster software installer"
|
description = "The solana cluster software installer"
|
||||||
documentation = "https://docs.rs/solana-install"
|
documentation = "https://docs.rs/agave-install"
|
||||||
version = { workspace = true }
|
version = { workspace = true }
|
||||||
authors = { workspace = true }
|
authors = { workspace = true }
|
||||||
repository = { workspace = true }
|
repository = { workspace = true }
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
# except according to those terms.
|
# except according to those terms.
|
||||||
|
|
||||||
# This is just a little script that can be downloaded from the internet to
|
# This is just a little script that can be downloaded from the internet to
|
||||||
# install solana-install. It just does platform detection, downloads the installer
|
# install agave-install. It just does platform detection, downloads the installer
|
||||||
# and runs it.
|
# and runs it.
|
||||||
|
|
||||||
{ # this ensures the entire script is downloaded #
|
{ # this ensures the entire script is downloaded #
|
||||||
|
@ -24,11 +24,11 @@ set -e
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
cat 1>&2 <<EOF
|
cat 1>&2 <<EOF
|
||||||
solana-install-init
|
agave-install-init
|
||||||
initializes a new installation
|
initializes a new installation
|
||||||
|
|
||||||
USAGE:
|
USAGE:
|
||||||
solana-install-init [FLAGS] [OPTIONS] --data_dir <PATH> --pubkey <PUBKEY>
|
agave-install-init [FLAGS] [OPTIONS] --data_dir <PATH> --pubkey <PUBKEY>
|
||||||
|
|
||||||
FLAGS:
|
FLAGS:
|
||||||
-h, --help Prints help information
|
-h, --help Prints help information
|
||||||
|
@ -81,7 +81,7 @@ main() {
|
||||||
esac
|
esac
|
||||||
TARGET="${_cputype}-${_ostype}"
|
TARGET="${_cputype}-${_ostype}"
|
||||||
|
|
||||||
temp_dir="$(mktemp -d 2>/dev/null || ensure mktemp -d -t solana-install-init)"
|
temp_dir="$(mktemp -d 2>/dev/null || ensure mktemp -d -t agave-install-init)"
|
||||||
ensure mkdir -p "$temp_dir"
|
ensure mkdir -p "$temp_dir"
|
||||||
|
|
||||||
# Check for SOLANA_RELEASE environment variable override. Otherwise fetch
|
# Check for SOLANA_RELEASE environment variable override. Otherwise fetch
|
||||||
|
@ -101,8 +101,8 @@ main() {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
download_url="$SOLANA_DOWNLOAD_ROOT/$release/solana-install-init-$TARGET"
|
download_url="$SOLANA_DOWNLOAD_ROOT/$release/agave-install-init-$TARGET"
|
||||||
solana_install_init="$temp_dir/solana-install-init"
|
solana_install_init="$temp_dir/agave-install-init"
|
||||||
|
|
||||||
printf 'downloading %s installer\n' "$release" 1>&2
|
printf 'downloading %s installer\n' "$release" 1>&2
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ main() {
|
||||||
ensure chmod u+x "$solana_install_init"
|
ensure chmod u+x "$solana_install_init"
|
||||||
if [ ! -x "$solana_install_init" ]; then
|
if [ ! -x "$solana_install_init" ]; then
|
||||||
printf '%s\n' "Cannot execute $solana_install_init (likely because of mounting /tmp as noexec)." 1>&2
|
printf '%s\n' "Cannot execute $solana_install_init (likely because of mounting /tmp as noexec)." 1>&2
|
||||||
printf '%s\n' "Please copy the file to a location where you can execute binaries and run ./solana-install-init." 1>&2
|
printf '%s\n' "Please copy the file to a location where you can execute binaries and run ./agave-install-init." 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -130,7 +130,7 @@ main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
err() {
|
err() {
|
||||||
printf 'solana-install-init: %s\n' "$1" >&2
|
printf 'agave-install-init: %s\n' "$1" >&2
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,11 +4,11 @@ set -e
|
||||||
cd "$(dirname "$0")"/..
|
cd "$(dirname "$0")"/..
|
||||||
cargo="$(readlink -f "./cargo")"
|
cargo="$(readlink -f "./cargo")"
|
||||||
|
|
||||||
"$cargo" build --package solana-install
|
"$cargo" build --package agave-install
|
||||||
export PATH=$PWD/target/debug:$PATH
|
export PATH=$PWD/target/debug:$PATH
|
||||||
|
|
||||||
echo "\`\`\`manpage"
|
echo "\`\`\`manpage"
|
||||||
solana-install --help
|
agave-install --help
|
||||||
echo "\`\`\`"
|
echo "\`\`\`"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ commands=(init info deploy update run)
|
||||||
|
|
||||||
for x in "${commands[@]}"; do
|
for x in "${commands[@]}"; do
|
||||||
echo "\`\`\`manpage"
|
echo "\`\`\`manpage"
|
||||||
solana-install "${x}" --help
|
agave-install "${x}" --help
|
||||||
echo "\`\`\`"
|
echo "\`\`\`"
|
||||||
echo ""
|
echo ""
|
||||||
done
|
done
|
||||||
|
|
|
@ -16,7 +16,7 @@ fn press_enter() {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
solana_install::main_init().unwrap_or_else(|err| {
|
agave_install::main_init().unwrap_or_else(|err| {
|
||||||
println!("Error: {err}");
|
println!("Error: {err}");
|
||||||
press_enter();
|
press_enter();
|
||||||
exit(1);
|
exit(1);
|
|
@ -540,7 +540,7 @@ pub fn init(
|
||||||
explicit_release: Option<ExplicitRelease>,
|
explicit_release: Option<ExplicitRelease>,
|
||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
let config = {
|
let config = {
|
||||||
// Write new config file only if different, so that running |solana-install init|
|
// Write new config file only if different, so that running |agave-install init|
|
||||||
// repeatedly doesn't unnecessarily re-download
|
// repeatedly doesn't unnecessarily re-download
|
||||||
let mut current_config = Config::load(config_file).unwrap_or_default();
|
let mut current_config = Config::load(config_file).unwrap_or_default();
|
||||||
current_config.current_update_manifest = None;
|
current_config.current_update_manifest = None;
|
||||||
|
@ -870,7 +870,7 @@ fn check_for_newer_github_release(
|
||||||
prerelease_allowed: bool,
|
prerelease_allowed: bool,
|
||||||
) -> Result<Option<String>, String> {
|
) -> Result<Option<String>, String> {
|
||||||
let client = reqwest::blocking::Client::builder()
|
let client = reqwest::blocking::Client::builder()
|
||||||
.user_agent("solana-install")
|
.user_agent("agave-install")
|
||||||
.build()
|
.build()
|
||||||
.map_err(|err| err.to_string())?;
|
.map_err(|err| err.to_string())?;
|
||||||
|
|
||||||
|
|
|
@ -281,7 +281,7 @@ pub fn main() -> Result<(), String> {
|
||||||
pub fn main_init() -> Result<(), String> {
|
pub fn main_init() -> Result<(), String> {
|
||||||
solana_logger::setup();
|
solana_logger::setup();
|
||||||
|
|
||||||
let matches = App::new("solana-install-init")
|
let matches = App::new("agave-install-init")
|
||||||
.about("Initializes a new installation")
|
.about("Initializes a new installation")
|
||||||
.version(solana_version::version!())
|
.version(solana_version::version!())
|
||||||
.arg({
|
.arg({
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
fn main() -> Result<(), String> {
|
fn main() -> Result<(), String> {
|
||||||
solana_install::main()
|
agave_install::main()
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
[package]
|
[package]
|
||||||
name = "solana-ledger-tool"
|
name = "agave-ledger-tool"
|
||||||
description = "Blockchain, Rebuilt for Scale"
|
description = "Blockchain, Rebuilt for Scale"
|
||||||
documentation = "https://docs.rs/solana-ledger-tool"
|
documentation = "https://docs.rs/agave-ledger-tool"
|
||||||
version = { workspace = true }
|
version = { workspace = true }
|
||||||
authors = { workspace = true }
|
authors = { workspace = true }
|
||||||
repository = { workspace = true }
|
repository = { workspace = true }
|
||||||
|
|
|
@ -359,7 +359,7 @@ pub fn blockstore_subcommands<'a, 'b>(hidden: bool) -> Vec<App<'a, 'b>> {
|
||||||
and timestamps.",
|
and timestamps.",
|
||||||
)
|
)
|
||||||
// This command is important in cluster restart scenarios, so do not hide it ever
|
// This command is important in cluster restart scenarios, so do not hide it ever
|
||||||
// such that the subcommand will be visible as the top level of solana-ledger-tool
|
// such that the subcommand will be visible as the top level of agave-ledger-tool
|
||||||
.arg(
|
.arg(
|
||||||
Arg::with_name("num_slots")
|
Arg::with_name("num_slots")
|
||||||
.long("num-slots")
|
.long("num-slots")
|
||||||
|
|
|
@ -187,14 +187,14 @@ pub fn load_and_process_ledger(
|
||||||
}
|
}
|
||||||
|
|
||||||
let account_paths = if let Some(account_paths) = arg_matches.value_of("account_paths") {
|
let account_paths = if let Some(account_paths) = arg_matches.value_of("account_paths") {
|
||||||
// If this blockstore access is Primary, no other process (solana-validator) can hold
|
// If this blockstore access is Primary, no other process (agave-validator) can hold
|
||||||
// Primary access. So, allow a custom accounts path without worry of wiping the accounts
|
// Primary access. So, allow a custom accounts path without worry of wiping the accounts
|
||||||
// of solana-validator.
|
// of agave-validator.
|
||||||
if !blockstore.is_primary_access() {
|
if !blockstore.is_primary_access() {
|
||||||
// Attempt to open the Blockstore in Primary access; if successful, no other process
|
// Attempt to open the Blockstore in Primary access; if successful, no other process
|
||||||
// was holding Primary so allow things to proceed with custom accounts path. Release
|
// was holding Primary so allow things to proceed with custom accounts path. Release
|
||||||
// the Primary access instead of holding it to give priority to solana-validator over
|
// the Primary access instead of holding it to give priority to agave-validator over
|
||||||
// solana-ledger-tool should solana-validator start before we've finished.
|
// agave-ledger-tool should agave-validator start before we've finished.
|
||||||
info!(
|
info!(
|
||||||
"Checking if another process currently holding Primary access to {:?}",
|
"Checking if another process currently holding Primary access to {:?}",
|
||||||
blockstore.ledger_path()
|
blockstore.ledger_path()
|
||||||
|
|
|
@ -431,7 +431,7 @@ impl Rocks {
|
||||||
info!(
|
info!(
|
||||||
"Opening Rocks with secondary (read only) access at: {secondary_path:?}. \
|
"Opening Rocks with secondary (read only) access at: {secondary_path:?}. \
|
||||||
This secondary access could temporarily degrade other accesses, such as \
|
This secondary access could temporarily degrade other accesses, such as \
|
||||||
by solana-validator"
|
by agave-validator"
|
||||||
);
|
);
|
||||||
DB::open_cf_descriptors_as_secondary(
|
DB::open_cf_descriptors_as_secondary(
|
||||||
&db_options,
|
&db_options,
|
||||||
|
|
|
@ -2321,13 +2321,13 @@ fn test_hard_fork_with_gap_in_roots() {
|
||||||
);
|
);
|
||||||
|
|
||||||
// create hard-forked snapshot only for validator a, emulating the manual cluster restart
|
// create hard-forked snapshot only for validator a, emulating the manual cluster restart
|
||||||
// procedure with `solana-ledger-tool create-snapshot`
|
// procedure with `agave-ledger-tool create-snapshot`
|
||||||
let genesis_slot = 0;
|
let genesis_slot = 0;
|
||||||
{
|
{
|
||||||
let blockstore_a = Blockstore::open(&val_a_ledger_path).unwrap();
|
let blockstore_a = Blockstore::open(&val_a_ledger_path).unwrap();
|
||||||
create_snapshot_to_hard_fork(&blockstore_a, hard_fork_slot, vec![hard_fork_slot]);
|
create_snapshot_to_hard_fork(&blockstore_a, hard_fork_slot, vec![hard_fork_slot]);
|
||||||
|
|
||||||
// Intentionally make solana-validator unbootable by replaying blocks from the genesis to
|
// Intentionally make agave-validator unbootable by replaying blocks from the genesis to
|
||||||
// ensure the hard-forked snapshot is used always. Otherwise, we couldn't create a gap
|
// ensure the hard-forked snapshot is used always. Otherwise, we couldn't create a gap
|
||||||
// in the ledger roots column family reliably.
|
// in the ledger roots column family reliably.
|
||||||
// There was a bug which caused the hard-forked snapshot at an unrooted slot to forget
|
// There was a bug which caused the hard-forked snapshot at an unrooted slot to forget
|
||||||
|
|
|
@ -14,9 +14,9 @@ if [[ "$SOLANA_GPU_MISSING" -eq 1 ]]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -n $SOLANA_CUDA ]]; then
|
if [[ -n $SOLANA_CUDA ]]; then
|
||||||
program=$solana_validator_cuda
|
program=$agave_validator_cuda
|
||||||
else
|
else
|
||||||
program=$solana_validator
|
program=$agave_validator
|
||||||
fi
|
fi
|
||||||
|
|
||||||
no_restart=0
|
no_restart=0
|
||||||
|
|
|
@ -40,6 +40,8 @@ else
|
||||||
if [[ -z $program ]]; then
|
if [[ -z $program ]]; then
|
||||||
crate="cli"
|
crate="cli"
|
||||||
program="solana"
|
program="solana"
|
||||||
|
elif [[ $program == "validator" || $program == "ledger-tool" || $program == "watchtower" || $program == "install" ]]; then
|
||||||
|
program="agave-$program"
|
||||||
else
|
else
|
||||||
program="solana-$program"
|
program="solana-$program"
|
||||||
fi
|
fi
|
||||||
|
@ -63,8 +65,8 @@ fi
|
||||||
|
|
||||||
solana_bench_tps=$(solana_program bench-tps)
|
solana_bench_tps=$(solana_program bench-tps)
|
||||||
solana_faucet=$(solana_program faucet)
|
solana_faucet=$(solana_program faucet)
|
||||||
solana_validator=$(solana_program validator)
|
agave_validator=$(solana_program validator)
|
||||||
solana_validator_cuda="$solana_validator --cuda"
|
agave_validator_cuda="$agave_validator --cuda"
|
||||||
solana_genesis=$(solana_program genesis)
|
solana_genesis=$(solana_program genesis)
|
||||||
solana_gossip=$(solana_program gossip)
|
solana_gossip=$(solana_program gossip)
|
||||||
solana_keygen=$(solana_program keygen)
|
solana_keygen=$(solana_program keygen)
|
||||||
|
|
|
@ -64,7 +64,7 @@ while [[ -n $1 ]]; do
|
||||||
elif [[ $1 = --no-airdrop ]]; then
|
elif [[ $1 = --no-airdrop ]]; then
|
||||||
airdrops_enabled=0
|
airdrops_enabled=0
|
||||||
shift
|
shift
|
||||||
# solana-validator options
|
# agave-validator options
|
||||||
elif [[ $1 = --expected-genesis-hash ]]; then
|
elif [[ $1 = --expected-genesis-hash ]]; then
|
||||||
args+=("$1" "$2")
|
args+=("$1" "$2")
|
||||||
shift 2
|
shift 2
|
||||||
|
@ -270,9 +270,9 @@ if [[ $maybeRequireTower = true ]]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -n $SOLANA_CUDA ]]; then
|
if [[ -n $SOLANA_CUDA ]]; then
|
||||||
program=$solana_validator_cuda
|
program=$agave_validator_cuda
|
||||||
else
|
else
|
||||||
program=$solana_validator
|
program=$agave_validator
|
||||||
fi
|
fi
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
|
@ -122,7 +122,7 @@ Operate a configured testnet
|
||||||
|
|
||||||
sanity/start-specific options:
|
sanity/start-specific options:
|
||||||
-F - Discard validator nodes that didn't bootup successfully
|
-F - Discard validator nodes that didn't bootup successfully
|
||||||
-o noInstallCheck - Skip solana-install sanity
|
-o noInstallCheck - Skip agave-install sanity
|
||||||
-o rejectExtraNodes - Require the exact number of nodes
|
-o rejectExtraNodes - Require the exact number of nodes
|
||||||
|
|
||||||
stop-specific options:
|
stop-specific options:
|
||||||
|
@ -138,7 +138,7 @@ Operate a configured testnet
|
||||||
--netem-cmd - Optional command argument to netem. Default is "add". Use "cleanup" to remove rules.
|
--netem-cmd - Optional command argument to netem. Default is "add". Use "cleanup" to remove rules.
|
||||||
|
|
||||||
update-specific options:
|
update-specific options:
|
||||||
--platform linux|osx|windows - Deploy the tarball using 'solana-install deploy ...' for the
|
--platform linux|osx|windows - Deploy the tarball using 'agave-install deploy ...' for the
|
||||||
given platform (multiple platforms may be specified)
|
given platform (multiple platforms may be specified)
|
||||||
(-t option must be supplied as well)
|
(-t option must be supplied as well)
|
||||||
|
|
||||||
|
@ -514,11 +514,11 @@ deployUpdate() {
|
||||||
declare bootstrapLeader=${validatorIpList[0]}
|
declare bootstrapLeader=${validatorIpList[0]}
|
||||||
|
|
||||||
for updatePlatform in $updatePlatforms; do
|
for updatePlatform in $updatePlatforms; do
|
||||||
echo "--- Deploying solana-install update: $updatePlatform"
|
echo "--- Deploying agave-install update: $updatePlatform"
|
||||||
(
|
(
|
||||||
set -x
|
set -x
|
||||||
|
|
||||||
scripts/solana-install-update-manifest-keypair.sh "$updatePlatform"
|
scripts/agave-install-update-manifest-keypair.sh "$updatePlatform"
|
||||||
|
|
||||||
timeout 30s scp "${sshOptions[@]}" \
|
timeout 30s scp "${sshOptions[@]}" \
|
||||||
update_manifest_keypair.json "$bootstrapLeader:solana/update_manifest_keypair.json"
|
update_manifest_keypair.json "$bootstrapLeader:solana/update_manifest_keypair.json"
|
||||||
|
|
|
@ -35,6 +35,6 @@ loadConfigFile
|
||||||
PATH="$HOME"/.cargo/bin:"$PATH"
|
PATH="$HOME"/.cargo/bin:"$PATH"
|
||||||
|
|
||||||
set -x
|
set -x
|
||||||
scripts/solana-install-deploy.sh \
|
scripts/agave-install-deploy.sh \
|
||||||
--keypair config/faucet.json \
|
--keypair config/faucet.json \
|
||||||
localhost "$releaseChannel" "$updatePlatform"
|
localhost "$releaseChannel" "$updatePlatform"
|
||||||
|
|
|
@ -121,7 +121,7 @@ cat >> ~/solana/on-reboot <<EOF
|
||||||
echo \$! > system-stats.pid
|
echo \$! > system-stats.pid
|
||||||
|
|
||||||
if ${GPU_CUDA_OK} && [[ -e /dev/nvidia0 ]]; then
|
if ${GPU_CUDA_OK} && [[ -e /dev/nvidia0 ]]; then
|
||||||
echo Selecting solana-validator-cuda
|
echo Selecting agave-validator-cuda
|
||||||
export SOLANA_CUDA=1
|
export SOLANA_CUDA=1
|
||||||
elif ${GPU_FAIL_IF_NONE} ; then
|
elif ${GPU_FAIL_IF_NONE} ; then
|
||||||
echo "Expected GPU, found none!"
|
echo "Expected GPU, found none!"
|
||||||
|
@ -257,13 +257,13 @@ EOF
|
||||||
|
|
||||||
if [[ -n "$maybeWarpSlot" ]]; then
|
if [[ -n "$maybeWarpSlot" ]]; then
|
||||||
# shellcheck disable=SC2086 # Do not want to quote $maybeWarSlot
|
# shellcheck disable=SC2086 # Do not want to quote $maybeWarSlot
|
||||||
solana-ledger-tool -l config/bootstrap-validator create-snapshot 0 config/bootstrap-validator $maybeWarpSlot
|
agave-ledger-tool -l config/bootstrap-validator create-snapshot 0 config/bootstrap-validator $maybeWarpSlot
|
||||||
fi
|
fi
|
||||||
|
|
||||||
solana-ledger-tool -l config/bootstrap-validator shred-version --max-genesis-archive-unpacked-size 1073741824 | tee config/shred-version
|
agave-ledger-tool -l config/bootstrap-validator shred-version --max-genesis-archive-unpacked-size 1073741824 | tee config/shred-version
|
||||||
|
|
||||||
if [[ -n "$maybeWaitForSupermajority" ]]; then
|
if [[ -n "$maybeWaitForSupermajority" ]]; then
|
||||||
bankHash=$(solana-ledger-tool -l config/bootstrap-validator bank-hash --halt-at-slot 0)
|
bankHash=$(agave-ledger-tool -l config/bootstrap-validator bank-hash --halt-at-slot 0)
|
||||||
extraNodeArgs="$extraNodeArgs --expected-bank-hash $bankHash"
|
extraNodeArgs="$extraNodeArgs --expected-bank-hash $bankHash"
|
||||||
echo "$bankHash" > config/bank-hash
|
echo "$bankHash" > config/bank-hash
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -65,7 +65,7 @@ local|tar|skip)
|
||||||
export USE_INSTALL=1
|
export USE_INSTALL=1
|
||||||
solana_cli=solana
|
solana_cli=solana
|
||||||
solana_gossip=solana-gossip
|
solana_gossip=solana-gossip
|
||||||
solana_install=solana-install
|
solana_install=agave-install
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unknown deployment method: $deployMethod"
|
echo "Unknown deployment method: $deployMethod"
|
||||||
|
@ -122,7 +122,7 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if $installCheck && [[ -r update_manifest_keypair.json ]]; then
|
if $installCheck && [[ -r update_manifest_keypair.json ]]; then
|
||||||
echo "--- $sanityTargetIp: solana-install test"
|
echo "--- $sanityTargetIp: agave-install test"
|
||||||
|
|
||||||
(
|
(
|
||||||
set -x
|
set -x
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
///
|
///
|
||||||
/// To receive a Twilio SMS notification on failure, having a Twilio account,
|
/// To receive a Twilio SMS notification on failure, having a Twilio account,
|
||||||
/// and a sending number owned by that account,
|
/// and a sending number owned by that account,
|
||||||
/// define environment variable before running `solana-watchtower`:
|
/// define environment variable before running `agave-watchtower`:
|
||||||
/// ```bash
|
/// ```bash
|
||||||
/// export TWILIO_CONFIG='ACCOUNT=<account>,TOKEN=<securityToken>,TO=<receivingNumber>,FROM=<sendingNumber>'
|
/// export TWILIO_CONFIG='ACCOUNT=<account>,TOKEN=<securityToken>,TO=<receivingNumber>,FROM=<sendingNumber>'
|
||||||
/// ```
|
/// ```
|
||||||
|
@ -208,7 +208,7 @@ impl Notifier {
|
||||||
NotificationType::Resolve { ref incident } => incident.clone().to_string(),
|
NotificationType::Resolve { ref incident } => incident.clone().to_string(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let data = json!({"payload":{"summary":msg,"source":"solana-watchtower","severity":"critical"},"routing_key":routing_key,"event_action":event_action,"dedup_key":dedup_key});
|
let data = json!({"payload":{"summary":msg,"source":"agave-watchtower","severity":"critical"},"routing_key":routing_key,"event_action":event_action,"dedup_key":dedup_key});
|
||||||
let url = "https://events.pagerduty.com/v2/enqueue";
|
let url = "https://events.pagerduty.com/v2/enqueue";
|
||||||
|
|
||||||
if let Err(err) = self.client.post(url).json(&data).send() {
|
if let Err(err) = self.client.post(url).json(&data).send() {
|
||||||
|
|
|
@ -63,6 +63,80 @@ dependencies = [
|
||||||
"zeroize",
|
"zeroize",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "agave-geyser-plugin-interface"
|
||||||
|
version = "1.19.0"
|
||||||
|
dependencies = [
|
||||||
|
"log",
|
||||||
|
"solana-sdk",
|
||||||
|
"solana-transaction-status",
|
||||||
|
"thiserror",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "agave-validator"
|
||||||
|
version = "1.19.0"
|
||||||
|
dependencies = [
|
||||||
|
"agave-geyser-plugin-interface",
|
||||||
|
"chrono",
|
||||||
|
"clap 2.33.3",
|
||||||
|
"console",
|
||||||
|
"core_affinity",
|
||||||
|
"crossbeam-channel",
|
||||||
|
"fd-lock",
|
||||||
|
"indicatif",
|
||||||
|
"itertools",
|
||||||
|
"jsonrpc-core",
|
||||||
|
"jsonrpc-core-client",
|
||||||
|
"jsonrpc-derive",
|
||||||
|
"jsonrpc-ipc-server",
|
||||||
|
"jsonrpc-server-utils",
|
||||||
|
"lazy_static",
|
||||||
|
"libc",
|
||||||
|
"libloading",
|
||||||
|
"log",
|
||||||
|
"num_cpus",
|
||||||
|
"rand 0.8.5",
|
||||||
|
"rayon",
|
||||||
|
"serde",
|
||||||
|
"serde_json",
|
||||||
|
"serde_yaml",
|
||||||
|
"signal-hook",
|
||||||
|
"solana-accounts-db",
|
||||||
|
"solana-clap-utils",
|
||||||
|
"solana-cli-config",
|
||||||
|
"solana-core",
|
||||||
|
"solana-download-utils",
|
||||||
|
"solana-entry",
|
||||||
|
"solana-faucet",
|
||||||
|
"solana-genesis-utils",
|
||||||
|
"solana-geyser-plugin-manager",
|
||||||
|
"solana-gossip",
|
||||||
|
"solana-ledger",
|
||||||
|
"solana-logger",
|
||||||
|
"solana-metrics",
|
||||||
|
"solana-net-utils",
|
||||||
|
"solana-perf",
|
||||||
|
"solana-poh",
|
||||||
|
"solana-rpc",
|
||||||
|
"solana-rpc-client",
|
||||||
|
"solana-rpc-client-api",
|
||||||
|
"solana-runtime",
|
||||||
|
"solana-sdk",
|
||||||
|
"solana-send-transaction-service",
|
||||||
|
"solana-storage-bigtable",
|
||||||
|
"solana-streamer",
|
||||||
|
"solana-svm",
|
||||||
|
"solana-test-validator",
|
||||||
|
"solana-tpu-client",
|
||||||
|
"solana-unified-scheduler-pool",
|
||||||
|
"solana-version",
|
||||||
|
"solana-vote-program",
|
||||||
|
"symlink",
|
||||||
|
"thiserror",
|
||||||
|
"tikv-jemallocator",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ahash"
|
name = "ahash"
|
||||||
version = "0.7.6"
|
version = "0.7.6"
|
||||||
|
@ -5044,20 +5118,11 @@ dependencies = [
|
||||||
"solana-sdk",
|
"solana-sdk",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "solana-geyser-plugin-interface"
|
|
||||||
version = "1.19.0"
|
|
||||||
dependencies = [
|
|
||||||
"log",
|
|
||||||
"solana-sdk",
|
|
||||||
"solana-transaction-status",
|
|
||||||
"thiserror",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-geyser-plugin-manager"
|
name = "solana-geyser-plugin-manager"
|
||||||
version = "1.19.0"
|
version = "1.19.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"agave-geyser-plugin-interface",
|
||||||
"bs58",
|
"bs58",
|
||||||
"crossbeam-channel",
|
"crossbeam-channel",
|
||||||
"json5",
|
"json5",
|
||||||
|
@ -5068,7 +5133,6 @@ dependencies = [
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"solana-accounts-db",
|
"solana-accounts-db",
|
||||||
"solana-entry",
|
"solana-entry",
|
||||||
"solana-geyser-plugin-interface",
|
|
||||||
"solana-ledger",
|
"solana-ledger",
|
||||||
"solana-measure",
|
"solana-measure",
|
||||||
"solana-metrics",
|
"solana-metrics",
|
||||||
|
@ -6055,11 +6119,11 @@ dependencies = [
|
||||||
name = "solana-sbf-rust-simulation"
|
name = "solana-sbf-rust-simulation"
|
||||||
version = "1.19.0"
|
version = "1.19.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"agave-validator",
|
||||||
"solana-logger",
|
"solana-logger",
|
||||||
"solana-program",
|
"solana-program",
|
||||||
"solana-program-test",
|
"solana-program-test",
|
||||||
"solana-sdk",
|
"solana-sdk",
|
||||||
"solana-validator",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -6462,70 +6526,6 @@ dependencies = [
|
||||||
"solana-vote",
|
"solana-vote",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "solana-validator"
|
|
||||||
version = "1.19.0"
|
|
||||||
dependencies = [
|
|
||||||
"chrono",
|
|
||||||
"clap 2.33.3",
|
|
||||||
"console",
|
|
||||||
"core_affinity",
|
|
||||||
"crossbeam-channel",
|
|
||||||
"fd-lock",
|
|
||||||
"indicatif",
|
|
||||||
"itertools",
|
|
||||||
"jsonrpc-core",
|
|
||||||
"jsonrpc-core-client",
|
|
||||||
"jsonrpc-derive",
|
|
||||||
"jsonrpc-ipc-server",
|
|
||||||
"jsonrpc-server-utils",
|
|
||||||
"lazy_static",
|
|
||||||
"libc",
|
|
||||||
"libloading",
|
|
||||||
"log",
|
|
||||||
"num_cpus",
|
|
||||||
"rand 0.8.5",
|
|
||||||
"rayon",
|
|
||||||
"serde",
|
|
||||||
"serde_json",
|
|
||||||
"serde_yaml",
|
|
||||||
"signal-hook",
|
|
||||||
"solana-accounts-db",
|
|
||||||
"solana-clap-utils",
|
|
||||||
"solana-cli-config",
|
|
||||||
"solana-core",
|
|
||||||
"solana-download-utils",
|
|
||||||
"solana-entry",
|
|
||||||
"solana-faucet",
|
|
||||||
"solana-genesis-utils",
|
|
||||||
"solana-geyser-plugin-interface",
|
|
||||||
"solana-geyser-plugin-manager",
|
|
||||||
"solana-gossip",
|
|
||||||
"solana-ledger",
|
|
||||||
"solana-logger",
|
|
||||||
"solana-metrics",
|
|
||||||
"solana-net-utils",
|
|
||||||
"solana-perf",
|
|
||||||
"solana-poh",
|
|
||||||
"solana-rpc",
|
|
||||||
"solana-rpc-client",
|
|
||||||
"solana-rpc-client-api",
|
|
||||||
"solana-runtime",
|
|
||||||
"solana-sdk",
|
|
||||||
"solana-send-transaction-service",
|
|
||||||
"solana-storage-bigtable",
|
|
||||||
"solana-streamer",
|
|
||||||
"solana-svm",
|
|
||||||
"solana-test-validator",
|
|
||||||
"solana-tpu-client",
|
|
||||||
"solana-unified-scheduler-pool",
|
|
||||||
"solana-version",
|
|
||||||
"solana-vote-program",
|
|
||||||
"symlink",
|
|
||||||
"thiserror",
|
|
||||||
"tikv-jemallocator",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-version"
|
name = "solana-version"
|
||||||
version = "1.19.0"
|
version = "1.19.0"
|
||||||
|
|
|
@ -46,7 +46,7 @@ solana-sbf-rust-realloc = { path = "rust/realloc", version = "=1.19.0", default-
|
||||||
solana-sbf-rust-realloc-invoke = { path = "rust/realloc_invoke", version = "=1.19.0" }
|
solana-sbf-rust-realloc-invoke = { path = "rust/realloc_invoke", version = "=1.19.0" }
|
||||||
solana-sdk = { path = "../../sdk", version = "=1.19.0" }
|
solana-sdk = { path = "../../sdk", version = "=1.19.0" }
|
||||||
solana-transaction-status = { path = "../../transaction-status", version = "=1.19.0" }
|
solana-transaction-status = { path = "../../transaction-status", version = "=1.19.0" }
|
||||||
solana-validator = { path = "../../validator", version = "=1.19.0" }
|
agave-validator = { path = "../../validator", version = "=1.19.0" }
|
||||||
solana-zk-token-sdk = { path = "../../zk-token-sdk", version = "=1.19.0" }
|
solana-zk-token-sdk = { path = "../../zk-token-sdk", version = "=1.19.0" }
|
||||||
solana-svm = { path = "../../svm", version = "=1.19.0" }
|
solana-svm = { path = "../../svm", version = "=1.19.0" }
|
||||||
solana_rbpf = "=0.8.0"
|
solana_rbpf = "=0.8.0"
|
||||||
|
|
|
@ -16,10 +16,10 @@ test-bpf = []
|
||||||
solana-program = { workspace = true }
|
solana-program = { workspace = true }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
|
agave-validator = { workspace = true }
|
||||||
solana-logger = { workspace = true }
|
solana-logger = { workspace = true }
|
||||||
solana-program-test = { workspace = true }
|
solana-program-test = { workspace = true }
|
||||||
solana-sdk = { workspace = true }
|
solana-sdk = { workspace = true }
|
||||||
solana-validator = { workspace = true }
|
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
crate-type = ["cdylib", "lib"]
|
crate-type = ["cdylib", "lib"]
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
#![cfg(feature = "test-bpf")]
|
#![cfg(feature = "test-bpf")]
|
||||||
|
|
||||||
use {
|
use {
|
||||||
|
agave_validator::test_validator::*,
|
||||||
solana_program::{
|
solana_program::{
|
||||||
instruction::{AccountMeta, Instruction},
|
instruction::{AccountMeta, Instruction},
|
||||||
pubkey::Pubkey,
|
pubkey::Pubkey,
|
||||||
sysvar,
|
sysvar,
|
||||||
},
|
},
|
||||||
solana_sdk::{signature::Signer, transaction::Transaction},
|
solana_sdk::{signature::Signer, transaction::Transaction},
|
||||||
solana_validator::test_validator::*,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
//! By default the [`block_subscribe`] and [`vote_subscribe`] events are
|
//! By default the [`block_subscribe`] and [`vote_subscribe`] events are
|
||||||
//! disabled on RPC nodes. They can be enabled by passing
|
//! disabled on RPC nodes. They can be enabled by passing
|
||||||
//! `--rpc-pubsub-enable-block-subscription` and
|
//! `--rpc-pubsub-enable-block-subscription` and
|
||||||
//! `--rpc-pubsub-enable-vote-subscription` to `solana-validator`. When these
|
//! `--rpc-pubsub-enable-vote-subscription` to `agave-validator`. When these
|
||||||
//! methods are disabled, the RPC server will return a "Method not found" error
|
//! methods are disabled, the RPC server will return a "Method not found" error
|
||||||
//! message.
|
//! message.
|
||||||
//!
|
//!
|
||||||
|
@ -381,7 +381,7 @@ impl PubsubClient {
|
||||||
/// Receives messages of type [`RpcBlockUpdate`] when a block is confirmed or finalized.
|
/// Receives messages of type [`RpcBlockUpdate`] when a block is confirmed or finalized.
|
||||||
///
|
///
|
||||||
/// This method is disabled by default. It can be enabled by passing
|
/// This method is disabled by default. It can be enabled by passing
|
||||||
/// `--rpc-pubsub-enable-block-subscription` to `solana-validator`.
|
/// `--rpc-pubsub-enable-block-subscription` to `agave-validator`.
|
||||||
///
|
///
|
||||||
/// # RPC Reference
|
/// # RPC Reference
|
||||||
///
|
///
|
||||||
|
@ -452,7 +452,7 @@ impl PubsubClient {
|
||||||
/// votes are observed prior to confirmation and may never be confirmed.
|
/// votes are observed prior to confirmation and may never be confirmed.
|
||||||
///
|
///
|
||||||
/// This method is disabled by default. It can be enabled by passing
|
/// This method is disabled by default. It can be enabled by passing
|
||||||
/// `--rpc-pubsub-enable-vote-subscription` to `solana-validator`.
|
/// `--rpc-pubsub-enable-vote-subscription` to `agave-validator`.
|
||||||
///
|
///
|
||||||
/// # RPC Reference
|
/// # RPC Reference
|
||||||
///
|
///
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
//! By default the [`block_subscribe`] and [`vote_subscribe`] events are
|
//! By default the [`block_subscribe`] and [`vote_subscribe`] events are
|
||||||
//! disabled on RPC nodes. They can be enabled by passing
|
//! disabled on RPC nodes. They can be enabled by passing
|
||||||
//! `--rpc-pubsub-enable-block-subscription` and
|
//! `--rpc-pubsub-enable-block-subscription` and
|
||||||
//! `--rpc-pubsub-enable-vote-subscription` to `solana-validator`. When these
|
//! `--rpc-pubsub-enable-vote-subscription` to `agave-validator`. When these
|
||||||
//! methods are disabled, the RPC server will return a "Method not found" error
|
//! methods are disabled, the RPC server will return a "Method not found" error
|
||||||
//! message.
|
//! message.
|
||||||
//!
|
//!
|
||||||
|
@ -416,7 +416,7 @@ impl PubsubClient {
|
||||||
/// Receives messages of type [`RpcBlockUpdate`] when a block is confirmed or finalized.
|
/// Receives messages of type [`RpcBlockUpdate`] when a block is confirmed or finalized.
|
||||||
///
|
///
|
||||||
/// This method is disabled by default. It can be enabled by passing
|
/// This method is disabled by default. It can be enabled by passing
|
||||||
/// `--rpc-pubsub-enable-block-subscription` to `solana-validator`.
|
/// `--rpc-pubsub-enable-block-subscription` to `agave-validator`.
|
||||||
///
|
///
|
||||||
/// # RPC Reference
|
/// # RPC Reference
|
||||||
///
|
///
|
||||||
|
@ -578,7 +578,7 @@ impl PubsubClient {
|
||||||
/// votes are observed prior to confirmation and may never be confirmed.
|
/// votes are observed prior to confirmation and may never be confirmed.
|
||||||
///
|
///
|
||||||
/// This method is disabled by default. It can be enabled by passing
|
/// This method is disabled by default. It can be enabled by passing
|
||||||
/// `--rpc-pubsub-enable-vote-subscription` to `solana-validator`.
|
/// `--rpc-pubsub-enable-vote-subscription` to `agave-validator`.
|
||||||
///
|
///
|
||||||
/// # RPC Reference
|
/// # RPC Reference
|
||||||
///
|
///
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
fn main() {
|
fn main() {
|
||||||
println!(
|
println!(
|
||||||
r##"rbpf-cli is replaced by solana-ledger-tool program run subcommand.
|
r##"rbpf-cli is replaced by agave-ledger-tool program run subcommand.
|
||||||
Please, use 'solana-ledger-tool program run --help' for more information."##
|
Please, use 'agave-ledger-tool program run --help' for more information."##
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2561,7 +2561,7 @@ pub mod rpc_minimal {
|
||||||
#[rpc(meta, name = "getVersion")]
|
#[rpc(meta, name = "getVersion")]
|
||||||
fn get_version(&self, meta: Self::Metadata) -> Result<RpcVersionInfo>;
|
fn get_version(&self, meta: Self::Metadata) -> Result<RpcVersionInfo>;
|
||||||
|
|
||||||
// TODO: Refactor `solana-validator wait-for-restart-window` to not require this method, so
|
// TODO: Refactor `agave-validator wait-for-restart-window` to not require this method, so
|
||||||
// it can be removed from rpc_minimal
|
// it can be removed from rpc_minimal
|
||||||
#[rpc(meta, name = "getVoteAccounts")]
|
#[rpc(meta, name = "getVoteAccounts")]
|
||||||
fn get_vote_accounts(
|
fn get_vote_accounts(
|
||||||
|
@ -2570,7 +2570,7 @@ pub mod rpc_minimal {
|
||||||
config: Option<RpcGetVoteAccountsConfig>,
|
config: Option<RpcGetVoteAccountsConfig>,
|
||||||
) -> Result<RpcVoteAccountStatus>;
|
) -> Result<RpcVoteAccountStatus>;
|
||||||
|
|
||||||
// TODO: Refactor `solana-validator wait-for-restart-window` to not require this method, so
|
// TODO: Refactor `agave-validator wait-for-restart-window` to not require this method, so
|
||||||
// it can be removed from rpc_minimal
|
// it can be removed from rpc_minimal
|
||||||
#[rpc(meta, name = "getLeaderSchedule")]
|
#[rpc(meta, name = "getLeaderSchedule")]
|
||||||
fn get_leader_schedule(
|
fn get_leader_schedule(
|
||||||
|
@ -2696,7 +2696,7 @@ pub mod rpc_minimal {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Refactor `solana-validator wait-for-restart-window` to not require this method, so
|
// TODO: Refactor `agave-validator wait-for-restart-window` to not require this method, so
|
||||||
// it can be removed from rpc_minimal
|
// it can be removed from rpc_minimal
|
||||||
fn get_vote_accounts(
|
fn get_vote_accounts(
|
||||||
&self,
|
&self,
|
||||||
|
@ -2707,7 +2707,7 @@ pub mod rpc_minimal {
|
||||||
meta.get_vote_accounts(config)
|
meta.get_vote_accounts(config)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Refactor `solana-validator wait-for-restart-window` to not require this method, so
|
// TODO: Refactor `agave-validator wait-for-restart-window` to not require this method, so
|
||||||
// it can be removed from rpc_minimal
|
// it can be removed from rpc_minimal
|
||||||
fn get_leader_schedule(
|
fn get_leader_schedule(
|
||||||
&self,
|
&self,
|
||||||
|
|
|
@ -26,7 +26,7 @@ if [[ -z $URL || -z $TAG ]]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ ! -f update_manifest_keypair.json ]]; then
|
if [[ ! -f update_manifest_keypair.json ]]; then
|
||||||
"$SOLANA_ROOT"/scripts/solana-install-update-manifest-keypair.sh "$OS"
|
"$SOLANA_ROOT"/scripts/agave-install-update-manifest-keypair.sh "$OS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case "$OS" in
|
case "$OS" in
|
||||||
|
@ -76,4 +76,4 @@ if [[ $balance = "0 lamports" ]]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# shellcheck disable=SC2086 # Don't want to double quote $maybeKeypair
|
# shellcheck disable=SC2086 # Don't want to double quote $maybeKeypair
|
||||||
solana-install deploy $maybeKeypair --url "$URL" "$DOWNLOAD_URL" update_manifest_keypair.json
|
agave-install deploy $maybeKeypair --url "$URL" "$DOWNLOAD_URL" update_manifest_keypair.json
|
|
@ -91,8 +91,8 @@ if [[ $CI_OS_NAME = windows ]]; then
|
||||||
cargo-test-bpf
|
cargo-test-bpf
|
||||||
cargo-test-sbf
|
cargo-test-sbf
|
||||||
solana
|
solana
|
||||||
solana-install
|
agave-install
|
||||||
solana-install-init
|
agave-install-init
|
||||||
solana-keygen
|
solana-keygen
|
||||||
solana-stake-accounts
|
solana-stake-accounts
|
||||||
solana-test-validator
|
solana-test-validator
|
||||||
|
@ -106,12 +106,12 @@ else
|
||||||
solana-bench-tps
|
solana-bench-tps
|
||||||
solana-faucet
|
solana-faucet
|
||||||
solana-gossip
|
solana-gossip
|
||||||
solana-install
|
agave-install
|
||||||
solana-keygen
|
solana-keygen
|
||||||
solana-ledger-tool
|
agave-ledger-tool
|
||||||
solana-log-analyzer
|
solana-log-analyzer
|
||||||
solana-net-shaper
|
solana-net-shaper
|
||||||
solana-validator
|
agave-validator
|
||||||
rbpf-cli
|
rbpf-cli
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -123,11 +123,11 @@ else
|
||||||
cargo-test-bpf
|
cargo-test-bpf
|
||||||
cargo-test-sbf
|
cargo-test-sbf
|
||||||
solana-dos
|
solana-dos
|
||||||
solana-install-init
|
agave-install-init
|
||||||
solana-stake-accounts
|
solana-stake-accounts
|
||||||
solana-test-validator
|
solana-test-validator
|
||||||
solana-tokens
|
solana-tokens
|
||||||
solana-watchtower
|
agave-watchtower
|
||||||
)
|
)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ source ci/rust-version.sh nightly
|
||||||
declare tainted_packages=(
|
declare tainted_packages=(
|
||||||
solana-accounts-bench
|
solana-accounts-bench
|
||||||
solana-banking-bench
|
solana-banking-bench
|
||||||
solana-ledger-tool
|
agave-ledger-tool
|
||||||
)
|
)
|
||||||
|
|
||||||
# convert to comma separeted (ref: https://stackoverflow.com/a/53839433)
|
# convert to comma separeted (ref: https://stackoverflow.com/a/53839433)
|
||||||
|
|
|
@ -23,9 +23,11 @@ fi
|
||||||
PATH=$PWD/target/$profile:$PATH
|
PATH=$PWD/target/$profile:$PATH
|
||||||
|
|
||||||
ok=true
|
ok=true
|
||||||
for program in solana-{faucet,genesis,keygen,validator}; do
|
for program in solana-{faucet,genesis,keygen}; do
|
||||||
$program -V || ok=false
|
$program -V || ok=false
|
||||||
done
|
done
|
||||||
|
agave-validator -V || ok=false
|
||||||
|
|
||||||
$ok || {
|
$ok || {
|
||||||
echo
|
echo
|
||||||
echo "Unable to locate required programs. Try building them first with:"
|
echo "Unable to locate required programs. Try building them first with:"
|
||||||
|
@ -115,7 +117,7 @@ args=(
|
||||||
--no-os-network-limits-test
|
--no-os-network-limits-test
|
||||||
)
|
)
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
solana-validator "${args[@]}" $SOLANA_RUN_SH_VALIDATOR_ARGS &
|
agave-validator "${args[@]}" $SOLANA_RUN_SH_VALIDATOR_ARGS &
|
||||||
validator=$!
|
validator=$!
|
||||||
|
|
||||||
wait "$validator"
|
wait "$validator"
|
||||||
|
|
|
@ -30,14 +30,14 @@ solanaInstallGlobalOpts=(
|
||||||
bootstrapInstall() {
|
bootstrapInstall() {
|
||||||
declare v=$1
|
declare v=$1
|
||||||
if [[ ! -h $solanaInstallDataDir/active_release ]]; then
|
if [[ ! -h $solanaInstallDataDir/active_release ]]; then
|
||||||
sh "$SOLANA_ROOT"/install/solana-install-init.sh "$v" "${solanaInstallGlobalOpts[@]}"
|
sh "$SOLANA_ROOT"/install/agave-install-init.sh "$v" "${solanaInstallGlobalOpts[@]}"
|
||||||
fi
|
fi
|
||||||
export PATH="$solanaInstallDataDir/active_release/bin/:$PATH"
|
export PATH="$solanaInstallDataDir/active_release/bin/:$PATH"
|
||||||
}
|
}
|
||||||
|
|
||||||
bootstrapInstall "$baselineVersion"
|
bootstrapInstall "$baselineVersion"
|
||||||
for v in "${otherVersions[@]}"; do
|
for v in "${otherVersions[@]}"; do
|
||||||
solana-install-init "${solanaInstallGlobalOpts[@]}" "$v"
|
agave-install-init "${solanaInstallGlobalOpts[@]}" "$v"
|
||||||
solana -V
|
solana -V
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@ -113,7 +113,7 @@ for v in "${otherVersions[@]}"; do
|
||||||
(
|
(
|
||||||
set -x
|
set -x
|
||||||
tmux new-window -t abi -n "$v" " \
|
tmux new-window -t abi -n "$v" " \
|
||||||
$SOLANA_BIN/solana-validator \
|
$SOLANA_BIN/agave-validator \
|
||||||
--ledger $ledger \
|
--ledger $ledger \
|
||||||
--no-snapshot-fetch \
|
--no-snapshot-fetch \
|
||||||
--entrypoint 127.0.0.1:8001 \
|
--entrypoint 127.0.0.1:8001 \
|
||||||
|
|
|
@ -19,14 +19,14 @@ solanaInstallGlobalOpts=(
|
||||||
bootstrapInstall() {
|
bootstrapInstall() {
|
||||||
declare v=$1
|
declare v=$1
|
||||||
if [[ ! -h $solanaInstallDataDir/active_release ]]; then
|
if [[ ! -h $solanaInstallDataDir/active_release ]]; then
|
||||||
sh "$SOLANA_ROOT"/install/solana-install-init.sh "$v" "${solanaInstallGlobalOpts[@]}"
|
sh "$SOLANA_ROOT"/install/agave-install-init.sh "$v" "${solanaInstallGlobalOpts[@]}"
|
||||||
fi
|
fi
|
||||||
export PATH="$solanaInstallDataDir/active_release/bin/:$PATH"
|
export PATH="$solanaInstallDataDir/active_release/bin/:$PATH"
|
||||||
}
|
}
|
||||||
|
|
||||||
bootstrapInstall "edge"
|
bootstrapInstall "edge"
|
||||||
solana-install-init --version
|
agave-install-init --version
|
||||||
solana-install-init edge
|
agave-install-init edge
|
||||||
solana-gossip --version
|
solana-gossip --version
|
||||||
solana-dos --version
|
solana-dos --version
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
[package]
|
[package]
|
||||||
name = "solana-validator"
|
name = "agave-validator"
|
||||||
description = "Blockchain, Rebuilt for Scale"
|
description = "Blockchain, Rebuilt for Scale"
|
||||||
documentation = "https://docs.rs/solana-validator"
|
documentation = "https://docs.rs/agave-validator"
|
||||||
default-run = "solana-validator"
|
default-run = "agave-validator"
|
||||||
version = { workspace = true }
|
version = { workspace = true }
|
||||||
authors = { workspace = true }
|
authors = { workspace = true }
|
||||||
repository = { workspace = true }
|
repository = { workspace = true }
|
||||||
|
@ -11,6 +11,7 @@ license = { workspace = true }
|
||||||
edition = { workspace = true }
|
edition = { workspace = true }
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
agave-geyser-plugin-interface = { workspace = true }
|
||||||
chrono = { workspace = true, features = ["default", "serde"] }
|
chrono = { workspace = true, features = ["default", "serde"] }
|
||||||
clap = { workspace = true }
|
clap = { workspace = true }
|
||||||
console = { workspace = true }
|
console = { workspace = true }
|
||||||
|
@ -41,7 +42,6 @@ solana-download-utils = { workspace = true }
|
||||||
solana-entry = { workspace = true }
|
solana-entry = { workspace = true }
|
||||||
solana-faucet = { workspace = true }
|
solana-faucet = { workspace = true }
|
||||||
solana-genesis-utils = { workspace = true }
|
solana-genesis-utils = { workspace = true }
|
||||||
solana-geyser-plugin-interface = { workspace = true }
|
|
||||||
solana-geyser-plugin-manager = { workspace = true }
|
solana-geyser-plugin-manager = { workspace = true }
|
||||||
solana-gossip = { workspace = true }
|
solana-gossip = { workspace = true }
|
||||||
solana-ledger = { workspace = true }
|
solana-ledger = { workspace = true }
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
use {
|
use {
|
||||||
|
agave_validator::{
|
||||||
|
admin_rpc_service, cli, dashboard::Dashboard, ledger_lockfile, lock_ledger,
|
||||||
|
println_name_value, redirect_stderr_to_file,
|
||||||
|
},
|
||||||
clap::{crate_name, value_t, value_t_or_exit, values_t_or_exit},
|
clap::{crate_name, value_t, value_t_or_exit, values_t_or_exit},
|
||||||
crossbeam_channel::unbounded,
|
crossbeam_channel::unbounded,
|
||||||
itertools::Itertools,
|
itertools::Itertools,
|
||||||
|
@ -28,10 +32,6 @@ use {
|
||||||
},
|
},
|
||||||
solana_streamer::socket::SocketAddrSpace,
|
solana_streamer::socket::SocketAddrSpace,
|
||||||
solana_test_validator::*,
|
solana_test_validator::*,
|
||||||
solana_validator::{
|
|
||||||
admin_rpc_service, cli, dashboard::Dashboard, ledger_lockfile, lock_ledger,
|
|
||||||
println_name_value, redirect_stderr_to_file,
|
|
||||||
},
|
|
||||||
std::{
|
std::{
|
||||||
collections::HashSet,
|
collections::HashSet,
|
||||||
fs, io,
|
fs, io,
|
||||||
|
|
|
@ -447,7 +447,7 @@ pub fn attempt_download_genesis_and_snapshot(
|
||||||
)
|
)
|
||||||
.unwrap_or_else(|err| {
|
.unwrap_or_else(|err| {
|
||||||
// Consider failures here to be more likely due to user error (eg,
|
// Consider failures here to be more likely due to user error (eg,
|
||||||
// incorrect `solana-validator` command-line arguments) rather than the
|
// incorrect `agave-validator` command-line arguments) rather than the
|
||||||
// RPC node failing.
|
// RPC node failing.
|
||||||
//
|
//
|
||||||
// Power users can always use the `--no-check-vote-account` option to
|
// Power users can always use the `--no-check-vote-account` option to
|
||||||
|
|
|
@ -2,6 +2,15 @@
|
||||||
#[cfg(not(target_env = "msvc"))]
|
#[cfg(not(target_env = "msvc"))]
|
||||||
use jemallocator::Jemalloc;
|
use jemallocator::Jemalloc;
|
||||||
use {
|
use {
|
||||||
|
agave_validator::{
|
||||||
|
admin_rpc_service,
|
||||||
|
admin_rpc_service::{load_staked_nodes_overrides, StakedNodesOverrides},
|
||||||
|
bootstrap,
|
||||||
|
cli::{app, warn_for_deprecated_arguments, DefaultArgs},
|
||||||
|
dashboard::Dashboard,
|
||||||
|
ledger_lockfile, lock_ledger, new_spinner_progress_bar, println_name_value,
|
||||||
|
redirect_stderr_to_file,
|
||||||
|
},
|
||||||
clap::{crate_name, value_t, value_t_or_exit, values_t, values_t_or_exit, ArgMatches},
|
clap::{crate_name, value_t, value_t_or_exit, values_t, values_t_or_exit, ArgMatches},
|
||||||
console::style,
|
console::style,
|
||||||
crossbeam_channel::unbounded,
|
crossbeam_channel::unbounded,
|
||||||
|
@ -60,15 +69,6 @@ use {
|
||||||
solana_streamer::socket::SocketAddrSpace,
|
solana_streamer::socket::SocketAddrSpace,
|
||||||
solana_svm::runtime_config::RuntimeConfig,
|
solana_svm::runtime_config::RuntimeConfig,
|
||||||
solana_tpu_client::tpu_client::DEFAULT_TPU_ENABLE_UDP,
|
solana_tpu_client::tpu_client::DEFAULT_TPU_ENABLE_UDP,
|
||||||
solana_validator::{
|
|
||||||
admin_rpc_service,
|
|
||||||
admin_rpc_service::{load_staked_nodes_overrides, StakedNodesOverrides},
|
|
||||||
bootstrap,
|
|
||||||
cli::{app, warn_for_deprecated_arguments, DefaultArgs},
|
|
||||||
dashboard::Dashboard,
|
|
||||||
ledger_lockfile, lock_ledger, new_spinner_progress_bar, println_name_value,
|
|
||||||
redirect_stderr_to_file,
|
|
||||||
},
|
|
||||||
std::{
|
std::{
|
||||||
collections::{HashSet, VecDeque},
|
collections::{HashSet, VecDeque},
|
||||||
env,
|
env,
|
||||||
|
@ -917,7 +917,7 @@ pub fn main() {
|
||||||
let logfile = matches
|
let logfile = matches
|
||||||
.value_of("logfile")
|
.value_of("logfile")
|
||||||
.map(|s| s.into())
|
.map(|s| s.into())
|
||||||
.unwrap_or_else(|| format!("solana-validator-{}.log", identity_keypair.pubkey()));
|
.unwrap_or_else(|| format!("agave-validator-{}.log", identity_keypair.pubkey()));
|
||||||
|
|
||||||
if logfile == "-" {
|
if logfile == "-" {
|
||||||
None
|
None
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
[package]
|
[package]
|
||||||
name = "solana-watchtower"
|
name = "agave-watchtower"
|
||||||
description = "Blockchain, Rebuilt for Scale"
|
description = "Blockchain, Rebuilt for Scale"
|
||||||
documentation = "https://docs.rs/solana-watchtower"
|
documentation = "https://docs.rs/agave-watchtower"
|
||||||
version = { workspace = true }
|
version = { workspace = true }
|
||||||
authors = { workspace = true }
|
authors = { workspace = true }
|
||||||
repository = { workspace = true }
|
repository = { workspace = true }
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
The `solana-watchtower` program is used to monitor the health of a cluster. It
|
The `agave-watchtower` program is used to monitor the health of a cluster. It
|
||||||
periodically polls the cluster over an RPC API to confirm that the transaction
|
periodically polls the cluster over an RPC API to confirm that the transaction
|
||||||
count is advancing, new blockhashes are available, and no validators are
|
count is advancing, new blockhashes are available, and no validators are
|
||||||
delinquent. Results are reported as InfluxDB metrics, with an optional push
|
delinquent. Results are reported as InfluxDB metrics, with an optional push
|
||||||
|
|
|
@ -47,7 +47,7 @@ fn get_config() -> Config {
|
||||||
.version(solana_version::version!())
|
.version(solana_version::version!())
|
||||||
.after_help("ADDITIONAL HELP:
|
.after_help("ADDITIONAL HELP:
|
||||||
To receive a Slack, Discord, PagerDuty and/or Telegram notification on sanity failure,
|
To receive a Slack, Discord, PagerDuty and/or Telegram notification on sanity failure,
|
||||||
define environment variables before running `solana-watchtower`:
|
define environment variables before running `agave-watchtower`:
|
||||||
|
|
||||||
export SLACK_WEBHOOK=...
|
export SLACK_WEBHOOK=...
|
||||||
export DISCORD_WEBHOOK=...
|
export DISCORD_WEBHOOK=...
|
||||||
|
@ -63,7 +63,7 @@ fn get_config() -> Config {
|
||||||
|
|
||||||
To receive a Twilio SMS notification on failure, having a Twilio account,
|
To receive a Twilio SMS notification on failure, having a Twilio account,
|
||||||
and a sending number owned by that account,
|
and a sending number owned by that account,
|
||||||
define environment variable before running `solana-watchtower`:
|
define environment variable before running `agave-watchtower`:
|
||||||
|
|
||||||
export TWILIO_CONFIG='ACCOUNT=<account>,TOKEN=<securityToken>,TO=<receivingNumber>,FROM=<sendingNumber>'")
|
export TWILIO_CONFIG='ACCOUNT=<account>,TOKEN=<securityToken>,TO=<receivingNumber>,FROM=<sendingNumber>'")
|
||||||
.arg({
|
.arg({
|
||||||
|
@ -166,7 +166,7 @@ fn get_config() -> Config {
|
||||||
.value_name("SUFFIX")
|
.value_name("SUFFIX")
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.default_value("")
|
.default_value("")
|
||||||
.help("Add this string into all notification messages after \"solana-watchtower\"")
|
.help("Add this string into all notification messages after \"agave-watchtower\"")
|
||||||
)
|
)
|
||||||
.get_matches();
|
.get_matches();
|
||||||
|
|
||||||
|
@ -381,7 +381,7 @@ fn main() -> Result<(), Box<dyn error::Error>> {
|
||||||
|
|
||||||
if let Some((failure_test_name, failure_error_message)) = &failure {
|
if let Some((failure_test_name, failure_error_message)) = &failure {
|
||||||
let notification_msg = format!(
|
let notification_msg = format!(
|
||||||
"solana-watchtower{}: Error: {}: {}",
|
"agave-watchtower{}: Error: {}: {}",
|
||||||
config.name_suffix, failure_test_name, failure_error_message
|
config.name_suffix, failure_test_name, failure_error_message
|
||||||
);
|
);
|
||||||
num_consecutive_failures += 1;
|
num_consecutive_failures += 1;
|
||||||
|
@ -415,7 +415,7 @@ fn main() -> Result<(), Box<dyn error::Error>> {
|
||||||
);
|
);
|
||||||
info!("{}", all_clear_msg);
|
info!("{}", all_clear_msg);
|
||||||
notifier.send(
|
notifier.send(
|
||||||
&format!("solana-watchtower{}: {}", config.name_suffix, all_clear_msg),
|
&format!("agave-watchtower{}: {}", config.name_suffix, all_clear_msg),
|
||||||
&NotificationType::Resolve { incident },
|
&NotificationType::Resolve { incident },
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue