diff --git a/neutron/agent/linux/polling.py b/neutron/agent/linux/polling.py index be693d8c4f6..29d5bd668ee 100644 --- a/neutron/agent/linux/polling.py +++ b/neutron/agent/linux/polling.py @@ -15,11 +15,15 @@ import contextlib import eventlet +from oslo_log import log as logging from neutron.agent.common import base_polling +from neutron.agent.linux import async_process from neutron.agent.linux import ovsdb_monitor from neutron.plugins.ml2.drivers.openvswitch.agent.common import constants +LOG = logging.getLogger(__name__) + @contextlib.contextmanager def get_polling_manager(minimize_polling=False, @@ -53,7 +57,10 @@ class InterfacePollingMinimizer(base_polling.BasePollingManager): self._monitor.start() def stop(self): - self._monitor.stop() + try: + self._monitor.stop() + except async_process.AsyncProcessException: + LOG.debug("InterfacePollingMinimizer was not running when stopped") def _is_polling_required(self): # Maximize the chances of update detection having a chance to diff --git a/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py b/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py index 414039e932d..6e8859730de 100644 --- a/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py +++ b/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py @@ -33,7 +33,6 @@ from neutron.agent.common import ovs_lib from neutron.agent.common import polling from neutron.agent.common import utils from neutron.agent.l2.extensions import manager as ext_manager -from neutron.agent.linux import async_process from neutron.agent.linux import ip_lib from neutron.agent.linux import polling as linux_polling from neutron.agent import rpc as agent_rpc @@ -1812,12 +1811,7 @@ class OVSNeutronAgent(sg_rpc.SecurityGroupAgentRpcCallbackMixin, # no action and by InterfacePollingMinimizer as start/stop if isinstance( polling_manager, linux_polling.InterfacePollingMinimizer): - # There's a possible race here, when ovsdb-server is - # restarted ovsdb monitor will also be restarted - try: - polling_manager.stop() - except async_process.AsyncProcessException: - LOG.debug("OVSDB monitor was not running") + polling_manager.stop() polling_manager.start() elif ovs_status == constants.OVS_DEAD: # Agent doesn't apply any operations when ovs is dead, to