On 7/4/23 12:41, Tao Liu wrote: > Hi, Ilya. Thanks for your comment. > > On 7/4/23 4:10 AM, Ilya Maximets wrote: >> On 7/2/23 11:59, Tao Liu wrote: >>> Commit 02f31a1262fc has fixed the row references when insertion and >>> deletion execute in one IDL run. However, we can still hit ovn-controller >>> crash in pressure test where pb->datapath == NULL. It is triggered by >>> reference dst deletion in same IDL run: >>> >>> idl run: >>> update1: >>> insert port_binding >>> insert datapath_binding >>> update2: >>> delete datapath_binding >>> delete port_binding >>> >>> Fix it by reparse reference src before dst deletion. >> Hi. Thanks for the patch! >> >> There seems to be an issue indeed. Removed rows should have valid >> references to other removed rows. >> >> However, I'm not sure this solution solves the issue in a general case >> as it depends on the order of events. If events in the update2 will >> be in opposite order, the issue will still be there. > > The opposite order of update2 has been fixed in commit 02f31a1262fc, > which now moved to > > first reparse_row(). > >> In a more general case we may also have two rows reference each other >> and we need to preserve both references. >> >> We probably could: >> >> 1. Postpone all the deletions, execute insertions and updates. >> >> 2. Call ovsdb_idl_reparse_refs_to_inserted() to re-parse every row >> that needs re-parsing due to newly added rows. >> >> 3. Delete the rows that need to be deleted. >> >> 4. Call ovsdb_idl_reparse_deleted() to get rid of references to >> deleted rows from non-deleted ones. > > Sounds like a good idea, that makes things more clear. > >> What do you think? >> Dumitru, maybe you have some thoughts on this? >> >> And we will need need a unit test for this issue. > > Will try to add one.
Hi, Tao Liu. Are you still working on a fix for this issue? Or maybe someone else should take a look into that? Best regards, Ilya Maximets. _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev