reload_dshackle: cut gateway connections on handler completion (~30 ms) instead of a fixed 3 s settle #81
@@ -208,8 +208,19 @@ for CID in $(docker ps -q -f "name=dshackle"); do
|
|||||||
RC=1
|
RC=1
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
sleep "$SETTLE"
|
# Poll for the handler's completion line instead of sleeping SETTLE: the reload itself
|
||||||
LOGS=$(docker logs --since "$T0" "$CID" 2>&1)
|
# takes ~10-30 ms, but the fixed 3 s sleep was the window in which a removed upstream
|
||||||
|
# was already gone while the gateway still held the old announcements (operator
|
||||||
|
# 2026-09-19). SETTLE is now the upper bound only.
|
||||||
|
DONE_MARK="Reloading config has been completed"
|
||||||
|
LOGS=""
|
||||||
|
for _ in $(seq 1 $(( SETTLE * 20 ))); do
|
||||||
|
LOGS=$(docker logs --since "$T0" "$CID" 2>&1)
|
||||||
|
if echo "$LOGS" | grep -qF "$DONE_MARK" || echo "$LOGS" | grep -qF "$FAIL_MARK" || echo "$LOGS" | grep -qF "$DROP_MARK"; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 0.05
|
||||||
|
done
|
||||||
REASON=""
|
REASON=""
|
||||||
if echo "$LOGS" | grep -qF "$FAIL_MARK"; then
|
if echo "$LOGS" | grep -qF "$FAIL_MARK"; then
|
||||||
REASON=$(echo "$LOGS" | grep -F "$FAIL_MARK" | head -1)
|
REASON=$(echo "$LOGS" | grep -F "$FAIL_MARK" | head -1)
|
||||||
|
|||||||
Reference in New Issue
Block a user