mirror of https://github.com/prometheus/prometheus
Merge pull request #13393 from vinted/disable_overlapping_compaction
commit
4fbd406a36
|
@ -83,6 +83,7 @@ type LeveledCompactor struct {
|
|||
maxBlockChunkSegmentSize int64
|
||||
mergeFunc storage.VerticalChunkSeriesMergeFunc
|
||||
postingsEncoder index.PostingsEncoder
|
||||
enableOverlappingCompaction bool
|
||||
}
|
||||
|
||||
type CompactorMetrics struct {
|
||||
|
@ -153,18 +154,23 @@ type LeveledCompactorOptions struct {
|
|||
MaxBlockChunkSegmentSize int64
|
||||
// MergeFunc is used for merging series together in vertical compaction. By default storage.NewCompactingChunkSeriesMerger(storage.ChainedSeriesMerge) is used.
|
||||
MergeFunc storage.VerticalChunkSeriesMergeFunc
|
||||
// EnableOverlappingCompaction enables compaction of overlapping blocks. In Prometheus it is always enabled.
|
||||
// It is useful for downstream projects like Mimir, Cortex, Thanos where they have a separate component that does compaction.
|
||||
EnableOverlappingCompaction bool
|
||||
}
|
||||
|
||||
func NewLeveledCompactorWithChunkSize(ctx context.Context, r prometheus.Registerer, l log.Logger, ranges []int64, pool chunkenc.Pool, maxBlockChunkSegmentSize int64, mergeFunc storage.VerticalChunkSeriesMergeFunc) (*LeveledCompactor, error) {
|
||||
return NewLeveledCompactorWithOptions(ctx, r, l, ranges, pool, LeveledCompactorOptions{
|
||||
MaxBlockChunkSegmentSize: maxBlockChunkSegmentSize,
|
||||
MergeFunc: mergeFunc,
|
||||
EnableOverlappingCompaction: true,
|
||||
})
|
||||
}
|
||||
|
||||
func NewLeveledCompactor(ctx context.Context, r prometheus.Registerer, l log.Logger, ranges []int64, pool chunkenc.Pool, mergeFunc storage.VerticalChunkSeriesMergeFunc) (*LeveledCompactor, error) {
|
||||
return NewLeveledCompactorWithOptions(ctx, r, l, ranges, pool, LeveledCompactorOptions{
|
||||
MergeFunc: mergeFunc,
|
||||
EnableOverlappingCompaction: true,
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -199,6 +205,7 @@ func NewLeveledCompactorWithOptions(ctx context.Context, r prometheus.Registerer
|
|||
maxBlockChunkSegmentSize: maxBlockChunkSegmentSize,
|
||||
mergeFunc: mergeFunc,
|
||||
postingsEncoder: pe,
|
||||
enableOverlappingCompaction: opts.EnableOverlappingCompaction,
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
@ -317,6 +324,9 @@ func (c *LeveledCompactor) selectDirs(ds []dirMeta) []dirMeta {
|
|||
// selectOverlappingDirs returns all dirs with overlapping time ranges.
|
||||
// It expects sorted input by mint and returns the overlapping dirs in the same order as received.
|
||||
func (c *LeveledCompactor) selectOverlappingDirs(ds []dirMeta) []string {
|
||||
if !c.enableOverlappingCompaction {
|
||||
return nil
|
||||
}
|
||||
if len(ds) < 2 {
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue