Bug 2216881

Summary: 'ovsdbapp.backend.ovs_idl.idlutils.RowNotFound: Cannot find Port with name=tapXXX' occurres some times
Product: Red Hat OpenStack Reporter: nkawamot
Component: openstack-neutronAssignee: Slawek Kaplonski <skaplons>
Status: ON_DEV --- QA Contact: Eran Kuris <ekuris>
Severity: medium Docs Contact:
Priority: high    
Version: 16.2 (Train)CC: averdagu, chrisw, ralonsoh, scohen
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description nkawamot 2023-06-23 02:58:53 UTC
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:

Comment 1 nkawamot 2023-06-23 03:03:33 UTC
'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
~~~

Comment 3 nkawamot 2023-06-23 03:55:35 UTC
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) <=========================== (*)
~~~