diff --git a/list-restorable.sh b/list-restorable.sh index 60d8e763..7dca113c 100755 --- a/list-restorable.sh +++ b/list-restorable.sh @@ -121,7 +121,6 @@ while IFS= read -r entry; do fi compose_file=$(echo "$entry" | jq -r '.compose_file') - volumes=$(echo "$entry" | jq -r '.volumes[]') # Check if compose file exists compose_path="${dir}/${compose_file}.yml" @@ -134,9 +133,12 @@ while IFS= read -r entry; do missing_volumes=() backup_info=() - # Get required persistent volumes (excluding ephemeral and optional) - # Use process substitution to avoid subshell issues - while IFS= read -r volume < <(get_required_volume_keys "$compose_path"); do + # Required persistent volumes only (exclude ephemeral + optional). + # Must feed the loop via done<<< / done< <(...) — putting < <(...) on + # `read` re-runs the producer every iteration and infinite-loops on the + # first key (vibe regression 2026-08-04 d896378e). + volumes=$(get_required_volume_keys "$compose_path") + while IFS= read -r volume; do volume_name="rpc_${volume}" # jwt/secrets volumes are regenerated at create-node — never backed up by # design, so they must not gate restorability (kept plasma marked