@@ -170,10 +170,12 @@ func (p *processor) handle(ctx *fh.RequestCtx) {
170
170
return
171
171
}
172
172
173
+ tenantPrefix := p .cfg .Tenant .Prefix
174
+
173
175
if p .cfg .Tenant .PrefixPreferSource {
174
176
sourceTenantPrefix := string (ctx .Request .Header .Peek (p .cfg .Tenant .Header ))
175
177
if sourceTenantPrefix != "" {
176
- p . cfg . Tenant . Prefix = sourceTenantPrefix + "-"
178
+ tenantPrefix = sourceTenantPrefix + "-"
177
179
}
178
180
}
179
181
@@ -184,7 +186,7 @@ func (p *processor) handle(ctx *fh.RequestCtx) {
184
186
// If there's metadata - just accept the request and drop it
185
187
if len (wrReqIn .Metadata ) > 0 {
186
188
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 )
188
190
if r .err != nil {
189
191
ctx .Error (err .Error (), fh .StatusInternalServerError )
190
192
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) {
209
211
210
212
metricTenant := ""
211
213
var errs * me.Error
212
- results := p .dispatch (clientIP , reqID , m )
214
+ results := p .dispatch (clientIP , reqID , tenantPrefix , m )
213
215
214
216
code , body := 0 , []byte ("Ok" )
215
217
@@ -311,20 +313,20 @@ func (p *processor) marshal(wr *prompb.WriteRequest) (bufOut []byte, err error)
311
313
return snappy .Encode (nil , b ), nil
312
314
}
313
315
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 ) {
315
317
var wg sync.WaitGroup
316
318
res = make ([]result , len (m ))
317
319
318
320
i := 0
319
321
for tenant , wrReq := range m {
320
322
wg .Add (1 )
321
323
322
- go func (idx int , tenant string , wrReq * prompb.WriteRequest ) {
324
+ go func (idx int , tenantPrefix string , tenant string , wrReq * prompb.WriteRequest ) {
323
325
defer wg .Done ()
324
326
325
- r := p .send (clientIP , reqID , tenant , wrReq )
327
+ r := p .send (clientIP , reqID , tenantPrefix , tenant , wrReq )
326
328
res [idx ] = r
327
- }(i , tenant , wrReq )
329
+ }(i , tenantPrefix , tenant , wrReq )
328
330
329
331
i ++
330
332
}
@@ -367,7 +369,7 @@ func (p *processor) processTimeseries(ts *prompb.TimeSeries) (tenant string, err
367
369
return
368
370
}
369
371
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 ) {
371
373
start := time .Now ()
372
374
r .tenant = tenant
373
375
@@ -385,6 +387,10 @@ func (p *processor) send(clientIP net.Addr, reqID uuid.UUID, tenant string, wr *
385
387
return
386
388
}
387
389
390
+ if tenantPrefix != "" {
391
+ tenant = tenantPrefix + tenant
392
+ }
393
+
388
394
p .fillRequestHeaders (clientIP , reqID , tenant , req )
389
395
390
396
if p .auth .egressHeader != nil {
@@ -415,9 +421,6 @@ func (p *processor) fillRequestHeaders(
415
421
req .Header .Set ("X-Prometheus-Remote-Write-Version" , "0.1.0" )
416
422
req .Header .Set ("X-Cortex-Tenant-Client" , clientIP .String ())
417
423
req .Header .Set ("X-Cortex-Tenant-ReqID" , reqID .String ())
418
- if p .cfg .Tenant .Prefix != "" {
419
- tenant = p .cfg .Tenant .Prefix + tenant
420
- }
421
424
req .Header .Set (p .cfg .Tenant .Header , tenant )
422
425
}
423
426
0 commit comments