embed: fix compaction runtime err

Handle negative value input which currently gives a runtime error.
This commit is contained in:
Sahdev P. Zala
2020-04-15 11:29:01 -04:00
parent 91b1a9182a
commit 05c441f92f
2 changed files with 3 additions and 1 deletions

View File

@@ -178,9 +178,11 @@ func TestAutoCompactionModeParse(t *testing.T) {
{"revision", "1", false, 1}, {"revision", "1", false, 1},
{"revision", "1h", false, time.Hour}, {"revision", "1h", false, time.Hour},
{"revision", "a", true, 0}, {"revision", "a", true, 0},
{"revision", "-1", true, 0},
// periodic // periodic
{"periodic", "1", false, time.Hour}, {"periodic", "1", false, time.Hour},
{"periodic", "a", true, 0}, {"periodic", "a", true, 0},
{"revision", "-1", true, 0},
// err mode // err mode
{"errmode", "1", false, 0}, {"errmode", "1", false, 0},
{"errmode", "1h", false, time.Hour}, {"errmode", "1h", false, time.Hour},

View File

@@ -812,7 +812,7 @@ func (e *Etcd) GetLogger() *zap.Logger {
func parseCompactionRetention(mode, retention string) (ret time.Duration, err error) { func parseCompactionRetention(mode, retention string) (ret time.Duration, err error) {
h, err := strconv.Atoi(retention) h, err := strconv.Atoi(retention)
if err == nil { if err == nil && h >= 0 {
switch mode { switch mode {
case CompactorModeRevision: case CompactorModeRevision:
ret = time.Duration(int64(h)) ret = time.Duration(int64(h))