Skip to content
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

Vault 6773/raft rejoin nonvoter #16324

Merged
merged 4 commits into from Jul 18, 2022
Merged

Vault 6773/raft rejoin nonvoter #16324

merged 4 commits into from Jul 18, 2022

Commits on Jul 18, 2022

  1. raft: Ensure init before setting suffrage

    As reported in https://hashicorp.atlassian.net/browse/VAULT-6773:
    
    	The /sys/storage/raft/join endpoint is intended to be unauthenticated. We rely
    	on the seal to manage trust.
    
    	It’s possible to use multiple join requests to switch nodes from voter to
    	non-voter. The screenshot shows a 3 node cluster where vault_2 is the leader,
    	and vault_3 and vault_4 are followers with non-voters set to false.  sent two
    	requests to the raft join endpoint to have vault_3 and vault_4 join the cluster
    	with non_voters:true.
    
    This commit fixes the issue by delaying the call to SetDesiredSuffrage until after
    the initialization check, preventing unauthenticated mangling of voter status.
    
    Tested locally using
    https://github.com/hashicorp/vault-tools/blob/main/users/ncabatoff/cluster/raft.sh
    and the reproducer outlined in VAULT-6773.
    mpalmi committed Jul 18, 2022
    Configuration menu
    Copy the full SHA
    31c4da9 View commit details
    Browse the repository at this point in the history
  2. raft: Return join err on failure

    This is necessary to correctly distinguish errors returned from the Join
    workflow. Previously, errors were being masked as timeouts.
    mpalmi committed Jul 18, 2022
    Configuration menu
    Copy the full SHA
    1a19070 View commit details
    Browse the repository at this point in the history
  3. raft: Default autopilot parameters in teststorage

    Change some defaults so we don't have to pass in parameters or set them
    in the originating tests. These storage types are only used in two
    places:
    
    1) Raft HA testing
    2) Seal migration testing
    
    Both consumers have been tested and pass with this change.
    mpalmi committed Jul 18, 2022
    Configuration menu
    Copy the full SHA
    667711e View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    1a54726 View commit details
    Browse the repository at this point in the history