2026-03-02 11:37:34 -08:00
|
|
|
#!/usr/bin/env bash
|
2026-02-12 15:46:57 -08:00
|
|
|
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"
|