-
Notifications
You must be signed in to change notification settings - Fork 10.2k
Bootstrap raft from 3 backend and not snapshot #17022
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Skipping CI for Draft Pull Request. |
42f25f2 to
b8462f3
Compare
Signed-off-by: Marek Siarkowicz <siarkowicz@google.com>
b8462f3 to
07bebc4
Compare
|
This issue has been automatically marked as stale because it has not had recent activity. It will be closed after 21 days if no further activity occurs. Thank you for your contributions. |
|
This issue has been automatically marked as stale because it has not had recent activity. It will be closed after 21 days if no further activity occurs. Thank you for your contributions. |
|
@serathius: The following tests failed, say
Full PR test history. Your PR dashboard. Please help us cut down on flakes by linking to an open issue when you hit one in your PR. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
|
@serathius do you have bandwidth to continue to work on this PR? It's on the top of my review list now. |
| type MemoryStorage struct { | ||
| // Protects access to all fields. Most methods of MemoryStorage are | ||
| // run on the raft goroutine, but Append() is run on an application | ||
| // goroutine. | ||
| sync.Mutex | ||
|
|
||
| hardState pb.HardState | ||
| snapshot pb.Snapshot | ||
| // ents[i] has raft log position i+snapshot.Metadata.Index | ||
| ents []pb.Entry | ||
|
|
||
| callStats inMemStorageCallStats | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The struct and all its methods are copied from the raft lib. You only added stats on top of that, also added ApplyConfState. I am not sure what's the motivation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yea, this is a temporary fork of the file to add the methods I needed to make raft properly bootstrap from v3. I did it so long time ago so I'm not 100% sure that we will need it, it was just simpler to implement it.
After we make all the tests pass we can rethink if we really need to change raftstorage.
I have been doing it in my free hours, so not a lot of bandwidth, but constant work on weekends. The main problem is that I got stuck, after updating all the code I think is required it still fails some tests and I didn't have time to debug it. Would love to get your suggestion what I missed. |
Thanks for working on this. Tackling such a complex task requires strong commitment, sustained deep thinking and focus over a long period, and close collaboration from other maintainers. I think progress becomes difficult when any of these elements is missing. Could you please at least rebase this PR so we can take a look at which tests are currently failing? If you don’t currently have enough time to continue, would you be open to someone else taking over the PR? |
Sure |
Please read https://github.com/etcd-io/etcd/blob/main/CONTRIBUTING.md#contribution-flow.