@@ -129,27 +129,30 @@ func (p *proxy) ServeHTTP(wr http.ResponseWriter, req *http.Request) {
129129 delHopHeaders (resp .Header )
130130
131131 copyHeader (wr .Header (), resp .Header )
132- wr .WriteHeader (resp .StatusCode )
133132
134133 mfChan := make (chan * dto.MetricFamily , 1024 )
135134 go func () {
136135 if err := prom .ParseReader (resp .Body , mfChan ); err != nil {
137136 log .Error ("ERROR reading metrics:" , err )
137+ http .Error (wr , "Unable to parse metrics" , http .StatusInternalServerError )
138138 return
139139 }
140140 }()
141141
142142 if labelMap , found := p .lcache .Get ("kong-services" ); found {
143143 log .Debug ("Found Kong config in cache.. using it!" )
144+ wr .WriteHeader (resp .StatusCode )
144145 prom .Write (mfChan , wr , * labelMap .(* pkg.LabelNamespaceMap ))
145146 } else {
146147 log .Debug ("Refreshing kong services..." )
147148 labelMap , err := pkg .ParseConfig (& p .kongUrl )
148149 if err != nil {
149150 log .Error (err .Error ())
150- http .Error (wr , "Server Error" , http .StatusInternalServerError )
151+ http .Error (wr , "Temporarily unable to get Service list" , http .StatusInternalServerError )
152+ } else {
153+ p .lcache .Set ("kong-services" , labelMap , cache .DefaultExpiration )
154+ wr .WriteHeader (resp .StatusCode )
155+ prom .Write (mfChan , wr , * labelMap )
151156 }
152- p .lcache .Set ("kong-services" , labelMap , cache .DefaultExpiration )
153- prom .Write (mfChan , wr , * labelMap )
154157 }
155158}
0 commit comments