Comments (9)
No need to mark views as special entries in the log
Can you explain? I think you still need this for dynamic membership changes. Or does JGroups provide some persistent storage that makes it unnecessary?
https://github.com/belaban/jgroups-raft/blob/master/doc/design/Election.txt
That link's broken.
from jgroups-raft.
Give me a few days to complete the design document (it's on a separate branch), and I'd be happy to get your feedback.
Once I have the full algorithm down, I'll try to model this in PlusCal/TLA+ to see if the model check reveals issues with this.
from jgroups-raft.
@belaban sounds good, looking forward to seeing it.
from jgroups-raft.
Need to rethink this; as #21 changed things slightly.
from jgroups-raft.
@belaban, any update with such issue ? we're looking forward to some raft implementation, hope 0.4 released not long in the future with those issues fixed and completed.
from jgroups-raft.
Sorry, but jgroups-raft has been dormant for a while now, and I don't expect to be able to spend much time on it in the near future.
from jgroups-raft.
Hi @belaban, this is pretty much what we discussed over IRC, were you able to finish the PlusCal/TLA+ modelling?
from jgroups-raft.
Hi @valdar Andrea: nope
from jgroups-raft.
OK, I finally changed this to take advantage of JGroups views:
- An election is started only on a view change, by the coordinator
- When the majority is reached, the coord solicits votes from all members
- The member with the highest term (longest log) wins and becomes leader
- If all logs are equal, then the leader is the oldest member (the coord)
- Details are in [1]
This has a few advantages:
- No election / heartbeat timers -> no concurrent elections and no constant traffic to prevent followers from becoming candidates
- As a matter of fact, Candidate has been removed: we only have Leaders and Followers
The outcome should be the same as the original Raft election algorithm.
[1] https://github.com/belaban/jgroups-raft/blob/master/doc/design/Election.txt
from jgroups-raft.
Related Issues (20)
- Remove AsyncCounter and SyncCounter interfaces HOT 1
- withOption method should create a new instance
- Add membership operations to RaftHandle
- Provide quorum reads for `ReplicatedStateMachine`
- `Client` and `ClientStub` issues during membership operations
- Liveness issue with ELECTION HOT 3
- can't remove leader by method of RaftHandle's removeServer HOT 9
- this.raftHandle.channel().disconnect() and reconnect trigger error "not found in retransmission table" HOT 7
- Questions HOT 2
- Ensure a single leader per term
- Configurable class loader for ReplicatedStateMachine block
- CounterTest.testIgnoreReturnValue test failure HOT 5
- Remove ant and use only maven HOT 2
- Restarting node after membership change
- Leader stepping down with membership change HOT 2
- Fix longest log check during election
- Liveness issue joining during election thread execution
- Concurrency issue leads to nodes voting twice in same term
- Election problem HOT 2
- The election process may elect a leader who has left the group HOT 7
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 jgroups-raft.