Comments (3)
Yeah, it's a subtle detail of how we've implemented raft. It's from section 5.3 on log replication. For a number of reasons, we do the heartbeats async from the AppendEntries with actual log data. Mostly it's to avoid head of line blocking on network and disk. Because of this decoupling, heartbeat does not include the leaderCommit
value (highest committed index), since the replication may be lagging (any number of reasons). We only send that value in the replication stream. As a result, suppose I commit log at index 10. If there is no more write operations (e.g. nothing at index 11), then there is no way to update the leaderCommit
of the followers. We use a CommitTimeout
to instead replicate no logs, but to update the leaderCommit
of the followers. In practice, it works the same as doing it in the heartbeat, but we avoid a number of other issues in favor of higher stability.
from raft.
Thanks for clarifying that. I’m still wondering, though: wouldn’t it be enough to trigger one additional AppendEntries after a successful commit to get leaderCommit
to the followers, instead of sending 20/s (default setting)? :)
from raft.
Indeed. We used to do that :) But in practice you get all sorts of fun situations like a user restarting Consul in a way that causes data loss (e.g. replication log moves backward in time). With the no-op optimization we end up missing that and stalling the replication. Doing the AppendEntries is relatively cheap.
from raft.
Related Issues (20)
- Using node heartbeats in business logic HOT 1
- New node not receiving raft.Configuration after leader calls AddVoter HOT 3
- Cluster unable to elect a leader after restarting a follower and stopping the leader while the follower is down HOT 2
- How to costumize the Logger Name HOT 2
- Is there a way to make Snapshotting optional? HOT 2
- Your repo doesn't have documentation!
- Enhancement: persist commit index in LogStore to accelerate recovery HOT 4
- Test failed on latest branch: TestRaft_LeadershipTransferToBehindServer HOT 1
- Why the subsequent nodes not join the cluster HOT 2
- Why after calling RemoveServer for a node does it still continue to heartbeat it? HOT 2
- getting notified on losing follower heartbeat HOT 5
- Push to the notify channel and shutdown sign arriving,it is pick one of two but actually nobody know which one HOT 5
- Panic split-brain in appendEntries call HOT 2
- How to observe on follower connecting to cluster ? HOT 1
- How to bootstrap a raft cluster with a single node? HOT 2
- Use pebbledb as raft logstore & stablestore, restart raft cluster nodes all pebbledb data will be lost? HOT 13
- Ability for peers to denote others/themselves as too laggy to accept requests HOT 8
- Inconsistent Raft Latency on Different Infrastructures HOT 8
- Allow network transfer of snapshot to be cancelled during shutdown
- Leader election times seem too long with max current term HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from raft.