On 5/7/21 9:28 PM, Dumitru Ceara wrote:
> In ovsdb_cs_db_set_condition(), take into account all pending condition
> changes for all tables when computing the db->cond_seqno at which the
> monitor is expected to be updated.
> 
> In the following scenario, with two tables, A and B, the old code
> performed the following steps:
> 1. Initial db->cond_seqno = X.
> 2. Client changes condition for table A:
>    - A->new_cond gets set
>    - expected cond seqno returned to the client: X + 1
> 3. ovsdb-cs sends the monitor_cond_change for table A
>    - A->req_cond <- A->new_cond
> 4. Client changes condition for table B:
>    - B->new_cond gets set
>    - expected cond seqno returned to the client: X + 1
>    - however, because the conditon change at step 3 is still not replied
>      to, table B's monitor_cond_change request is not sent yet.
> 5. ovsdb-cs receives the reply for the condition change at step 3:
>    - db->cond_seqno <- X + 1
> 6. ovsdb-cs sends the monitor_cond_change for table B
> 7. ovsdb-cs receives the reply for the condition change at step 6:
>   - db->cond_seqno <- X + 2
> 
> The client was incorrectly informed that it will have all relevant
> updates for table B at seqno X + 1 while actually that happens later, at
> seqno X + 2.
> 
> Fixes: 46437c5232bd ("ovsdb-idl: Enhance conditional monitoring API")
> Acked-by: Ben Pfaff <[email protected]>
> Signed-off-by: Dumitru Ceara <[email protected]>
> ---
> V2:
> - Addressed Ben's comments:
>   - move hmap walk inside the 'if' branch.
>   - don't use !! for bool.
> - Added Ben's ack.
> ---
>  lib/ovsdb-cs.c | 23 +++++++++++++++++++++--
>  1 file changed, 21 insertions(+), 2 deletions(-)

Thanks!  Applied to master and branch-2.15.

Could you, please, prepare backports for 2.14 and 2.13?

Best regards, Ilya Maximets.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to