[ovs-dev] [PATCH v6] python: Send notifications after the transaction ends

Ilya Maximets i.maximets at ovn.org
Mon Mar 15 16:33:49 UTC 2021


On 3/9/21 3:34 PM, Terry Wilson wrote:
> The Python IDL notification mechanism was sending a notification
> for each processed update in a transaction as it was processed.
> This causes issues with multi-row changes that contain references
> to each other.
> 
> For example, if a Logical_Router_Port is created along with a
> Gateway_Chassis, and the LRP.gateway_chassis set to that GC, then
> when the notify() passes the CREATE event for the LRP, the GC will
> not yet have been processed, so __getattr__ when _uuid_to_row fails
> to find the GC, will return the default value for LRP.gateway_chassis
> which is [].
> 
> This patch has the process_update methods return the notifications
> that would be produced when a row changes, so they can be queued
> and sent after all rows have been processed.
> 
> Fixes: d7d417fcddf9 ("Allow subclasses of Idl to define a notification hook")
> Signed-off-by: Terry Wilson <twilson at redhat.com>
> ---
>  python/ovs/db/idl.py | 39 ++++++++++++++++++++++++---------------
>  tests/ovsdb-idl.at   | 22 ++++++++++++++++++++++
>  tests/test-ovsdb.py  |  8 ++++++--
>  3 files changed, 52 insertions(+), 17 deletions(-)

Thanks, Terry, Brian, Dumitru and Flavio!
Applied to master and backported down to 2.13.

Best regards, Ilya Maximets.



More information about the dev mailing list