@@ -1339,16 +1339,29 @@ func (t *Loki) initRuleEvaluator() (services.Service, error) {
1339
1339
mode := t .Cfg .Ruler .Evaluation .Mode
1340
1340
logger := log .With (util_log .Logger , "component" , "ruler" , "evaluation_mode" , mode )
1341
1341
1342
+ var svc services.Service
1342
1343
switch mode {
1343
1344
case ruler .EvalModeLocal :
1344
- var engine * logql.Engine
1345
+ var deleteStore deletion.DeleteRequestsClient
1346
+ deleteStore , err = t .deleteRequestsClient ("rule-evaluator" , t .Overrides )
1347
+ if err != nil {
1348
+ break
1349
+ }
1345
1350
1346
- engine , err = t .createRulerQueryEngine (logger )
1351
+ var engine * logql.Engine
1352
+ engine , err = t .createRulerQueryEngine (logger , deleteStore )
1347
1353
if err != nil {
1348
1354
break
1349
1355
}
1350
1356
1351
1357
evaluator , err = ruler .NewLocalEvaluator (engine , logger )
1358
+
1359
+ // The delete client needs to be stopped when the evaluator is stopped.
1360
+ // We wrap the client on a IDLE service and call Stop on shutdown.
1361
+ svc = services .NewIdleService (nil , func (_ error ) error {
1362
+ deleteStore .Stop ()
1363
+ return nil
1364
+ })
1352
1365
case ruler .EvalModeRemote :
1353
1366
qfClient , e := ruler .DialQueryFrontend (& t .Cfg .Ruler .Evaluation .QueryFrontend )
1354
1367
if e != nil {
@@ -1366,7 +1379,7 @@ func (t *Loki) initRuleEvaluator() (services.Service, error) {
1366
1379
1367
1380
t .ruleEvaluator = ruler .NewEvaluatorWithJitter (evaluator , t .Cfg .Ruler .Evaluation .MaxJitter , fnv .New32a (), logger )
1368
1381
1369
- return nil , nil
1382
+ return svc , nil
1370
1383
}
1371
1384
1372
1385
func (t * Loki ) initMemberlistKV () (services.Service , error ) {
@@ -1912,12 +1925,7 @@ func (t *Loki) deleteRequestsClient(clientType string, limits limiter.CombinedLi
1912
1925
return deletion .NewPerTenantDeleteRequestsClient (client , limits ), nil
1913
1926
}
1914
1927
1915
- func (t * Loki ) createRulerQueryEngine (logger log.Logger ) (eng * logql.Engine , err error ) {
1916
- deleteStore , err := t .deleteRequestsClient ("rule-evaluator" , t .Overrides )
1917
- if err != nil {
1918
- return nil , fmt .Errorf ("could not create delete requests store: %w" , err )
1919
- }
1920
-
1928
+ func (t * Loki ) createRulerQueryEngine (logger log.Logger , deleteStore deletion.DeleteRequestsClient ) (eng * logql.Engine , err error ) {
1921
1929
q , err := querier .New (t .Cfg .Querier , t .Store , t .ingesterQuerier , t .Overrides , deleteStore , nil , logger )
1922
1930
if err != nil {
1923
1931
return nil , fmt .Errorf ("could not create querier: %w" , err )
0 commit comments