summaryrefslogtreecommitdiff
path: root/vswitchd
diff options
context:
space:
mode:
authorDumitru Ceara <dceara@redhat.com>2021-05-07 21:28:02 +0200
committerIlya Maximets <i.maximets@ovn.org>2021-05-14 13:44:37 +0200
commitb5bb044fbe4c1395dcde5cc7d5081ef0099bb8b3 (patch)
treeb5be5847c36550fca58b4f695a65fc631231bc74 /vswitchd
parent7100c220e669443aa646513ce6cb241ccf2caf5c (diff)
downloadopenvswitch-b5bb044fbe4c1395dcde5cc7d5081ef0099bb8b3.tar.gz
ovsdb-cs: Consider all tables when computing expected cond seqno.
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 condition 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 <blp@ovn.org> Signed-off-by: Dumitru Ceara <dceara@redhat.com> Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
Diffstat (limited to 'vswitchd')
0 files changed, 0 insertions, 0 deletions