Description of problem: One of our customers noticed the below messages are output in openvswitch-agent.log on compute node after an instance is stopped/live-migrated. ~~~ 2023-05-23 02:36:48.227 7553 ERROR ovsdbapp.backend.ovs_idl.command [req-bcb65204-28b3-46f8-85cf-af9ab5cc6e70 - - - - -] Error executing command: ovsdbapp.backend.ovs_idl.idlutils.RowNotFound: Cannot find Port with name=tapXXX 2023-05-23 02:36:48.227 7553 ERROR ovsdbapp.backend.ovs_idl.command Traceback (most recent call last): 2023-05-23 02:36:48.227 7553 ERROR ovsdbapp.backend.ovs_idl.command File "/usr/lib/python3.6/site-packages/ovsdbapp/backend/ovs_idl/command.py", line 39, in execute 2023-05-23 02:36:48.227 7553 ERROR ovsdbapp.backend.ovs_idl.command self.run_idl(None) 2023-05-23 02:36:48.227 7553 ERROR ovsdbapp.backend.ovs_idl.command File "/usr/lib/python3.6/site-packages/ovsdbapp/backend/ovs_idl/command.py", line 215, in run_idl 2023-05-23 02:36:48.227 7553 ERROR ovsdbapp.backend.ovs_idl.command record = self.api.lookup(self.table, self.record) 2023-05-23 02:36:48.227 7553 ERROR ovsdbapp.backend.ovs_idl.command File "/usr/lib/python3.6/site-packages/ovsdbapp/backend/ovs_idl/__init__.py", line 172, in lookup 2023-05-23 02:36:48.227 7553 ERROR ovsdbapp.backend.ovs_idl.command return self._lookup(table, record) 2023-05-23 02:36:48.227 7553 ERROR ovsdbapp.backend.ovs_idl.command File "/usr/lib/python3.6/site-packages/ovsdbapp/backend/ovs_idl/__init__.py", line 215, in _lookup 2023-05-23 02:36:48.227 7553 ERROR ovsdbapp.backend.ovs_idl.command row = idlutils.row_by_value(self, rl.table, rl.column, record) 2023-05-23 02:36:48.227 7553 ERROR ovsdbapp.backend.ovs_idl.command File "/usr/lib/python3.6/site-packages/ovsdbapp/backend/ovs_idl/idlutils.py", line 130, in row_by_value 2023-05-23 02:36:48.227 7553 ERROR ovsdbapp.backend.ovs_idl.command raise RowNotFound(table=table, col=column, match=match) 2023-05-23 02:36:48.227 7553 ERROR ovsdbapp.backend.ovs_idl.command ovsdbapp.backend.ovs_idl.idlutils.RowNotFound: Cannot find Port with name=tapXXX 2023-05-23 02:36:48.227 7553 ERROR ovsdbapp.backend.ovs_idl.command ~~~ The error has been output 3 times at least within the last 2 months. Version-Release number of selected component (if applicable): - RHOSP 16.2.0 - RHEL 8.4 - ML2/OVS + noop firewall driver - Packages related to neutron in neutron_ovs_agent container: - openstack-neutron-common-15.3.5-2.20210608154813.el8ost.3.noarch - openstack-neutron-15.3.5-2.20210608154813.el8ost.3.noarch - python3-neutronclient-6.14.1-2.20210528065959.a09e824.el8ost.1.noarch - openstack-neutron-openvswitch-15.3.5-2.20210608154813.el8ost.3.noarch - python3-neutron-lib-1.29.1-2.20210528014406.4ef4b71.el8ost.1.noarch - python3-neutron-15.3.5-2.20210608154813.el8ost.3.noarch - openstack-neutron-ml2-15.3.5-2.20210608154813.el8ost.3.noarch - python3-neutron-dynamic-routing-15.0.1-2.20210527193223.56de1c4.el8ost.1.noarch How reproducible: It seems this error occurs randomly. Steps to Reproduce: 1. 2. 3. Actual results: The ERROR messages doesn't be output Expected results: The ERROR messages are output some times Additional info:
'Actual results' and 'Expected results' is the opposite. The below is the correct one. ~~~ Actual results: The ERROR messages are output sometimes Expected results: The ERROR messages don't be output ~~~
It seems the ERROR message comes from here: https://github.com/openstack/ovsdbapp/blob/stable/train/ovsdbapp/backend/ovs_idl/idlutils.py#L76-L84 ~~~ def row_by_value(idl_, table, column, match, default=_NO_DEFAULT): """Lookup an IDL row in a table by column/value""" tab = idl_.tables[table] for r in tab.rows.values(): if getattr(r, column) == match: return r if default is not _NO_DEFAULT: return default raise RowNotFound(table=table, col=column, match=match) <=========================== (*) ~~~