app/vmselect/prometheus: fix deadlock in /api/v1/series on a time range exceeding one day

This commit is contained in:
Aliaksandr Valialkin 2020-11-16 13:30:41 +02:00
parent f5500251d9
commit 6fa806f1ca

View file

@ -888,21 +888,19 @@ func SeriesHandler(startTime time.Time, w http.ResponseWriter, r *http.Request)
bw := bufferedwriter.Get(w)
defer bufferedwriter.Put(bw)
resultsCh := make(chan *quicktemplate.ByteBuffer)
doneCh := make(chan struct{})
go func() {
for i := range mns {
bb := quicktemplate.AcquireByteBuffer()
writemetricNameObject(bb, &mns[i])
resultsCh <- bb
}
close(doneCh)
close(resultsCh)
}()
// WriteSeriesResponse must consume all the data from resultsCh.
WriteSeriesResponse(bw, resultsCh)
if err := bw.Flush(); err != nil {
return err
}
<-doneCh
seriesDuration.UpdateDuration(startTime)
return nil
}