Skip to content

Commit 20ed3c5

Browse files
committed
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>
1 parent 5e21304 commit 20ed3c5

1 file changed

Lines changed: 16 additions & 1 deletion

File tree

lib/neutron_plugins/ovn_agent

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -798,8 +798,11 @@ function _stop_ovs_dp {
798798
function _stop_process {
799799
local service=$1
800800
echo "Stopping process $service"
801-
if $SYSTEMCTL is-enabled $service; then
801+
# Stop if running, regardless of enabled state
802+
if $SYSTEMCTL is-active $service; then
802803
$SYSTEMCTL stop $service
804+
fi
805+
if $SYSTEMCTL is-enabled $service; then
803806
$SYSTEMCTL disable $service
804807
fi
805808
}
@@ -834,10 +837,22 @@ function stop_ovn {
834837
_stop_process "devstack@ovs-vtep.service"
835838
fi
836839

840+
# Clear OVS external-ids before stopping to prevent stale config on restack
841+
if sudo ovs-vsctl show &>/dev/null; then
842+
sudo ovs-vsctl --if-exists clear open_vswitch . external-ids
843+
fi
844+
837845
_stop_process "$OVS_VSWITCHD_SERVICE"
838846
_stop_process "$OVSDB_SERVER_SERVICE"
839847

840848
_stop_ovs_dp
849+
850+
# Clean up runtime files that can prevent restart
851+
sudo rm -f $OVS_RUNDIR/*.sock $OVS_RUNDIR/*.pid $OVS_RUNDIR/*.ctl
852+
sudo rm -f $OVN_RUNDIR/*.sock $OVN_RUNDIR/*.pid $OVN_RUNDIR/*.ctl
853+
# Clean up database lock files
854+
sudo rm -f $OVS_DATADIR/.*.db.~lock~
855+
sudo rm -f $OVN_DATADIR/.*.db.~lock~
841856
}
842857

843858
function _cleanup {

0 commit comments

Comments
 (0)