Improve OVS/OVN stop robustness for restacking
The stop_ovn function stops services but leaves behind runtime files and stale configuration that can cause restacking failures. This change improves robustness by: - Making _stop_process check is-active in addition to is-enabled, so services are stopped even if they are running but not enabled. - Clearing OVS external-ids before stopping to prevent stale config (ovn-remote, ovn-bridge, etc.) from persisting across restacks. - Cleaning up runtime files (*.sock, *.pid, *.ctl) in both OVS_RUNDIR and OVN_RUNDIR after stopping services, as stale sockets can prevent ovsdb-server from binding on restart. - Removing database lock files (.*.db.~lock~) which can block database access if services crash or stop uncleanly. These changes allow stack.sh to run successfully after unstack.sh without requiring a full clean.sh. Generated-By: Cursor claude-opus-4.5 Change-Id: I8736f19a8892200948ee74854f99fd99eed5110b Signed-off-by: Sean Mooney <work@seanmooney.info>
This commit is contained in:
@@ -798,8 +798,11 @@ function _stop_ovs_dp {
|
||||
function _stop_process {
|
||||
local service=$1
|
||||
echo "Stopping process $service"
|
||||
if $SYSTEMCTL is-enabled $service; then
|
||||
# Stop if running, regardless of enabled state
|
||||
if $SYSTEMCTL is-active $service; then
|
||||
$SYSTEMCTL stop $service
|
||||
fi
|
||||
if $SYSTEMCTL is-enabled $service; then
|
||||
$SYSTEMCTL disable $service
|
||||
fi
|
||||
}
|
||||
@@ -834,10 +837,22 @@ function stop_ovn {
|
||||
_stop_process "devstack@ovs-vtep.service"
|
||||
fi
|
||||
|
||||
# Clear OVS external-ids before stopping to prevent stale config on restack
|
||||
if sudo ovs-vsctl show &>/dev/null; then
|
||||
sudo ovs-vsctl --if-exists clear open_vswitch . external-ids
|
||||
fi
|
||||
|
||||
_stop_process "$OVS_VSWITCHD_SERVICE"
|
||||
_stop_process "$OVSDB_SERVER_SERVICE"
|
||||
|
||||
_stop_ovs_dp
|
||||
|
||||
# Clean up runtime files that can prevent restart
|
||||
sudo rm -f $OVS_RUNDIR/*.sock $OVS_RUNDIR/*.pid $OVS_RUNDIR/*.ctl
|
||||
sudo rm -f $OVN_RUNDIR/*.sock $OVN_RUNDIR/*.pid $OVN_RUNDIR/*.ctl
|
||||
# Clean up database lock files
|
||||
sudo rm -f $OVS_DATADIR/.*.db.~lock~
|
||||
sudo rm -f $OVN_DATADIR/.*.db.~lock~
|
||||
}
|
||||
|
||||
function _cleanup {
|
||||
|
||||
Reference in New Issue
Block a user