diff --git a/CHANGELOG.md b/CHANGELOG.md index aafa1a741e..0a59a33bbc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ v1.8.6 [unreleased] ------------------- +- [#21290](https://github.com/influxdata/influxdb/pull/21290): fix: Anti-Entropy loops endlessly with empty shard + v1.8.5 [2021-04-19] ------------------- diff --git a/tsdb/engine/tsm1/file_store.go b/tsdb/engine/tsm1/file_store.go index 09c19d348a..d491ffb89c 100644 --- a/tsdb/engine/tsm1/file_store.go +++ b/tsdb/engine/tsm1/file_store.go @@ -566,6 +566,7 @@ func (f *FileStore) Open() error { } var lm int64 + isEmpty := true for range files { res := <-readerC if res.err != nil { @@ -585,9 +586,18 @@ func (f *FileStore) Open() error { if res.r.LastModified() > lm { lm = res.r.LastModified() } - + isEmpty = false + } + if isEmpty { + if fi, err := os.Stat(f.dir); err == nil { + f.lastModified = fi.ModTime().UTC() + } else { + close(readerC) + return err + } + } else { + f.lastModified = time.Unix(0, lm).UTC() } - f.lastModified = time.Unix(0, lm).UTC() close(readerC) sort.Sort(tsmReaders(f.files))