OneSizeFitsQuorum opened a new pull request, #1564: URL: https://github.com/apache/ratis/pull/1564
## What changes were proposed in this pull request? Persist the initial Raft configuration in a separate bootstrap metadata file before a newly added group is allowed to start successfully. During recovery, the persisted Raft configuration remains authoritative. When no Raft configuration entry has been persisted yet, the bootstrap configuration restores the initial membership so the division can start and elect a leader. The bootstrap file is removed after a formal configuration is persisted. The recovery path also rejects conflicting bootstrap membership, while allowing the same peer IDs and priorities to be supplied with updated peer metadata such as addresses. Invalid empty or transitional bootstrap configurations fail startup instead of silently recovering with an unsafe configuration. ## What is the link to the Apache JIRA https://issues.apache.org/jira/browse/RATIS-2661 ## How was this patch tested? - TestGroupManagementWithGrpc: 10 tests passed. - TestGroupManagementWithNetty: 10 tests passed. - TestGroupManagementWithSimulatedRpc: 10 tests passed. - TestRaftStorage: 16 tests passed. - Maven Checkstyle completed with 0 violations. The new regression test dynamically creates a three-peer group, blocks voting before the initial configuration entry is appended, restarts all peers through directory recovery, and verifies that the stored bootstrap membership allows the group to start and elect a leader. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
