diff --git a/tests/netns/topology.sh b/tests/netns/topology.sh index 9b8607b..4892f6b 100644 --- a/tests/netns/topology.sh +++ b/tests/netns/topology.sh @@ -28,13 +28,14 @@ topology_down() { local quiet="${1:-}" [ "$quiet" = quiet ] || log "удаляю топологию" # netns удаляем первыми: вместе с ними уходят veth-концы и процессы внутри. - # `ip netns delete` в контейнере иногда возвращает успех, но namespace - # остаётся виден в `ip netns list` (issue #56) — поэтому повторяем удаление. + # `ip netns delete` в контейнере иногда «теряется»: команда отработала, а + # namespace остаётся в `ip netns list` (issue #56). Поэтому удаляем + # безусловно (операция идемпотентна) и до 5 раз проверяем результат. local ns attempt for ns in "$AWG_NS_CLIENT" "$AWG_NS_GW" "$AWG_NS_UPLINK"; do for attempt in 1 2 3 4 5; do - if ! ns_exists "$ns"; then break; fi ip netns delete "$ns" 2>/dev/null || true + if ! ns_exists "$ns"; then break; fi sleep 0.2 done if ns_exists "$ns"; then