Periodically trigger compaction

This addresses an issue where the compaction triggered on cutting
a new block doesn't find anything as the writers are still active on the
block that should be ready for compaction.
This commit is contained in:
Fabian Reinartz 2017-02-28 15:08:52 +01:00
parent db5c88ea9a
commit 6c4217276f
1 changed files with 8 additions and 0 deletions

8
db.go
View File

@ -187,8 +187,16 @@ func Open(dir string, l log.Logger, r prometheus.Registerer, opts *Options) (db
func (db *DB) run() {
defer close(db.donec)
tick := time.NewTicker(30 * time.Second)
defer tick.Stop()
for {
select {
case <-tick.C:
select {
case db.compactc <- struct{}{}:
default:
}
case <-db.compactc:
db.metrics.compactionsTriggered.Inc()