mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
server: default value for config file field auto-compaction-mode is now 'periodic'; added additional checks if auto-compaction-mode is undefined
Signed-off-by: AngstyDuck <solsticedante@gmail.com>
This commit is contained in:
parent
b526cdcbe8
commit
a7344da7d3
@ -68,6 +68,7 @@ const (
|
|||||||
DefaultGRPCKeepAliveTimeout = 20 * time.Second
|
DefaultGRPCKeepAliveTimeout = 20 * time.Second
|
||||||
DefaultDowngradeCheckTime = 5 * time.Second
|
DefaultDowngradeCheckTime = 5 * time.Second
|
||||||
DefaultWaitClusterReadyTimeout = 5 * time.Second
|
DefaultWaitClusterReadyTimeout = 5 * time.Second
|
||||||
|
DefaultAutoCompactionMode = "periodic"
|
||||||
|
|
||||||
DefaultDiscoveryDialTimeout = 2 * time.Second
|
DefaultDiscoveryDialTimeout = 2 * time.Second
|
||||||
DefaultDiscoveryRequestTimeOut = 5 * time.Second
|
DefaultDiscoveryRequestTimeOut = 5 * time.Second
|
||||||
@ -546,6 +547,8 @@ func NewConfig() *Config {
|
|||||||
Auth: &clientv3.AuthConfig{},
|
Auth: &clientv3.AuthConfig{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
AutoCompactionMode: DefaultAutoCompactionMode,
|
||||||
}
|
}
|
||||||
cfg.InitialCluster = cfg.InitialClusterFromName(cfg.Name)
|
cfg.InitialCluster = cfg.InitialClusterFromName(cfg.Name)
|
||||||
return cfg
|
return cfg
|
||||||
@ -772,8 +775,9 @@ func (cfg *Config) Validate() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch cfg.AutoCompactionMode {
|
switch cfg.AutoCompactionMode {
|
||||||
case "":
|
|
||||||
case CompactorModeRevision, CompactorModePeriodic:
|
case CompactorModeRevision, CompactorModePeriodic:
|
||||||
|
case "":
|
||||||
|
return errors.New("undefined auto-compaction-mode")
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("unknown auto-compaction-mode %q", cfg.AutoCompactionMode)
|
return fmt.Errorf("unknown auto-compaction-mode %q", cfg.AutoCompactionMode)
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"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/srv"
|
||||||
"go.etcd.io/etcd/client/pkg/v3/transport"
|
"go.etcd.io/etcd/client/pkg/v3/transport"
|
||||||
@ -202,6 +203,11 @@ func TestAutoCompactionModeParse(t *testing.T) {
|
|||||||
// err mode
|
// err mode
|
||||||
{"errmode", "1", false, 0},
|
{"errmode", "1", false, 0},
|
||||||
{"errmode", "1h", false, time.Hour},
|
{"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 {
|
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 (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
defaultLog "log"
|
defaultLog "log"
|
||||||
@ -887,6 +888,8 @@ func parseCompactionRetention(mode, retention string) (ret time.Duration, err er
|
|||||||
ret = time.Duration(int64(h))
|
ret = time.Duration(int64(h))
|
||||||
case CompactorModePeriodic:
|
case CompactorModePeriodic:
|
||||||
ret = time.Duration(int64(h)) * time.Hour
|
ret = time.Duration(int64(h)) * time.Hour
|
||||||
|
case "":
|
||||||
|
return 0, errors.New("--auto-compaction-mode is undefined")
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// periodic compaction
|
// periodic compaction
|
||||||
|
@ -29,6 +29,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
"go.etcd.io/etcd/client/pkg/v3/testutil"
|
"go.etcd.io/etcd/client/pkg/v3/testutil"
|
||||||
"go.etcd.io/etcd/client/pkg/v3/transport"
|
"go.etcd.io/etcd/client/pkg/v3/transport"
|
||||||
clientv3 "go.etcd.io/etcd/client/v3"
|
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:]
|
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