From b795eaa37eaef240fb518b6779fc5ab3b9163de9 Mon Sep 17 00:00:00 2001 From: "Sahdev P. Zala" Date: Wed, 15 Apr 2020 11:29:01 -0400 Subject: [PATCH] embed: fix compaction runtime err Handle negative value input which currently gives a runtime error. --- embed/config_test.go | 2 ++ embed/etcd.go | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/embed/config_test.go b/embed/config_test.go index 263f9b275f5..f6f5f1c87a3 100644 --- a/embed/config_test.go +++ b/embed/config_test.go @@ -177,9 +177,11 @@ func TestAutoCompactionModeParse(t *testing.T) { {"revision", "1", false, 1}, {"revision", "1h", false, time.Hour}, {"revision", "a", true, 0}, + {"revision", "-1", true, 0}, // periodic {"periodic", "1", false, time.Hour}, {"periodic", "a", true, 0}, + {"revision", "-1", true, 0}, // err mode {"errmode", "1", false, 0}, {"errmode", "1h", false, time.Hour}, diff --git a/embed/etcd.go b/embed/etcd.go index bf84b256774..0766a07eb9f 100644 --- a/embed/etcd.go +++ b/embed/etcd.go @@ -710,7 +710,7 @@ func (e *Etcd) GetLogger() *zap.Logger { func parseCompactionRetention(mode, retention string) (ret time.Duration, err error) { h, err := strconv.Atoi(retention) - if err == nil { + if err == nil && h >= 0 { switch mode { case CompactorModeRevision: ret = time.Duration(int64(h))