@@ -13,14 +13,14 @@ import (
13
13
"unsafe"
14
14
15
15
"github.com/go-kit/log/level"
16
- "github.com/pkg/errors"
17
- "github.com/prometheus/client_golang/prometheus"
18
- "github.com/prometheus/common/model"
19
-
20
16
"github.com/grafana/dskit/backoff"
21
17
"github.com/grafana/dskit/kv"
22
18
"github.com/grafana/dskit/ring"
23
19
"github.com/grafana/dskit/services"
20
+ "github.com/pkg/errors"
21
+ "github.com/prometheus/client_golang/prometheus"
22
+ "github.com/prometheus/common/model"
23
+ "github.com/prometheus/prometheus/model/labels"
24
24
25
25
"github.com/grafana/loki/v3/pkg/analytics"
26
26
"github.com/grafana/loki/v3/pkg/compactor/deletion"
@@ -406,13 +406,10 @@ func (c *Compactor) initDeletes(objectClient client.ObjectClient, indexUpdatePro
406
406
407
407
c .DeleteRequestsGRPCHandler = deletion .NewGRPCRequestHandler (c .deleteRequestsStore , limits )
408
408
409
- c .deleteRequestsManager = deletion .NewDeleteRequestsManager (
410
- c .deleteRequestsStore ,
411
- c .cfg .DeleteRequestCancelPeriod ,
412
- c .cfg .DeleteBatchSize ,
413
- limits ,
414
- r ,
415
- )
409
+ c .deleteRequestsManager , err = deletion .NewDeleteRequestsManager (deletionWorkDir , c .deleteRequestsStore , c .cfg .DeleteRequestCancelPeriod , c .cfg .DeleteBatchSize , limits , r )
410
+ if err != nil {
411
+ return err
412
+ }
416
413
417
414
c .expirationChecker = newExpirationChecker (retention .NewExpirationChecker (limits ), c .deleteRequestsManager )
418
415
return nil
@@ -853,12 +850,12 @@ func newExpirationChecker(retentionExpiryChecker, deletionExpiryChecker retentio
853
850
return & expirationChecker {retentionExpiryChecker , deletionExpiryChecker }
854
851
}
855
852
856
- func (e * expirationChecker ) Expired (ref retention.ChunkEntry , now model.Time ) (bool , filter.Func ) {
857
- if expired , nonDeletedIntervals := e .retentionExpiryChecker .Expired (ref , now ); expired {
853
+ func (e * expirationChecker ) Expired (userID [] byte , chk retention.Chunk , lbls labels. Labels , seriesID [] byte , tableName string , now model.Time ) (bool , filter.Func ) {
854
+ if expired , nonDeletedIntervals := e .retentionExpiryChecker .Expired (userID , chk , lbls , seriesID , tableName , now ); expired {
858
855
return expired , nonDeletedIntervals
859
856
}
860
857
861
- return e .deletionExpiryChecker .Expired (ref , now )
858
+ return e .deletionExpiryChecker .Expired (userID , chk , lbls , seriesID , tableName , now )
862
859
}
863
860
864
861
func (e * expirationChecker ) MarkPhaseStarted () {
@@ -885,8 +882,12 @@ func (e *expirationChecker) IntervalMayHaveExpiredChunks(interval model.Interval
885
882
return e .retentionExpiryChecker .IntervalMayHaveExpiredChunks (interval , userID ) || e .deletionExpiryChecker .IntervalMayHaveExpiredChunks (interval , userID )
886
883
}
887
884
888
- func (e * expirationChecker ) DropFromIndex (ref retention.ChunkEntry , tableEndTime model.Time , now model.Time ) bool {
889
- return e .retentionExpiryChecker .DropFromIndex (ref , tableEndTime , now ) || e .deletionExpiryChecker .DropFromIndex (ref , tableEndTime , now )
885
+ func (e * expirationChecker ) DropFromIndex (userID []byte , chk retention.Chunk , labels labels.Labels , tableEndTime model.Time , now model.Time ) bool {
886
+ return e .retentionExpiryChecker .DropFromIndex (userID , chk , labels , tableEndTime , now ) || e .deletionExpiryChecker .DropFromIndex (userID , chk , labels , tableEndTime , now )
887
+ }
888
+
889
+ func (e * expirationChecker ) CanSkipSeries (userID []byte , lbls labels.Labels , seriesID []byte , seriesStart model.Time , tableName string , now model.Time ) bool {
890
+ return e .retentionExpiryChecker .CanSkipSeries (userID , lbls , seriesID , seriesStart , tableName , now ) && e .deletionExpiryChecker .CanSkipSeries (userID , lbls , seriesID , seriesStart , tableName , now )
890
891
}
891
892
892
893
func (c * Compactor ) OnRingInstanceRegister (_ * ring.BasicLifecycler , ringDesc ring.Desc , instanceExists bool , _ string , instanceDesc ring.InstanceDesc ) (ring.InstanceState , ring.Tokens ) {
0 commit comments