mirror of
https://github.com/optim-enterprises-bv/vault.git
synced 2025-10-29 17:52:32 +00:00
Add support for reloading raft config (#29485)
This commit is contained in:
@@ -34,7 +34,7 @@ func TestRaft_Chunking_Lifecycle(t *testing.T) {
|
||||
|
||||
t.Log("applying configuration")
|
||||
|
||||
b.applyConfigSettings(raft.DefaultConfig())
|
||||
ApplyConfigSettings(b.logger, b.conf, raft.DefaultConfig())
|
||||
|
||||
t.Log("chunking")
|
||||
|
||||
@@ -119,7 +119,7 @@ func TestFSM_Chunking_TermChange(t *testing.T) {
|
||||
|
||||
t.Log("applying configuration")
|
||||
|
||||
b.applyConfigSettings(raft.DefaultConfig())
|
||||
ApplyConfigSettings(b.logger, b.conf, raft.DefaultConfig())
|
||||
|
||||
t.Log("chunking")
|
||||
|
||||
|
||||
@@ -1069,9 +1069,9 @@ func (b *RaftBackend) SetRemovedCallback(cb func()) {
|
||||
b.removedCallback = cb
|
||||
}
|
||||
|
||||
func (b *RaftBackend) applyConfigSettings(config *raft.Config) error {
|
||||
config.Logger = b.logger
|
||||
multiplierRaw, ok := b.conf["performance_multiplier"]
|
||||
func ApplyConfigSettings(logger log.Logger, parsedConf map[string]string, config *raft.Config) error {
|
||||
config.Logger = logger
|
||||
multiplierRaw, ok := parsedConf["performance_multiplier"]
|
||||
multiplier := 5
|
||||
if ok {
|
||||
var err error
|
||||
@@ -1084,7 +1084,7 @@ func (b *RaftBackend) applyConfigSettings(config *raft.Config) error {
|
||||
config.HeartbeatTimeout *= time.Duration(multiplier)
|
||||
config.LeaderLeaseTimeout *= time.Duration(multiplier)
|
||||
|
||||
snapThresholdRaw, ok := b.conf["snapshot_threshold"]
|
||||
snapThresholdRaw, ok := parsedConf["snapshot_threshold"]
|
||||
if ok {
|
||||
var err error
|
||||
snapThreshold, err := strconv.Atoi(snapThresholdRaw)
|
||||
@@ -1094,7 +1094,7 @@ func (b *RaftBackend) applyConfigSettings(config *raft.Config) error {
|
||||
config.SnapshotThreshold = uint64(snapThreshold)
|
||||
}
|
||||
|
||||
trailingLogsRaw, ok := b.conf["trailing_logs"]
|
||||
trailingLogsRaw, ok := parsedConf["trailing_logs"]
|
||||
if ok {
|
||||
var err error
|
||||
trailingLogs, err := strconv.Atoi(trailingLogsRaw)
|
||||
@@ -1103,7 +1103,7 @@ func (b *RaftBackend) applyConfigSettings(config *raft.Config) error {
|
||||
}
|
||||
config.TrailingLogs = uint64(trailingLogs)
|
||||
}
|
||||
snapshotIntervalRaw, ok := b.conf["snapshot_interval"]
|
||||
snapshotIntervalRaw, ok := parsedConf["snapshot_interval"]
|
||||
if ok {
|
||||
var err error
|
||||
snapshotInterval, err := parseutil.ParseDurationSecond(snapshotIntervalRaw)
|
||||
@@ -1121,7 +1121,7 @@ func (b *RaftBackend) applyConfigSettings(config *raft.Config) error {
|
||||
// scheduler.
|
||||
config.BatchApplyCh = true
|
||||
|
||||
b.logger.Trace("applying raft config", "inputs", b.conf)
|
||||
logger.Trace("applying raft config", "inputs", parsedConf)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -1200,7 +1200,7 @@ func (b *RaftBackend) SetupCluster(ctx context.Context, opts SetupOpts) error {
|
||||
|
||||
// Setup the raft config
|
||||
raftConfig := raft.DefaultConfig()
|
||||
if err := b.applyConfigSettings(raftConfig); err != nil {
|
||||
if err := ApplyConfigSettings(b.logger, b.conf, raftConfig); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -2322,3 +2322,17 @@ func isRaftLogVerifyCheckpoint(l *raft.Log) bool {
|
||||
// Must be the last chunk of a chunked object that has chunking meta
|
||||
return false
|
||||
}
|
||||
|
||||
func (b *RaftBackend) ReloadConfig(config raft.ReloadableConfig) error {
|
||||
b.l.RLock()
|
||||
defer b.l.RUnlock()
|
||||
|
||||
if b.raft != nil {
|
||||
if err := b.raft.ReloadConfig(config); err != nil {
|
||||
return err
|
||||
} else {
|
||||
b.logger.Info("reloaded raft config", "settings", config)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -894,7 +894,7 @@ func TestRaft_Backend_Performance(t *testing.T) {
|
||||
|
||||
defaultConfig := raft.DefaultConfig()
|
||||
localConfig := raft.DefaultConfig()
|
||||
err := b.applyConfigSettings(localConfig)
|
||||
err := ApplyConfigSettings(b.logger, b.conf, localConfig)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -915,7 +915,7 @@ func TestRaft_Backend_Performance(t *testing.T) {
|
||||
}
|
||||
|
||||
localConfig = raft.DefaultConfig()
|
||||
err = b.applyConfigSettings(localConfig)
|
||||
err = ApplyConfigSettings(b.logger, b.conf, localConfig)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -936,7 +936,7 @@ func TestRaft_Backend_Performance(t *testing.T) {
|
||||
}
|
||||
|
||||
localConfig = raft.DefaultConfig()
|
||||
err = b.applyConfigSettings(localConfig)
|
||||
err = ApplyConfigSettings(b.logger, b.conf, localConfig)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user