Browse Source

Merge pull request #1383 from prometheus/beorn7/race

Remove race condition from TestRetentionCutoff
pull/1384/head
Björn Rabenstein 9 years ago
parent
commit
abeeebeed4
  1. 5
      storage/local/storage.go
  2. 1
      storage/local/storage_test.go

5
storage/local/storage.go

@ -132,6 +132,7 @@ type memorySeriesStorage struct {
options *MemorySeriesStorageOptions
loopStopping, loopStopped chan struct{}
logThrottlingStopped chan struct{}
maxMemoryChunks int
dropAfter time.Duration
checkpointInterval time.Duration
@ -181,6 +182,7 @@ func NewMemorySeriesStorage(o *MemorySeriesStorageOptions) Storage {
loopStopping: make(chan struct{}),
loopStopped: make(chan struct{}),
logThrottlingStopped: make(chan struct{}),
throttled: make(chan struct{}, 1),
maxMemoryChunks: o.MemoryChunks,
dropAfter: o.PersistenceRetentionPeriod,
@ -640,6 +642,9 @@ func (s *memorySeriesStorage) logThrottling() {
timer := time.NewTimer(time.Minute)
timer.Stop()
// Signal exit of the goroutine. Currently only needed by test code.
defer close(s.logThrottlingStopped)
for {
select {
case <-s.throttled:

1
storage/local/storage_test.go

@ -379,6 +379,7 @@ func TestRetentionCutoff(t *testing.T) {
// Stop maintenance loop to prevent actual purging.
close(s.loopStopping)
<-s.loopStopped
<-s.logThrottlingStopped
// Recreate channel to avoid panic when we really shut down.
s.loopStopping = make(chan struct{})

Loading…
Cancel
Save