diff --git a/index/firestorm/garbage.go b/index/firestorm/garbage.go index 42a6b999..d70d5036 100644 --- a/index/firestorm/garbage.go +++ b/index/firestorm/garbage.go @@ -76,6 +76,9 @@ func (gc *GarbageCollector) run() { logger.Printf("garbage collector error getting doc count: %v", err) continue } + if docSize == 0 { + continue + } garbageRatio := int(uint64(garbageSize) / docSize) if garbageRatio > gc.garbageThreshold { gc.cleanup() diff --git a/index/firestorm/garbage_test.go b/index/firestorm/garbage_test.go index 096823d3..3313608f 100644 --- a/index/firestorm/garbage_test.go +++ b/index/firestorm/garbage_test.go @@ -11,6 +11,7 @@ package firestorm import ( "testing" + "time" "github.com/blevesearch/bleve/index" "github.com/blevesearch/bleve/index/store/gtreap" @@ -115,3 +116,17 @@ func TestGarbageCleanup(t *testing.T) { } } + +func TestGarbageDontPanicOnEmptyDocs(t *testing.T) { + idx, err := NewFirestorm("", nil, index.NewAnalysisQueue(1)) + if err != nil { + t.Fatal(err) + } + f := idx.(*Firestorm) + gc := NewGarbageCollector(f) + gc.garbageSleep = 30 * time.Millisecond + + gc.Start() + time.Sleep(40 * time.Millisecond) + gc.Stop() +}