Comments (2)
We've noticed a similar issue in one of our tests. We suspend the leader node for some time, to force an election. The other node choose a new leader and happily make progress, but when the original leader is unsuspended it gets an unusually large tick (covering the entire span of its suspension time), and this triggers an election. We explored some mitigations for this, but fundamentally it falls into the same category; Raft requires regular, accurate time updates from the host, and without these it is possible to trigger spurious elections.
The only fix is some form of trusted time within the enclave, perhaps from node-gossip channels or perhaps from spinning to spend time within the enclave, but we have no firm plan for this yet.
from ccf.
We think implementation of the PreVote
extension to Raft (https://web.stanford.edu/~ouster/cgi-bin/papers/OngaroPhD.pdf 9.6, ticketed in #2577 ) will mitigate this problem without requiring an expensive busy-wait.
from ccf.
Related Issues (20)
- TLA+ simulation failure observed on main HOT 1
- Documentation and misc updates
- Pass proposalId to resolve()
- Expose cose sign1 message sign/verify APIs in ccf.crypto
- RcvProposeVoteRequest action is never enabled
- n.type = AppendEntriesRequest missing from disjunct
- Research API: application callback to set claims digest on initial transaction
- raft_test failure in Daily
- Explore ETAGs support to provide session consistency HOT 3
- Follow-ups for redirection support
- Provide votes/finalVotes information in GET proposals/proposalId response HOT 1
- Provide proposalId, votes information in action's apply() method HOT 1
- Need modern API equivalent of the classic gov/kv/modules API
- Find a way to restore or replace cimetrics HOT 2
- Expose JS runtime creation and execution in public header
- Only log lower and upper bounds of `committable_indices` to correct claim that we only log variables values constant in space.
- Consensus Trace Validation improvements HOT 5
- Check snapshot isolation of signature transactions
- Replace `/ack` API with proposals HOT 1
- Remove `TODO` GitHub label and issue template
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 ccf.