ongardie / raft.tla Goto Github PK
View Code? Open in Web Editor NEWTLA+ specification for the Raft consensus algorithm
TLA+ specification for the Raft consensus algorithm
I think that there are some issues about Timeout(i) transition. When one server timeout and starts a new election, it is supposed to voted itself firstly. It should set votedFor[i] = i and votesGranted[i] = {i}.
Can you include the TLA+ config you use in this repo?
I don't think there's a correctness issue with AppendEntries, but I think there's a simple way to make verification (by proof) easier. In particular, it would be useful to add a check to this line to test if prevLogIndex <= Len(log[i])
. I believe that this check is unnecessary, but verifying this adds substantial complexity to the type invariant for the system. Is there any downside to adding the check?
Can I get the source code for raft tla.Whatever the code is there is after pluscal translation & I didnt find the code before translation.Will u help me with that.
Can I get the source code for raft tla. Whatever the code is there is after pluscal translation & I didnt find the code before translation.Will u help me with that.
I don't think that DropMessage is defined correctly. In particular, it does not actually remove messages from the variables messages
. Instead, it decrements the counter for the given message, if it already exists in messages
. This has two issues:
messages
is not a function from Message to Nat, as the comment above message suggests. Instead, it is a function from Message to Int.messages
, which means that it can continue to receive messages that have been dropped (even if their count drops below zero).When i use TLC to model check the raft specification, i find that there is a situation that the cluster has two leaders with different term, i.e, one leader with currentTerm 4, the other leader with currentTerm 5. And I think that only the leader with currentTerm 5 can receive a client request to add v to log, but in Raft specification, the Timeout(i) transition doesn't restrict it, so the leader with currentTerm 4 can also receive the client request.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.