Skip to content

Commit 2e8c2fa

Browse files
Addressing scope of tenant prefix
1 parent ef23a6e commit 2e8c2fa

File tree

2 files changed

+14
-25
lines changed

2 files changed

+14
-25
lines changed

processor.go

+14-11
Original file line numberDiff line numberDiff line change
@@ -170,10 +170,12 @@ func (p *processor) handle(ctx *fh.RequestCtx) {
170170
return
171171
}
172172

173+
tenantPrefix := p.cfg.Tenant.Prefix
174+
173175
if p.cfg.Tenant.PrefixPreferSource {
174176
sourceTenantPrefix := string(ctx.Request.Header.Peek(p.cfg.Tenant.Header))
175177
if sourceTenantPrefix != "" {
176-
p.cfg.Tenant.Prefix = sourceTenantPrefix + "-"
178+
tenantPrefix = sourceTenantPrefix + "-"
177179
}
178180
}
179181

@@ -184,7 +186,7 @@ func (p *processor) handle(ctx *fh.RequestCtx) {
184186
// If there's metadata - just accept the request and drop it
185187
if len(wrReqIn.Metadata) > 0 {
186188
if p.cfg.Metadata && p.cfg.Tenant.Default != "" {
187-
r := p.send(clientIP, reqID, p.cfg.Tenant.Default, wrReqIn)
189+
r := p.send(clientIP, reqID, tenantPrefix, p.cfg.Tenant.Default, wrReqIn)
188190
if r.err != nil {
189191
ctx.Error(err.Error(), fh.StatusInternalServerError)
190192
p.Errorf("src=%s req_id=%s: unable to proxy metadata: %s", clientIP, reqID, r.err)
@@ -209,7 +211,7 @@ func (p *processor) handle(ctx *fh.RequestCtx) {
209211

210212
metricTenant := ""
211213
var errs *me.Error
212-
results := p.dispatch(clientIP, reqID, m)
214+
results := p.dispatch(clientIP, reqID, tenantPrefix, m)
213215

214216
code, body := 0, []byte("Ok")
215217

@@ -311,20 +313,20 @@ func (p *processor) marshal(wr *prompb.WriteRequest) (bufOut []byte, err error)
311313
return snappy.Encode(nil, b), nil
312314
}
313315

314-
func (p *processor) dispatch(clientIP net.Addr, reqID uuid.UUID, m map[string]*prompb.WriteRequest) (res []result) {
316+
func (p *processor) dispatch(clientIP net.Addr, reqID uuid.UUID, tenantPrefix string, m map[string]*prompb.WriteRequest) (res []result) {
315317
var wg sync.WaitGroup
316318
res = make([]result, len(m))
317319

318320
i := 0
319321
for tenant, wrReq := range m {
320322
wg.Add(1)
321323

322-
go func(idx int, tenant string, wrReq *prompb.WriteRequest) {
324+
go func(idx int, tenantPrefix string, tenant string, wrReq *prompb.WriteRequest) {
323325
defer wg.Done()
324326

325-
r := p.send(clientIP, reqID, tenant, wrReq)
327+
r := p.send(clientIP, reqID, tenantPrefix, tenant, wrReq)
326328
res[idx] = r
327-
}(i, tenant, wrReq)
329+
}(i, tenantPrefix, tenant, wrReq)
328330

329331
i++
330332
}
@@ -367,7 +369,7 @@ func (p *processor) processTimeseries(ts *prompb.TimeSeries) (tenant string, err
367369
return
368370
}
369371

370-
func (p *processor) send(clientIP net.Addr, reqID uuid.UUID, tenant string, wr *prompb.WriteRequest) (r result) {
372+
func (p *processor) send(clientIP net.Addr, reqID uuid.UUID, tenantPrefix string, tenant string, wr *prompb.WriteRequest) (r result) {
371373
start := time.Now()
372374
r.tenant = tenant
373375

@@ -385,6 +387,10 @@ func (p *processor) send(clientIP net.Addr, reqID uuid.UUID, tenant string, wr *
385387
return
386388
}
387389

390+
if tenantPrefix != "" {
391+
tenant = tenantPrefix + tenant
392+
}
393+
388394
p.fillRequestHeaders(clientIP, reqID, tenant, req)
389395

390396
if p.auth.egressHeader != nil {
@@ -415,9 +421,6 @@ func (p *processor) fillRequestHeaders(
415421
req.Header.Set("X-Prometheus-Remote-Write-Version", "0.1.0")
416422
req.Header.Set("X-Cortex-Tenant-Client", clientIP.String())
417423
req.Header.Set("X-Cortex-Tenant-ReqID", reqID.String())
418-
if p.cfg.Tenant.Prefix != "" {
419-
tenant = p.cfg.Tenant.Prefix + tenant
420-
}
421424
req.Header.Set(p.cfg.Tenant.Header, tenant)
422425
}
423426

processor_test.go

-14
Original file line numberDiff line numberDiff line change
@@ -232,20 +232,6 @@ func Test_request_headers(t *testing.T) {
232232
assert.Equal(t, "my-tenant", string(req.Header.Peek("X-Scope-OrgID")))
233233
}
234234

235-
func Test_request_headers_with_prefix(t *testing.T) {
236-
cfg, err := getConfig(testConfigWithValues)
237-
assert.Nil(t, err)
238-
239-
p := newProcessor(*cfg)
240-
241-
req := fh.AcquireRequest()
242-
clientIP, _ := net.ResolveIPAddr("ip", "1.1.1.1")
243-
reqID, _ := uuid.NewRandom()
244-
p.fillRequestHeaders(clientIP, reqID, "my-tenant", req)
245-
246-
assert.Equal(t, "foobar-my-tenant", string(req.Header.Peek("X-Scope-OrgID")))
247-
}
248-
249235
func Test_handle(t *testing.T) {
250236
cfg, err := getConfig(testConfig)
251237
assert.Nil(t, err)

0 commit comments

Comments
 (0)