api.go
func (r *Raft) BootstrapCluster(configuration Configuration) Future {
	bootstrapReq := &bootstrapFuture{}
	bootstrapReq.init()
	bootstrapReq.configuration = configuration
	select {
	case <-r.shutdownCh:
		return errorFuture{ErrRaftShutdown}
	case r.bootstrapCh <- bootstrapReq:
		return bootstrapReq
	}
}
func (r *Raft) BootstrapCluster(configuration Configuration) Future {
	bootstrapReq := &bootstrapFuture{}
	bootstrapReq.init()
	bootstrapReq.configuration = configuration
	select {
	case <-r.shutdownCh:
		return errorFuture{ErrRaftShutdown}
	case r.bootstrapCh <- bootstrapReq:
		return bootstrapReq
	}
}
func ( r * Raft ) BootstrapCluster ( configuration Configuration ) Future { bootstrapReq := & bootstrapFuture { } bootstrapReq . init ( ) bootstrapReq . configuration = configuration select { case <- r . shutdownCh : return errorFuture { ErrRaftShutdown } case r . bootstrapCh <- bootstrapReq : return bootstrapReq } }
// BootstrapCluster is equivalent to non-member BootstrapCluster but can be
// called on an un-bootstrapped Raft instance after it has been created. This
// should only be called at the beginning of time for the cluster, and you
// absolutely must make sure that you call it with the same configuration on all
// the Voter servers. There is no need to bootstrap Nonvoter and Staging
// servers.
BootstrapCluster is equivalent to non - member BootstrapCluster but can be called on an un - bootstrapped Raft instance after it has been created . This should only be called at the beginning of time for the cluster and you absolutely must make sure that you call it with the same configuration on all the Voter servers . There is no need to bootstrap Nonvoter and Staging servers .