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

Brian Haley haleyb.dev at gmail.com
Thu Mar 4 20:12:43 UTC 2021


Acked-by: Brian Haley <haleyb.dev at gmail.com>

Thanks for fixing this Terry.

-Brian

On 3/4/21 11:18 AM, 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  |  7 +++++--
>   3 files changed, 51 insertions(+), 17 deletions(-)
> 
<snip>


More information about the dev mailing list