@@ -24,6 +24,7 @@ import (
24
24
"github.com/cortexproject/cortex/pkg/util/flagext"
25
25
"github.com/cortexproject/cortex/pkg/util/grpcclient"
26
26
"github.com/cortexproject/cortex/pkg/util/httpgrpcutil"
27
+ util_log "github.com/cortexproject/cortex/pkg/util/log"
27
28
"github.com/cortexproject/cortex/pkg/util/services"
28
29
)
29
30
@@ -70,6 +71,9 @@ type Frontend struct {
70
71
71
72
schedulerWorkers * frontendSchedulerWorkers
72
73
requests * requestsInProgress
74
+
75
+ // Metric for number of cancellation failed to send to query scheduler.
76
+ cancelFailedQueries prometheus.Counter
73
77
}
74
78
75
79
type frontendRequest struct {
@@ -135,6 +139,11 @@ func NewFrontend(cfg Config, log log.Logger, reg prometheus.Registerer) (*Fronte
135
139
return float64 (f .schedulerWorkers .getWorkersCount ())
136
140
})
137
141
142
+ f .cancelFailedQueries = promauto .With (reg ).NewCounter (prometheus.CounterOpts {
143
+ Name : "cortex_query_frontend_cancel_failed_queries_total" ,
144
+ Help : "Total number of queries that are failed to be canceled due to cancel channel full." ,
145
+ })
146
+
138
147
f .Service = services .NewIdleService (f .starting , f .stopping )
139
148
return f , nil
140
149
}
@@ -226,7 +235,9 @@ enqueueAgain:
226
235
case cancelCh <- freq .queryID :
227
236
// cancellation sent.
228
237
default :
229
- // failed to cancel, ignore.
238
+ // failed to cancel, log it.
239
+ level .Warn (util_log .WithContext (ctx , f .log )).Log ("msg" , "failed to enqueue cancellation signal" , "query_id" , freq .queryID )
240
+ f .cancelFailedQueries .Inc ()
230
241
}
231
242
}
232
243
return nil , ctx .Err ()
0 commit comments