From 718ce337148a05b2366c4d2a083e87087481a711 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Fri, 24 May 2019 14:54:31 +0300 Subject: [PATCH] app/vmselect: consume resultsCh data in exportHandler if writeResponseFunc failed to consume it --- app/vmselect/prometheus/prometheus.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/vmselect/prometheus/prometheus.go b/app/vmselect/prometheus/prometheus.go index 14b581ffc6..c823d2a4fa 100644 --- a/app/vmselect/prometheus/prometheus.go +++ b/app/vmselect/prometheus/prometheus.go @@ -156,6 +156,11 @@ func exportHandler(w http.ResponseWriter, matches []string, start, end int64, fo w.Header().Set("Content-Type", contentType) writeResponseFunc(w, resultsCh) + // Consume all the data from resultsCh in the event writeResponseFunc + // fails to consume all the data. + for bb := range resultsCh { + quicktemplate.ReleaseByteBuffer(bb) + } err = <-doneCh if err != nil { return fmt.Errorf("error during data fetching: %s", err) @@ -297,11 +302,10 @@ func SeriesHandler(w http.ResponseWriter, r *http.Request) error { WriteSeriesResponse(w, resultsCh) // Consume all the data from resultsCh in the event WriteSeriesResponse - // fail to consume all the data. + // fails to consume all the data. for bb := range resultsCh { quicktemplate.ReleaseByteBuffer(bb) } - err = <-doneCh if err != nil { return fmt.Errorf("error during data fetching: %s", err)