Remove a deadlock during shutdown.

This commit is contained in:
Bjoern Rabenstein 2015-01-07 19:02:38 +01:00
parent 917acb6baf
commit eb932d1524

View file

@ -424,7 +424,7 @@ func (s *memorySeriesStorage) preloadChunksForRange(
func (s *memorySeriesStorage) handleEvictList() { func (s *memorySeriesStorage) handleEvictList() {
ticker := time.NewTicker(maxEvictInterval) ticker := time.NewTicker(maxEvictInterval)
count := 0 count := 0
loop:
for { for {
// To batch up evictions a bit, this tries evictions at least // To batch up evictions a bit, this tries evictions at least
// once per evict interval, but earlier if the number of evict // once per evict interval, but earlier if the number of evict
@ -450,12 +450,20 @@ loop:
s.maybeEvict() s.maybeEvict()
} }
case <-s.evictStopping: case <-s.evictStopping:
break loop // Drain evictRequests to not let requesters hang.
for {
select {
case <-s.evictRequests:
// Do nothing.
default:
ticker.Stop()
glog.Info("Chunk eviction stopped.")
close(s.evictStopped)
return
}
}
} }
} }
ticker.Stop()
glog.Info("Chunk eviction stopped.")
close(s.evictStopped)
} }
// maybeEvict is a local helper method. Must only be called by handleEvictList. // maybeEvict is a local helper method. Must only be called by handleEvictList.