From 92e1f49790d5b11faa41139b494ac2c4acd1ac47 Mon Sep 17 00:00:00 2001 From: Kaviraj Date: Tue, 12 Oct 2021 00:48:16 +0200 Subject: [PATCH] Fix middleware order for correct JSON marshaling Query http handler is wrapped with so many middleware for different purposes. We want `serverutil.JSONMiddleware` to be wrapped on top of `serverutil.NewPrepopulatedMiddleware`, reason being, we `PrepopulatedMiddleware.next` to have proper `Content-Type` set with `application/json; charset=UTF-8`. without that, empty array response are convertion into `null` value in the HTTPResponse. Fixes: #4420 Signed-off-by: Kaviraj --- pkg/loki/modules.go | 2 +- pkg/querier/worker_service.go | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pkg/loki/modules.go b/pkg/loki/modules.go index fd9a6fb712db6..e7b8172bef902 100644 --- a/pkg/loki/modules.go +++ b/pkg/loki/modules.go @@ -444,8 +444,8 @@ func (t *Loki) initQueryFrontend() (_ services.Service, err error) { serverutil.RecoveryHTTPMiddleware, t.HTTPAuthMiddleware, queryrange.StatsHTTPMiddleware, - serverutil.NewPrepopulateMiddleware(), serverutil.ResponseJSONMiddleware(), + serverutil.NewPrepopulateMiddleware(), ).Wrap(frontendHandler) var defaultHandler http.Handler diff --git a/pkg/querier/worker_service.go b/pkg/querier/worker_service.go index 9203a459e67ba..b474e35b26f74 100644 --- a/pkg/querier/worker_service.go +++ b/pkg/querier/worker_service.go @@ -106,6 +106,7 @@ func InitWorkerService( httpMiddleware := middleware.Merge( serverutil.RecoveryHTTPMiddleware, authMiddleware, + serverutil.ResponseJSONMiddleware(), serverutil.NewPrepopulateMiddleware(), ) @@ -124,8 +125,8 @@ func registerRoutesExternally(routes []string, externalRouter *mux.Router, inter httpMiddleware := middleware.Merge( serverutil.RecoveryHTTPMiddleware, authMiddleware, - serverutil.NewPrepopulateMiddleware(), serverutil.ResponseJSONMiddleware(), + serverutil.NewPrepopulateMiddleware(), ) for _, route := range routes {