diff --git a/embed/config.go b/embed/config.go index 0aa3564ff..e2be12c9e 100644 --- a/embed/config.go +++ b/embed/config.go @@ -171,8 +171,9 @@ type Config struct { // Experimental flags - ExperimentalCorruptCheckTime time.Duration `json:"experimental-corrupt-check-time"` - ExperimentalEnableV2V3 string `json:"experimental-enable-v2v3"` + ExperimentalInitialCorruptCheck bool `json:"experimental-initial-corrupt-check"` + ExperimentalCorruptCheckTime time.Duration `json:"experimental-corrupt-check-time"` + ExperimentalEnableV2V3 string `json:"experimental-enable-v2v3"` } // configYAML holds the config suitable for yaml parsing diff --git a/embed/etcd.go b/embed/etcd.go index 94f3aca00..e586b7e67 100644 --- a/embed/etcd.go +++ b/embed/etcd.go @@ -175,6 +175,7 @@ func StartEtcd(inCfg *Config) (e *Etcd, err error) { StrictReconfigCheck: cfg.StrictReconfigCheck, ClientCertAuthEnabled: cfg.ClientTLSInfo.ClientCertAuth, AuthToken: cfg.AuthToken, + InitialCorruptCheck: cfg.ExperimentalInitialCorruptCheck, CorruptCheckTime: cfg.ExperimentalCorruptCheckTime, } diff --git a/etcdmain/config.go b/etcdmain/config.go index fd7b0d263..3ea2a6d5c 100644 --- a/etcdmain/config.go +++ b/etcdmain/config.go @@ -213,6 +213,7 @@ func newConfig() *config { fs.StringVar(&cfg.ec.AuthToken, "auth-token", cfg.ec.AuthToken, "Specify auth token specific options.") // experimental + fs.BoolVar(&cfg.ec.ExperimentalInitialCorruptCheck, "experimental-initial-corrupt-check", cfg.ec.ExperimentalInitialCorruptCheck, "Enable to check data corruption before serving any client/peer traffic.") fs.DurationVar(&cfg.ec.ExperimentalCorruptCheckTime, "experimental-corrupt-check-time", cfg.ec.ExperimentalCorruptCheckTime, "Duration of time between cluster corruption check passes.") // ignored diff --git a/etcdmain/help.go b/etcdmain/help.go index 87b9db1f1..5efcc6bad 100644 --- a/etcdmain/help.go +++ b/etcdmain/help.go @@ -187,8 +187,10 @@ auth flags: Specify a v3 authentication token type and its options ('simple' or 'jwt'). experimental flags: + --experimental-initial-corrupt-check 'false' + enable to check data corruption before serving any client/peer traffic. --experimental-corrupt-check-time '0s' - duration of time between cluster corruption check passes. + duration of time between cluster corruption check passes. --experimental-enable-v2v3 '' serve v2 requests through the v3 backend under a given prefix. ` diff --git a/etcdserver/config.go b/etcdserver/config.go index 3f6ec6f2a..80d821943 100644 --- a/etcdserver/config.go +++ b/etcdserver/config.go @@ -66,7 +66,10 @@ type ServerConfig struct { AuthToken string - CorruptCheckTime time.Duration + // InitialCorruptCheck is true to check data corruption on boot + // before serving any peer/client traffic. + InitialCorruptCheck bool + CorruptCheckTime time.Duration } // VerifyBootstrap sanity-checks the initial config for bootstrap case