fix(tests): lnd.newaddress settles across ALL transient post-restart codes
Run B failed the same probe with LND_ERROR (gRPC 'waiting to start' maps there) — the 7b77462d window only matched WALLET_LOCKED, one of four phases a cascade-restarted lnd passes through. Retry every code except LND_WALLET_UNINITIALIZED (no wallet — never self-heals) within a bounded 180s window; persistent failures still fail after it. lnd verified healthy minutes after both failures. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
7b77462ddf
commit
2c46da387c
@ -72,18 +72,22 @@ _lnd_running() {
|
|||||||
_lnd_running || skip "lnd not running"
|
_lnd_running || skip "lnd not running"
|
||||||
|
|
||||||
# The bitcoin bounce in bitcoin-knots.bats cascade-restarts lnd (24fd97ed).
|
# The bitcoin bounce in bitcoin-knots.bats cascade-restarts lnd (24fd97ed).
|
||||||
# After a restart lnd's gRPC comes up seconds before the auto-unlocker gets
|
# Depending on where the probe lands in lnd's startup it sees a different
|
||||||
# through (its UnlockWallet calls log "waiting to start" until then), so
|
# transient code — REST unreachable, gRPC "waiting to start" (mapped to
|
||||||
# LND_WALLET_LOCKED inside that window is the node settling, not broken —
|
# LND_ERROR), wallet locked until the auto-unlocker gets through, or a
|
||||||
# retry up to 120s. Any other error, or a wallet still locked after the
|
# post-unlock sync phase. All of those are the node settling, not broken —
|
||||||
# window, fails immediately below.
|
# retry up to 180s (run A caught WALLET_LOCKED, run B caught LND_ERROR
|
||||||
local deadline=$((SECONDS + 120)) err addr
|
# while lnd was seconds into its restart; both self-healed within a couple
|
||||||
|
# of minutes). Only LND_WALLET_UNINITIALIZED (no wallet — never self-heals)
|
||||||
|
# fails immediately, and anything still erroring after the window fails
|
||||||
|
# loudly below.
|
||||||
|
local deadline=$((SECONDS + 180)) err addr
|
||||||
while :; do
|
while :; do
|
||||||
run rpc_call lnd.newaddress
|
run rpc_call lnd.newaddress
|
||||||
[ "$status" -eq 0 ]
|
[ "$status" -eq 0 ]
|
||||||
err=$(echo "$output" | jq -r '.error.message // .error // empty')
|
err=$(echo "$output" | jq -r '.error.message // .error // empty')
|
||||||
addr=$(echo "$output" | jq -r '.result.address // empty')
|
addr=$(echo "$output" | jq -r '.result.address // empty')
|
||||||
[[ "$err" == *LND_WALLET_LOCKED* && $SECONDS -lt $deadline ]] || break
|
[[ -n "$err" && "$err" != *LND_WALLET_UNINITIALIZED* && $SECONDS -lt $deadline ]] || break
|
||||||
sleep 10
|
sleep 10
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user