Skip to content

Commit d1dcdf0

Browse files
authored
Return bad request when the tenant resolving fail (#6715)
Signed-off-by: SungJin1212 <[email protected]>
1 parent fd9fc16 commit d1dcdf0

File tree

3 files changed

+42
-0
lines changed

3 files changed

+42
-0
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
* [FEATURE] Ingester: Support out-of-order native histogram ingestion. It automatically enabled when `-ingester.out-of-order-time-window > 0` and `-blocks-storage.tsdb.enable-native-histograms=true`. #6626 #6663
1010
* [FEATURE] Ruler: Add support for percentage based sharding for rulers. #6680
1111
* [FEATURE] Ruler: Add support for group labels. #6665
12+
* [ENHANCEMENT] Query Frontend: Change to return 400 when the tenant resolving fail. #6715
1213
* [ENHANCEMENT] Querier: Support query parameters to metadata api (/api/v1/metadata) to allow user to limit metadata to return. #6681
1314
* [ENHANCEMENT] Ingester: Add a `cortex_ingester_active_native_histogram_series` metric to track # of active NH series. #6695
1415
* [ENHANCEMENT] Query Frontend: Add new limit `-frontend.max-query-response-size` for total query response size after decompression in query frontend. #6607

pkg/frontend/transport/handler.go

+1
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@ func (f *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
219219

220220
tenantIDs, err := tenant.TenantIDs(r.Context())
221221
if err != nil {
222+
http.Error(w, err.Error(), http.StatusBadRequest)
222223
return
223224
}
224225

pkg/frontend/transport/handler_test.go

+40
Original file line numberDiff line numberDiff line change
@@ -553,6 +553,46 @@ func TestReportQueryStatsFormat(t *testing.T) {
553553
}
554554
}
555555

556+
func Test_ExtractTenantIDs(t *testing.T) {
557+
roundTripper := roundTripperFunc(func(req *http.Request) (*http.Response, error) {
558+
return &http.Response{
559+
StatusCode: http.StatusOK,
560+
Body: io.NopCloser(strings.NewReader("{}")),
561+
}, nil
562+
})
563+
564+
tests := []struct {
565+
name string
566+
orgId string
567+
expectedStatusCode int
568+
}{
569+
{
570+
name: "invalid tenantID",
571+
orgId: "aaa\\/",
572+
expectedStatusCode: http.StatusBadRequest,
573+
},
574+
{
575+
name: "valid tenantID",
576+
orgId: "user-1",
577+
expectedStatusCode: http.StatusOK,
578+
},
579+
}
580+
581+
for _, test := range tests {
582+
t.Run(test.name, func(t *testing.T) {
583+
handler := NewHandler(HandlerConfig{QueryStatsEnabled: true}, tenantfederation.Config{}, roundTripper, log.NewNopLogger(), nil)
584+
handlerWithAuth := middleware.Merge(middleware.AuthenticateUser).Wrap(handler)
585+
586+
req := httptest.NewRequest("GET", "http://fake", nil)
587+
req.Header.Set("X-Scope-OrgId", test.orgId)
588+
resp := httptest.NewRecorder()
589+
590+
handlerWithAuth.ServeHTTP(resp, req)
591+
require.Equal(t, test.expectedStatusCode, resp.Code)
592+
})
593+
}
594+
}
595+
556596
func Test_TenantFederation_MaxTenant(t *testing.T) {
557597
// set a multi tenant resolver
558598
tenant.WithDefaultResolver(tenant.NewMultiResolver())

0 commit comments

Comments
 (0)