mirror of
https://github.com/prometheus/prometheus.git
synced 2025-03-05 20:59:13 -08:00
Wait until storage is drained before closing the underlying leveldb.
This commit is contained in:
parent
becc278eb6
commit
0be0aa59c2
|
@ -33,7 +33,7 @@ type tieredStorage struct {
|
||||||
appendToMemoryQueue chan model.Sample
|
appendToMemoryQueue chan model.Sample
|
||||||
diskFrontier *diskFrontier
|
diskFrontier *diskFrontier
|
||||||
diskStorage *LevelDBMetricPersistence
|
diskStorage *LevelDBMetricPersistence
|
||||||
draining chan bool
|
draining chan chan bool
|
||||||
flushMemoryInterval time.Duration
|
flushMemoryInterval time.Duration
|
||||||
memoryArena memorySeriesStorage
|
memoryArena memorySeriesStorage
|
||||||
memoryTTL time.Duration
|
memoryTTL time.Duration
|
||||||
|
@ -74,7 +74,7 @@ func NewTieredStorage(appendToMemoryQueueDepth, appendToDiskQueueDepth, viewQueu
|
||||||
appendToDiskQueue: make(chan model.Sample, appendToDiskQueueDepth),
|
appendToDiskQueue: make(chan model.Sample, appendToDiskQueueDepth),
|
||||||
appendToMemoryQueue: make(chan model.Sample, appendToMemoryQueueDepth),
|
appendToMemoryQueue: make(chan model.Sample, appendToMemoryQueueDepth),
|
||||||
diskStorage: diskStorage,
|
diskStorage: diskStorage,
|
||||||
draining: make(chan bool),
|
draining: make(chan chan bool),
|
||||||
flushMemoryInterval: flushMemoryInterval,
|
flushMemoryInterval: flushMemoryInterval,
|
||||||
memoryArena: NewMemorySeriesStorage(),
|
memoryArena: NewMemorySeriesStorage(),
|
||||||
memoryTTL: memoryTTL,
|
memoryTTL: memoryTTL,
|
||||||
|
@ -94,9 +94,11 @@ func (t *tieredStorage) AppendSample(s model.Sample) (err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *tieredStorage) Drain() {
|
func (t *tieredStorage) Drain() {
|
||||||
|
drainingDone := make(chan bool)
|
||||||
if len(t.draining) == 0 {
|
if len(t.draining) == 0 {
|
||||||
t.draining <- true
|
t.draining <- drainingDone
|
||||||
}
|
}
|
||||||
|
<-drainingDone
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *tieredStorage) MakeView(builder ViewRequestBuilder, deadline time.Duration) (view View, err error) {
|
func (t *tieredStorage) MakeView(builder ViewRequestBuilder, deadline time.Duration) (view View, err error) {
|
||||||
|
@ -162,8 +164,9 @@ func (t *tieredStorage) Serve() {
|
||||||
t.flushMemory()
|
t.flushMemory()
|
||||||
case viewRequest := <-t.viewQueue:
|
case viewRequest := <-t.viewQueue:
|
||||||
t.renderView(viewRequest)
|
t.renderView(viewRequest)
|
||||||
case <-t.draining:
|
case drainingDone := <-t.draining:
|
||||||
t.flush()
|
t.flush()
|
||||||
|
drainingDone <- true
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue