From 6c5d739cfca29b514741ab2e62aaa6bae463a557 Mon Sep 17 00:00:00 2001 From: embeddevio Date: Wed, 28 Oct 2026 21:37:09 +0300 Subject: [PATCH] =?UTF-8?q?netns:=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20netns=20=D0=B1=D0=B5=D0=B7=D1=83=D1=81=D0=BB?= =?UTF-8?q?=D0=BE=D0=B2=D0=BD=D0=BE=20+=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D0=BA=D0=B0=20=D1=80=D0=B5=D0=B7=D1=83=D0=BB=D1=8C=D1=82?= =?UTF-8?q?=D0=B0=D1=82=D0=B0=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Флак: ns_exists мог вернуть false до удаления, и namespace оставался жить. Теперь `ip netns delete` вызывается всегда, результат проверяется до 5 раз. Стабильность в контейнере: 5/5 прогонов rc=0 (было 4/5). Refs #21, Refs #56 --- tests/netns/topology.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) 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