@@ -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
0 commit comments