Skip to content

Commit 09db78e

Browse files
committed
native support for mulit-delete
1 parent 8280b44 commit 09db78e

6 files changed

Lines changed: 54 additions & 0 deletions

File tree

compact/deletes.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,12 @@ func Deletes(ctx context.Context, l klevdb.Log, before time.Time) (map[int64]str
7676
}
7777
return l.Delete(offsets)
7878
}
79+
80+
// DeletesMulti is similar to Deletes, but will try to remove messages from multiple segments
81+
func DeletesMulti(ctx context.Context, l klevdb.Log, before time.Time, backoff klevdb.DeleteMultiBackoff) (map[int64]struct{}, int64, error) {
82+
offsets, err := FindDeletes(ctx, l, before)
83+
if err != nil {
84+
return nil, 0, err
85+
}
86+
return klevdb.DeleteMulti(ctx, l, offsets, backoff)
87+
}

compact/updates.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,3 +67,12 @@ func Updates(ctx context.Context, l klevdb.Log, before time.Time) (map[int64]str
6767
}
6868
return l.Delete(offsets)
6969
}
70+
71+
// UpdatesMulti is similar to Updates, but will try to remove messages from multiple segments
72+
func UpdatesMulti(ctx context.Context, l klevdb.Log, before time.Time, backoff klevdb.DeleteMultiBackoff) (map[int64]struct{}, int64, error) {
73+
offsets, err := FindUpdates(ctx, l, before)
74+
if err != nil {
75+
return nil, 0, err
76+
}
77+
return klevdb.DeleteMulti(ctx, l, offsets, backoff)
78+
}

trim/age.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,3 +75,12 @@ func ByAge(ctx context.Context, l klevdb.Log, before time.Time) (map[int64]struc
7575
}
7676
return l.Delete(offsets)
7777
}
78+
79+
// ByAgeMulti is similar to ByAge, but will try to remove messages from multiple segments
80+
func ByAgeMulti(ctx context.Context, l klevdb.Log, before time.Time, backoff klevdb.DeleteMultiBackoff) (map[int64]struct{}, int64, error) {
81+
offsets, err := FindByAge(ctx, l, before)
82+
if err != nil {
83+
return nil, 0, err
84+
}
85+
return klevdb.DeleteMulti(ctx, l, offsets, backoff)
86+
}

trim/count.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,12 @@ func ByCount(ctx context.Context, l klevdb.Log, max int) (map[int64]struct{}, in
6464
}
6565
return l.Delete(offsets)
6666
}
67+
68+
// ByCountMulti is similar to ByCount, but will try to remove messages from multiple segments
69+
func ByCountMulti(ctx context.Context, l klevdb.Log, max int, backoff klevdb.DeleteMultiBackoff) (map[int64]struct{}, int64, error) {
70+
offsets, err := FindByCount(ctx, l, max)
71+
if err != nil {
72+
return nil, 0, err
73+
}
74+
return klevdb.DeleteMulti(ctx, l, offsets, backoff)
75+
}

trim/offset.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,12 @@ func ByOffset(ctx context.Context, l klevdb.Log, before int64) (map[int64]struct
6161
}
6262
return l.Delete(offsets)
6363
}
64+
65+
// ByOffsetMulti is similar to ByOffset, but will try to remove messages from multiple segments
66+
func ByOffsetMulti(ctx context.Context, l klevdb.Log, before int64, backoff klevdb.DeleteMultiBackoff) (map[int64]struct{}, int64, error) {
67+
offsets, err := FindByOffset(ctx, l, before)
68+
if err != nil {
69+
return nil, 0, err
70+
}
71+
return klevdb.DeleteMulti(ctx, l, offsets, backoff)
72+
}

trim/size.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,12 @@ func BySize(ctx context.Context, l klevdb.Log, sz int64) (map[int64]struct{}, in
6363
}
6464
return l.Delete(offsets)
6565
}
66+
67+
// BySizeMulti is similar to BySize, but will try to remove messages from multiple segments
68+
func BySizeMulti(ctx context.Context, l klevdb.Log, sz int64, backoff klevdb.DeleteMultiBackoff) (map[int64]struct{}, int64, error) {
69+
offsets, err := FindBySize(ctx, l, sz)
70+
if err != nil {
71+
return nil, 0, err
72+
}
73+
return klevdb.DeleteMulti(ctx, l, offsets, backoff)
74+
}

0 commit comments

Comments
 (0)