When restarting neutron-plugin-openvswitch-agent, the plugin goes through a series of initialization calls, many of which call out to ovs-vsctl to set up things like the integration bridge, tun bridge and all the flows.
I've seen this __init__() process take upwards of 2 hours (!) to complete on a small (<100 compute node) zone. Most of the time is spent spawning rootwrap'd calls to ovs-vsctl to set up the various tunnels, flows and bridges.
ovs-vsctl can take a series of action arguments in the same CLI statement, and will perform those actions as an atomic unit. At the very least, the plugin's __init__() function's setup_xxx() subroutines should take advantages of this instead of looping over possibly dozens or hundreds of port and flows, each with a separate subprocess call out to utils.execute('ovs.vsctl...').
This sounds more like a blueprint than a bug. Also, it sounds related to blueprint neutron- agent-soft- restart <https:/ /blueprints. launchpad. net/neutron/ +spec/neutron- agent-soft- restart>.