mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
Merge pull request #15741 from AngstyDuck/set-default-value-for-AutoCompactionMode
server: default value for config file field auto-compaction-mode is n…
This commit is contained in:
commit
b404d25d84
@ -68,6 +68,7 @@ const (
|
||||
DefaultGRPCKeepAliveTimeout = 20 * time.Second
|
||||
DefaultDowngradeCheckTime = 5 * time.Second
|
||||
DefaultWaitClusterReadyTimeout = 5 * time.Second
|
||||
DefaultAutoCompactionMode = "periodic"
|
||||
|
||||
DefaultDiscoveryDialTimeout = 2 * time.Second
|
||||
DefaultDiscoveryRequestTimeOut = 5 * time.Second
|
||||
@ -546,6 +547,8 @@ func NewConfig() *Config {
|
||||
Auth: &clientv3.AuthConfig{},
|
||||
},
|
||||
},
|
||||
|
||||
AutoCompactionMode: DefaultAutoCompactionMode,
|
||||
}
|
||||
cfg.InitialCluster = cfg.InitialClusterFromName(cfg.Name)
|
||||
return cfg
|
||||
@ -772,8 +775,9 @@ func (cfg *Config) Validate() error {
|
||||
}
|
||||
|
||||
switch cfg.AutoCompactionMode {
|
||||
case "":
|
||||
case CompactorModeRevision, CompactorModePeriodic:
|
||||
case "":
|
||||
return errors.New("undefined auto-compaction-mode")
|
||||
default:
|
||||
return fmt.Errorf("unknown auto-compaction-mode %q", cfg.AutoCompactionMode)
|
||||
}
|
||||
|
@ -25,6 +25,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"go.etcd.io/etcd/client/pkg/v3/srv"
|
||||
"go.etcd.io/etcd/client/pkg/v3/transport"
|
||||
@ -202,6 +203,11 @@ func TestAutoCompactionModeParse(t *testing.T) {
|
||||
// err mode
|
||||
{"errmode", "1", false, 0},
|
||||
{"errmode", "1h", false, time.Hour},
|
||||
// empty mode
|
||||
{"", "1", true, 0},
|
||||
{"", "1h", false, time.Hour},
|
||||
{"", "a", true, 0},
|
||||
{"", "-1", true, 0},
|
||||
}
|
||||
|
||||
hasErr := func(err error) bool {
|
||||
@ -507,3 +513,10 @@ func TestTLSVersionMinMax(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestUndefinedAutoCompactionModeValidate(t *testing.T) {
|
||||
cfg := *NewConfig()
|
||||
cfg.AutoCompactionMode = ""
|
||||
err := cfg.Validate()
|
||||
require.Error(t, err)
|
||||
}
|
||||
|
@ -16,6 +16,7 @@ package embed
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
defaultLog "log"
|
||||
@ -887,6 +888,8 @@ func parseCompactionRetention(mode, retention string) (ret time.Duration, err er
|
||||
ret = time.Duration(int64(h))
|
||||
case CompactorModePeriodic:
|
||||
ret = time.Duration(int64(h)) * time.Hour
|
||||
case "":
|
||||
return 0, errors.New("--auto-compaction-mode is undefined")
|
||||
}
|
||||
} else {
|
||||
// periodic compaction
|
||||
|
@ -29,6 +29,7 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"go.etcd.io/etcd/client/pkg/v3/testutil"
|
||||
"go.etcd.io/etcd/client/pkg/v3/transport"
|
||||
clientv3 "go.etcd.io/etcd/client/v3"
|
||||
@ -210,3 +211,19 @@ func setupEmbedCfg(cfg *embed.Config, curls []url.URL, purls []url.URL) {
|
||||
}
|
||||
cfg.InitialCluster = cfg.InitialCluster[1:]
|
||||
}
|
||||
|
||||
func TestEmbedEtcdAutoCompactionRetentionRetained(t *testing.T) {
|
||||
cfg := embed.NewConfig()
|
||||
urls := newEmbedURLs(false, 2)
|
||||
setupEmbedCfg(cfg, []url.URL{urls[0]}, []url.URL{urls[1]})
|
||||
cfg.Dir = filepath.Join(t.TempDir(), "embed-etcd")
|
||||
|
||||
cfg.AutoCompactionRetention = "2"
|
||||
|
||||
e, err := embed.StartEtcd(cfg)
|
||||
assert.NoError(t, err)
|
||||
autoCompactionRetention := e.Server.Cfg.AutoCompactionRetention
|
||||
duration_to_compare, _ := time.ParseDuration("2h0m0s")
|
||||
assert.Equal(t, duration_to_compare, autoCompactionRetention)
|
||||
e.Close()
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user