@@ -170,14 +170,23 @@ func (p *processor) handle(ctx *fh.RequestCtx) {
170170 return
171171 }
172172
173+ tenantPrefix := p .cfg .Tenant .Prefix
174+
175+ if p .cfg .Tenant .PrefixPreferSource {
176+ sourceTenantPrefix := string (ctx .Request .Header .Peek (p .cfg .Tenant .Header ))
177+ if sourceTenantPrefix != "" {
178+ tenantPrefix = sourceTenantPrefix + "-"
179+ }
180+ }
181+
173182 clientIP := ctx .RemoteAddr ()
174183 reqID , _ := uuid .NewRandom ()
175184
176185 if len (wrReqIn .Timeseries ) == 0 {
177186 // If there's metadata - just accept the request and drop it
178187 if len (wrReqIn .Metadata ) > 0 {
179188 if p .cfg .Metadata && p .cfg .Tenant .Default != "" {
180- r := p .send (clientIP , reqID , p .cfg .Tenant .Default , wrReqIn )
189+ r := p .send (clientIP , reqID , tenantPrefix + p .cfg .Tenant .Default , wrReqIn )
181190 if r .err != nil {
182191 ctx .Error (err .Error (), fh .StatusInternalServerError )
183192 p .Errorf ("src=%s req_id=%s: unable to proxy metadata: %s" , clientIP , reqID , r .err )
@@ -202,7 +211,7 @@ func (p *processor) handle(ctx *fh.RequestCtx) {
202211
203212 metricTenant := ""
204213 var errs * me.Error
205- results := p .dispatch (clientIP , reqID , m )
214+ results := p .dispatch (clientIP , reqID , tenantPrefix , m )
206215
207216 code , body := 0 , []byte ("Ok" )
208217
@@ -304,7 +313,7 @@ func (p *processor) marshal(wr *prompb.WriteRequest) (bufOut []byte, err error)
304313 return snappy .Encode (nil , b ), nil
305314}
306315
307- 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 ) {
308317 var wg sync.WaitGroup
309318 res = make ([]result , len (m ))
310319
@@ -317,7 +326,7 @@ func (p *processor) dispatch(clientIP net.Addr, reqID uuid.UUID, m map[string]*p
317326
318327 r := p .send (clientIP , reqID , tenant , wrReq )
319328 res [idx ] = r
320- }(i , tenant , wrReq )
329+ }(i , tenantPrefix + tenant , wrReq )
321330
322331 i ++
323332 }
@@ -408,9 +417,6 @@ func (p *processor) fillRequestHeaders(
408417 req .Header .Set ("X-Prometheus-Remote-Write-Version" , "0.1.0" )
409418 req .Header .Set ("X-Cortex-Tenant-Client" , clientIP .String ())
410419 req .Header .Set ("X-Cortex-Tenant-ReqID" , reqID .String ())
411- if p .cfg .Tenant .Prefix != "" {
412- tenant = p .cfg .Tenant .Prefix + tenant
413- }
414420 req .Header .Set (p .cfg .Tenant .Header , tenant )
415421}
416422
0 commit comments