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

Dumitru Ceara dceara at redhat.com
Fri Mar 12 19:37:56 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>
> ---

I'm not too familiar with the python IDL code but the change looks good 
to me.

I also verified and the new tests exercises the scenario described 
above.  All other IDL tests also passed.

Acked-by: Dumitru Ceara <dceara at redhat.com>

Thanks,
Dumitru



More information about the dev mailing list