summaryrefslogtreecommitdiff
path: root/ovsdb/raft-private.h
diff options
context:
space:
mode:
authorIlya Maximets <i.maximets@ovn.org>2020-10-20 18:22:25 +0200
committerIlya Maximets <i.maximets@ovn.org>2020-11-03 13:01:33 +0100
commit83fbd2e9dc5d85bee43b7597d4c3b403d4d1c484 (patch)
tree93cccfe373505ccaf9ae164659428b601376d794 /ovsdb/raft-private.h
parentf38f98a2c0dd7fcaf20fbe11d1e67a9b2afc0b2a (diff)
downloadopenvswitch-83fbd2e9dc5d85bee43b7597d4c3b403d4d1c484.tar.gz
raft: Avoid having more than one snapshot in-flight.
Previous commit 8c2c503bdb0d ("raft: Avoid sending equal snapshots.") took a "safe" approach to not send only exactly same snapshot installation requests. However, it doesn't make much sense to send more than one snapshot at a time. If obsolete snapshot installed, leader will re-send the most recent one. With this change leader will have only 1 snapshot in-flight per connection. This will reduce backlogs on raft connections in case new snapshot created while 'install_snapshot_request' is in progress or if election timer changed in that period. Also, not tracking the exact 'install_snapshot_request' we've sent allows to simplify the code. Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=1888829 Fixes: 8c2c503bdb0d ("raft: Avoid sending equal snapshots.") Acked-by: Dumitru Ceara <dceara@redhat.com> Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
Diffstat (limited to 'ovsdb/raft-private.h')
-rw-r--r--ovsdb/raft-private.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/ovsdb/raft-private.h b/ovsdb/raft-private.h
index 1f366b4ab..76b097b89 100644
--- a/ovsdb/raft-private.h
+++ b/ovsdb/raft-private.h
@@ -84,8 +84,8 @@ struct raft_server {
bool replied; /* Reply to append_request was received from this
node during current election_timeout interval.
*/
- /* Copy of the last install_snapshot_request sent to this server. */
- struct raft_install_snapshot_request *last_install_snapshot_request;
+ /* install_snapshot_request has been sent, but there is no response yet. */
+ bool install_snapshot_request_in_progress;
/* For use in adding and removing servers: */
struct uuid requester_sid; /* Nonzero if requested via RPC. */