@@ -22,6 +22,7 @@ import (
2222 "time"
2323
2424 "github.com/uber-go/tally"
25+ entityqueue "github.com/uber/submitqueue/platform/base/messagequeue"
2526 "github.com/uber/submitqueue/platform/errs"
2627 "github.com/uber/submitqueue/platform/extension/consumergate"
2728 extqueue "github.com/uber/submitqueue/platform/extension/messagequeue"
@@ -371,6 +372,9 @@ func (m *consumer) processPartition(ctx context.Context, controller Controller,
371372func (m * consumer ) processDelivery (ctx context.Context , controller Controller , delivery extqueue.Delivery , controllerScope tally.Scope ) {
372373 const opName = "process"
373374
375+ msg := delivery .Message ()
376+ ctx = entityqueue .WithQueueName (ctx , msg .Metadata [entityqueue .MetadataKeyQueueName ])
377+
374378 // Consumer gate: a delivery whose gate is closed is recorded as parked and
375379 // postponed (barrier + re-check on redelivery); a false return also covers
376380 // shutdown-while-checking, where the delivery is left in flight so its
@@ -380,7 +384,6 @@ func (m *consumer) processDelivery(ctx context.Context, controller Controller, d
380384 return
381385 }
382386
383- msg := delivery .Message ()
384387 topicKey := controller .TopicKey ()
385388
386389 m .logger .Debugw ("processing delivery" ,
@@ -396,7 +399,7 @@ func (m *consumer) processDelivery(ctx context.Context, controller Controller, d
396399
397400 // Call controller with wrapped delivery
398401 start := time .Now ()
399- op := metrics .Begin (controllerScope , opName , metrics .LongLatencyBuckets )
402+ op := metrics .Begin (controllerScope , opName , metrics .LongLatencyBuckets , metrics . TagsFromContext ( ctx ) ... )
400403 err := controller .Process (ctx , wrapped )
401404
402405 elapsed := time .Since (start )
@@ -419,7 +422,7 @@ func (m *consumer) processDelivery(ctx context.Context, controller Controller, d
419422 // A failure outcome wins over a recorded hold — a hold is only honored
420423 // on success, so retry accounting and dead-lettering stay meaningful.
421424 if wrapped .held {
422- metrics .NamedCounter (controllerScope , opName , "hold_ignored" , 1 )
425+ metrics .NamedCounter (controllerScope , opName , "hold_ignored" , 1 , metrics . TagsFromContext ( ctx ) ... )
423426 m .logger .Warnw ("hold recorded but controller returned error, failure outcome wins" ,
424427 "controller" , controller .Name (),
425428 "topic_key" , topicKey ,
@@ -451,7 +454,7 @@ func (m *consumer) processDelivery(ctx context.Context, controller Controller, d
451454 )
452455
453456 // Reject moves to DLQ (or acks if DLQ disabled)
454- rejectOp := metrics .Begin (controllerScope , "reject" , metrics .StorageLatencyBuckets )
457+ rejectOp := metrics .Begin (controllerScope , "reject" , metrics .StorageLatencyBuckets , metrics . TagsFromContext ( ctx ) ... )
455458 rejectErr := delivery .Reject (ctx , controllerFailure )
456459 rejectOp .Complete (rejectErr )
457460 if rejectErr != nil {
@@ -485,7 +488,7 @@ func (m *consumer) processDelivery(ctx context.Context, controller Controller, d
485488 // Nack requeues immediately - the visibility timeout spaces retries.
486489 // The failure travels with it so that the attempt which finally spends
487490 // the retry budget can dead-letter saying why.
488- nackOp := metrics .Begin (controllerScope , "nack" , metrics .StorageLatencyBuckets )
491+ nackOp := metrics .Begin (controllerScope , "nack" , metrics .StorageLatencyBuckets , metrics . TagsFromContext ( ctx ) ... )
489492 nackErr := delivery .Nack (ctx , controllerFailure )
490493 nackOp .Complete (nackErr )
491494 if nackErr != nil {
@@ -505,7 +508,7 @@ func (m *consumer) processDelivery(ctx context.Context, controller Controller, d
505508 // the visibility timeout lapses into a normal redelivery, so the hold
506509 // loop's liveness never depends on this write succeeding.
507510 if wrapped .held {
508- postponeOp := metrics .Begin (controllerScope , "postpone" , metrics .StorageLatencyBuckets )
511+ postponeOp := metrics .Begin (controllerScope , "postpone" , metrics .StorageLatencyBuckets , metrics . TagsFromContext ( ctx ) ... )
509512 postponeErr := delivery .Postpone (ctx , wrapped .holdDelayMs )
510513 postponeOp .Complete (postponeErr )
511514 if postponeErr != nil {
@@ -530,7 +533,7 @@ func (m *consumer) processDelivery(ctx context.Context, controller Controller, d
530533 }
531534
532535 // Controller succeeded - ack message
533- ackOp := metrics .Begin (controllerScope , "ack" , metrics .StorageLatencyBuckets )
536+ ackOp := metrics .Begin (controllerScope , "ack" , metrics .StorageLatencyBuckets , metrics . TagsFromContext ( ctx ) ... )
534537 ackErr := delivery .Ack (ctx )
535538 ackOp .Complete (ackErr )
536539 if ackErr != nil {
@@ -578,7 +581,7 @@ func (m *consumer) checkGate(ctx context.Context, controller Controller, deliver
578581 // into a normal redelivery.
579582 return false
580583 }
581- metrics .NamedCounter (scope , opName , "enter_errors" , 1 )
584+ metrics .NamedCounter (scope , opName , "enter_errors" , 1 , metrics . TagsFromContext ( ctx ) ... )
582585 m .logger .Errorw ("gate check failed, failing open" ,
583586 "consumer_group" , consumerGroup ,
584587 "topic" , topic ,
@@ -600,7 +603,7 @@ func (m *consumer) checkGate(ctx context.Context, controller Controller, deliver
600603 // earlier re-check, the gate has opened and the record must go so
601604 // observers see an empty parked set. A no-op when never parked.
602605 if unparkErr := entry .Unpark (ctx , descriptor ); unparkErr != nil {
603- metrics .NamedCounter (scope , opName , "unpark_errors" , 1 )
606+ metrics .NamedCounter (scope , opName , "unpark_errors" , 1 , metrics . TagsFromContext ( ctx ) ... )
604607 m .logger .Warnw ("failed to remove parked record on admit" ,
605608 "consumer_group" , consumerGroup ,
606609 "topic" , topic ,
@@ -615,7 +618,7 @@ func (m *consumer) checkGate(ctx context.Context, controller Controller, deliver
615618 // partition waits behind it (barrier) and the gate is re-checked on
616619 // redelivery without burning retry budget.
617620 if parkErr := entry .Park (ctx , descriptor ); parkErr != nil {
618- metrics .NamedCounter (scope , opName , "park_errors" , 1 )
621+ metrics .NamedCounter (scope , opName , "park_errors" , 1 , metrics . TagsFromContext ( ctx ) ... )
619622 m .logger .Warnw ("failed to write parked record, postponing anyway" ,
620623 "consumer_group" , consumerGroup ,
621624 "topic" , topic ,
@@ -624,8 +627,8 @@ func (m *consumer) checkGate(ctx context.Context, controller Controller, deliver
624627 )
625628 }
626629
627- metrics .NamedCounter (scope , opName , "parked" , 1 )
628- postponeOp := metrics .Begin (scope , "postpone" , metrics .StorageLatencyBuckets )
630+ metrics .NamedCounter (scope , opName , "parked" , 1 , metrics . TagsFromContext ( ctx ) ... )
631+ postponeOp := metrics .Begin (scope , "postpone" , metrics .StorageLatencyBuckets , metrics . TagsFromContext ( ctx ) ... )
629632 postponeErr := delivery .Postpone (ctx , m .gateRecheckDelayMs )
630633 postponeOp .Complete (postponeErr )
631634 if postponeErr != nil {
0 commit comments