Hi,
I would like to report a bug found during kolla OpenStack deployment in
ml2 drive ovs 2.17 package. The bug has been introudeced with the
following commit: 46d44cf3be0dbf4a44cebea3b279b3d16a326796 , python:
idl: Add monitor_cond_since support.
https://github.com/openvswitch/ovs/commit/46d44cf3be0dbf4a44cebea3b279b3d16a326796
2022-03-18 14:32:05.754 24 ERROR
neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn while
idl_.change_seqno == seqno and not idl_.run():
2022-03-18 14:32:05.754 24 ERROR
neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn File
"/usr/lib/python3/dist-packages/ovs/db/idl.py", line 410, in run
2022-03-18 14:32:05.754 24 ERROR
neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn
self.restart_fsm()
2022-03-18 14:32:05.754 24 ERROR
neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn File
"/usr/lib/python3/dist-packages/ovs/db/idl.py", line 372, in restart_fsm
2022-03-18 14:32:05.754 24 ERROR
neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn
self.sync_conditions()
2022-03-18 14:32:05.754 24 ERROR
neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn File
"/usr/lib/python3/dist-packages/ovs/db/idl.py", line 361, in
sync_conditions
2022-03-18 14:32:05.754 24 ERROR
neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn
table.condition.request()
2022-03-18 14:32:05.754 24 ERROR
neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn
AttributeError: 'list' object has no attribute 'request'
The new code to check sync_condition is not checking whether the table
structure is nested and assume flat and call request function. Which
throws attribute error. When I add some exta debugging code so I can
find a workaround I've been able to confirm it with the following snippet:
|/usr/lib/python3/dist-packages/ovs/db/idl.py | ack_all =
self.last_id == str(uuid.UUID(int=0))
for table in self.tables.values():
* print("DEBUG")**
** if isinstance(table.condition, list):**
** print(self.tables)**
** print(table)**
** continue*
if ack_all:
table.condition.request()
table.condition.ack()
else:
if table.condition.reset():
self.last_id = str(uuid.UUID(int=0))
self.cond_changed = True
The output is as follow:
|||{'Logical_Router_Static_Route': <ovs.db.schema.TableSchema object at
0x7ff09ca08ac0>, 'Meter_Band': <ovs.db.schema.TableSchema object at
0x7ff09ca08f10>, 'NB_Global': <ovs.db.schema.TableSchema object at
0x7ff09ca08a30>, 'ACL': <ovs.db.schema.TableSchema object at
0x7ff09ca08a90>, 'Copp': <ovs.db.schema.TableSchema object at
0x7ff09c9d0220>, 'Logical_Switch': <ovs.db.schema.TableSchema object at
0x7ff09c9d0f70>, 'Load_Balancer_Group': <ovs.db.schema.TableSchema
object at 0x7ff09c9d4d00>, 'Meter': <ovs.db.schema.TableSchema object at
0x7ff09c9d4730>, 'Address_Set': <ovs.db.schema.TableSchema object at
0x7ff09c9d79a0>, 'HA_Chassis_Group': <ovs.db.schema.TableSchema object
at 0x7ff09c9d7070>, 'QoS': <ovs.db.schema.TableSchema object at
0x7ff09c9d7a90>, 'NAT': <ovs.db.schema.TableSchema object at
0x7ff09c9db730>, 'BFD': <ovs.db.schema.TableSchema object at
0x7ff09c9db070>, 'Load_Balancer': <ovs.db.schema.TableSchema object at
0x7ff09c9db2b0>, 'DNS': <ovs.db.schema.TableSchema object at
0x7ff09c9de670>, 'Connection': <ovs.db.schema.TableSchema object at
0x7ff09c9ded00>, 'Forwarding_Group': <ovs.db.schema.TableSchema object
at 0x7ff09c9e00d0>, 'SSL': <ovs.db.schema.TableSchema object at
0x7ff09c9e02e0>, 'Load_Balancer_Health_Check':
<ovs.db.schema.TableSchema object at 0x7ff09c9e0cd0>, 'Gateway_Chassis':
<ovs.db.schema.TableSchema object at 0x7ff09c9e4610>, 'HA_Chassis':
<ovs.db.schema.TableSchema object at 0x7ff09c9e4d90>,
'Logical_Router_Port': <ovs.db.schema.TableSchema object at
0x7ff09c9e4bb0>, 'Logical_Router_Policy': <ovs.db.schema.TableSchema
object at 0x7ff09c9e8820>, 'Logical_Router': <ovs.db.schema.TableSchema
object at 0x7ff09c9e85b0>, 'Port_Group': <ovs.db.schema.TableSchema
object at 0x7ff09c9e8220>, 'DHCP_Options': <ovs.db.schema.TableSchema
object at 0x7ff09c9eb1f0>, 'Logical_Switch_Port':
<ovs.db.schema.TableSchema object at 0x7ff09c9eb700>}
||<ovs.db.schema.TableSchema object at 0x7ff09c9eb1f0> |
Object 0x7ff09c9eb1f0 points to DHCP_Options. I'm not a network guy so
hard to say why it happens, when downgraded it to 2.16 the error is gone.
Thanks,
Mirek
_______________________________________________
discuss mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss