Do not change leader when doing reconfiguration
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- go
- Domain
- blockchain, distributed-systems
Research direction
Start by tracing how the leader ID is calculated from the view ID and node count, then inspect the view metadata and reconfiguration paths. Implementing this proposal is done when leader identity remains persistent across node additions or removals, advances on view changes, and selects the next leader when the current leader is removed.
Written by the indexing model from the issue text.
Description
As the amount of nodes increases, f increases, so the likelihood of having nodes that are unreachable/crashed increases as well.
The leader ID is currently calculated as the index of the node in the position v % n when v is the view ID and n is the node count.
Due to the way we calculate this leader ID, the leader ID might change when we do a reconfiguration that adds or removes nodes.
If we change the leader ID but this node might be offline/unreachable at that time, it means that doing a reconfiguration might cause downtime (view change).
To circumvent this problem, I propose that we persist the leader ID in the view metadata, and:
- Increment modulo n this leader ID when we do a view change
- Persist this leader ID, when we do a reconfiguration, unless the leader itself is removed, and in that case we just pick the next leader ID.
- Dominant language
- Go
- Stars
- 110
- Forks
- 40
- Avg merge
- 1d 6h
- Merged PRs (30d)
- 14
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from hyperledger/SmartBFT
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
hyperledger/SmartBFT#714 ·
Maintainers usually reply within 1 day
-
Set up a pr projectOpen
Difficulty 4/5 3-5 days Newbie friendliness 25/100
hyperledger/SmartBFT#666 · 4 comments ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
hyperledger/SmartBFT#628 · 12 comments ·
Maintainers usually reply within 1 day
-
Recording library runtime for bug analysis by developersMay be free again @HagarMeir claimed this 1733 days ago, and no pull request is open. Open
hyperledger/SmartBFT#487 · 1 assignee ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 15/100
hyperledger/SmartBFT#439 ·
Maintainers usually reply within 1 day
All issues in hyperledger/SmartBFT
Similar issues
-
Go device SDK: Whisper transcriber keeps buffering and transcribing audio appended after Stop()Possibly taken @apoorvdarshan claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
BasedHardware/omi#22770 ·
Maintainers usually reply within 1 day
-
Bug v3
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
bug needs-acceptance wg/router-models-inference-runtime
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
vllm-project/semantic-router#5295 ·
Maintainers usually reply within 1 day
-
plan lint: overclaim fires on every page linted without enrichment (regex matches inlined chrome.js)Open
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
openilink/openilink-hub#271 ·