Skip to content

Commit

Permalink
Fix middleware order for correct JSON marshaling
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
kavirajk committed Oct 11, 2021
1 parent cdde2cf commit 92e1f49
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 2 deletions.
2 changes: 1 addition & 1 deletion pkg/loki/modules.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion pkg/querier/worker_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ func InitWorkerService(
httpMiddleware := middleware.Merge(
serverutil.RecoveryHTTPMiddleware,
authMiddleware,
serverutil.ResponseJSONMiddleware(),
serverutil.NewPrepopulateMiddleware(),
)

Expand All @@ -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 {
Expand Down

0 comments on commit 92e1f49

Please sign in to comment.