On 5/27/24 18:22, Roberto Bartzen Acosta via discuss wrote:
> Hello everyone!
> 
> I found an issue during testing with the OVN-IC daemon. I noticed that 
> applications that interact with python-idl show an error when deleting 
> datapath_binding when the table index changes.
> 
> We can see the error in the logs below:
> 
> 2024-05-27 09:49:38.779 23596 ERROR ovsdbapp.backend.ovs_idl.connection [-] 
> Datapath_Binding(uuid=UUID('498e66a2-70bc-4587-a66f-0433baf82f60'), 
> tunnel_key=16711683, load_balancers=[], external_ids={}) not in list: 
> ValueError: 
> Datapath_Binding(uuid=UUID('498e66a2-70bc-4587-a66f-0433baf82f60'), 
> tunnel_key=16711683, load_balancers=[], external_ids={}) not in list
> 2024-05-27 09:49:38.779 23596 ERROR ovsdbapp.backend.ovs_idl.connection 
> Traceback (most recent call last):
> 2024-05-27 09:49:38.779 23596 ERROR ovsdbapp.backend.ovs_idl.connection   
> File "/usr/lib/python3/dist-packages/ovsdbapp/backend/ovs_idl/connection.py", 
> line 110, in run
> 2024-05-27 09:49:38.779 23596 ERROR ovsdbapp.backend.ovs_idl.connection     
> self.idl.run()
> 2024-05-27 09:49:38.779 23596 ERROR ovsdbapp.backend.ovs_idl.connection   
> File "/usr/lib/python3/dist-packages/ovs/db/idl.py", line 465, in run
> 2024-05-27 09:49:38.779 23596 ERROR ovsdbapp.backend.ovs_idl.connection     
> self.__parse_update(msg.params[2], OVSDB_UPDATE3)
> 2024-05-27 09:49:38.779 23596 ERROR ovsdbapp.backend.ovs_idl.connection   
> File "/usr/lib/python3/dist-packages/ovs/db/idl.py", line 924, in 
> __parse_update
> 2024-05-27 09:49:38.779 23596 ERROR ovsdbapp.backend.ovs_idl.connection     
> self.__do_parse_update(update, version, self.tables)
> 2024-05-27 09:49:38.779 23596 ERROR ovsdbapp.backend.ovs_idl.connection   
> File "/usr/lib/python3/dist-packages/ovs/db/idl.py", line 964, in 
> __do_parse_update
> 2024-05-27 09:49:38.779 23596 ERROR ovsdbapp.backend.ovs_idl.connection     
> changes = self.__process_update2(table, uuid, row_update)
> 2024-05-27 09:49:38.779 23596 ERROR ovsdbapp.backend.ovs_idl.connection   
> File "/usr/lib/python3/dist-packages/ovs/db/idl.py", line 991, in 
> __process_update2
> 2024-05-27 09:49:38.779 23596 ERROR ovsdbapp.backend.ovs_idl.connection     
> del table.rows[uuid]
> 2024-05-27 09:49:38.779 23596 ERROR ovsdbapp.backend.ovs_idl.connection   
> File "/usr/lib/python3/dist-packages/ovs/db/custom_index.py", line 102, in 
> __delitem__
> 2024-05-27 09:49:38.779 23596 ERROR ovsdbapp.backend.ovs_idl.connection     
> index.remove(val)
> 2024-05-27 09:49:38.779 23596 ERROR ovsdbapp.backend.ovs_idl.connection   
> File "/usr/lib/python3/dist-packages/ovs/db/custom_index.py", line 66, in 
> remove
> 2024-05-27 09:49:38.779 23596 ERROR ovsdbapp.backend.ovs_idl.connection     
> self.values.remove(self.index_entry_from_row(row))
> 2024-05-27 09:49:38.779 23596 ERROR ovsdbapp.backend.ovs_idl.connection   
> File "/usr/lib/python3/dist-packages/sortedcontainers/sortedlist.py", line 
> 2015, in remove
> 2024-05-27 09:49:38.779 23596 ERROR ovsdbapp.backend.ovs_idl.connection     
> raise ValueError('{0!r} not in list'.format(value))
> 2024-05-27 09:49:38.779 23596 ERROR ovsdbapp.backend.ovs_idl.connection 
> ValueError: 
> Datapath_Binding(uuid=UUID('498e66a2-70bc-4587-a66f-0433baf82f60'), 
> tunnel_key=16711683, load_balancers=[], external_ids={}) not in list
> 2024-05-27 09:49:38.779 23596 ERROR ovsdbapp.backend.ovs_idl.connection 
> 
> 
> The complete logs showing the creation, update of the tunnel_key and deletion 
> of the datapath_binding can be accessed at [1].
> 
> Basically the problem occurs because of the tunnel_key update when we create 
> a transit-switch. If the table did not have this index the problem would not 
> be observed.
> 
> This issue affects applications such as: neutron-server, 
> neutron-ovn-metadata-agent, and everyone that monitors the Datapath_Binding 
> table via python-idl.
> 
> I've already talked to Ilya Maximets in the openvswitch IRC channel and the 
> issue seems to be in the row updating process: python/ovs/db/idl.py.


Thanks, Roberto!  I beleive the fix I shared on IRC is mostly correct though
I didn't test it.  I need to refine it a little and add a unit test for the
issue.  With that I hope to post it for review somewhere soon.

CC: Terry.

Best regards, Ilya Maximets.

> 
> Kind regards,
> Roberto
> 
> 
> [1] https://paste.openstack.org/show/bqLA7nxfk2C6loD5YlY1/

_______________________________________________
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss

Reply via email to