Files
proxmox/scripts/update-all-validators-txpool.sh
defiQUG b3a8fe4496
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
chore: sync all changes to Gitea
- Config, docs, scripts, and backup manifests
- Submodule refs unchanged (m = modified content in submodules)

Made-with: Cursor
2026-03-02 11:37:34 -08:00

96 lines
4.0 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# Load IP configuration
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true
# Update all validators with transaction pool configuration
# This script updates validators on both ml110 and r630-01
#
# IMPORTANT: Besu 23.10+ uses LAYERED tx-pool by default. Do NOT add legacy
# options (tx-pool-max-size, tx-pool-limit-by-account-percentage) — they cause
# "Could not use legacy transaction pool options with layered implementation"
# and crash validators. Use layered options instead: tx-pool-max-future-by-sender,
# tx-pool-layer-max-capacity, tx-pool-max-prioritized.
set -e
# Use root@ for Proxmox; SSH as intlc fails with permission denied for pct.
PROXMOX_USER="${PROXMOX_USER:-root}"
PROXMOX_ML110="${PROXMOX_ML110:-192.168.11.10}"
PROXMOX_R630="${PROXMOX_R630:-192.168.11.11}"
# Do NOT add legacy tx-pool options (tx-pool-max-size, etc.) — they crash layered pool.
# Use layered options only if tuning: tx-pool-max-future-by-sender, tx-pool-layer-max-capacity, tx-pool-max-prioritized.
echo "=== Validator Tx-Pool Check (No Legacy Options) ==="
echo ""
# Function to update a validator
update_validator() {
local PROXMOX_HOST=$1
local VMID=$2
local CONFIG_PATH=$3
echo "--- Updating Validator $VMID on $PROXMOX_HOST ---"
local SSH_TARGET="${PROXMOX_USER}@${PROXMOX_HOST}"
# Check if config file exists
if ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no "$SSH_TARGET" "pct exec $VMID -- test -f $CONFIG_PATH" 2>/dev/null; then
# Check if tx-pool settings already exist (legacy tx-pool-max-size causes crash with layered pool)
if ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no "$SSH_TARGET" "pct exec $VMID -- grep -q 'tx-pool-max-size' $CONFIG_PATH" 2>/dev/null; then
echo " ⚠️ Legacy tx-pool settings exist (remove them — they crash Besu layered pool)"
else
echo " ✅ No legacy tx-pool options (layered default OK)"
fi
else
echo " ⚠️ Config file not found at $CONFIG_PATH, trying alternative locations..."
for ALT_PATH in "/etc/besu/config-validator.toml" "/config/config-validator.toml"; do
if ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no "$SSH_TARGET" "pct exec $VMID -- test -f $ALT_PATH" 2>/dev/null; then
if ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no "$SSH_TARGET" "pct exec $VMID -- grep -q 'tx-pool-max-size' $ALT_PATH" 2>/dev/null; then
echo " ⚠️ Legacy tx-pool settings exist in $ALT_PATH (remove — crash with layered)"
else
echo " ✅ No legacy tx-pool options in $ALT_PATH (layered default OK)"
fi
break
fi
done
fi
}
# Function to restart validator
restart_validator() {
local PROXMOX_HOST=$1
local VMID=$2
local SSH_TARGET="${PROXMOX_USER}@${PROXMOX_HOST}"
echo " Restarting validator service..."
ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no "$SSH_TARGET" "pct exec $VMID -- systemctl restart besu-validator" 2>/dev/null && \
echo " ✅ Validator service restarted" || \
echo " ⚠️ Could not restart validator service (may need manual restart)"
}
# Check validators on ml110
echo "Checking validators on ml110 ($PROXMOX_USER@$PROXMOX_ML110)..."
for VMID in 1003 1004; do
update_validator "$PROXMOX_ML110" "$VMID" "/etc/besu/config-validator.toml"
echo ""
done
# Check validators on r630-01
echo "Checking validators on r630-01 ($PROXMOX_USER@$PROXMOX_R630)..."
for VMID in 1000 1001 1002; do
update_validator "$PROXMOX_R630" "$VMID" "/etc/besu/config-validator.toml"
echo ""
done
echo "=== Validator Tx-Pool Check Complete ==="
echo ""
echo "Next steps:"
echo " 1. Do NOT add legacy tx-pool options (tx-pool-max-size, etc.)"
echo " 2. If tuning, use layered options only (see script header)"
echo " 3. Run scripts/verify-validator-configs.sh for full verification"