MCPcopy Index your code
hub / github.com/cortexproject/cortex / starting

Method starting

pkg/compactor/compactor.go:633–769  ·  view source on GitHub ↗

Start the compactor.

(ctx context.Context)

Source from the content-addressed store, hash-verified

631
632// Start the compactor.
633func (c *Compactor) starting(ctx context.Context) error {
634 begin := time.Now()
635 defer func() {
636 c.CompactorStartDurationSeconds.Set(time.Since(begin).Seconds())
637 level.Info(c.logger).Log("msg", "compactor started", "duration", time.Since(begin), "duration_ms", time.Since(begin).Milliseconds())
638 }()
639
640 var err error
641
642 // Create bucket client.
643 c.bucketClient, err = c.bucketClientFactory(ctx)
644 if err != nil {
645 return errors.Wrap(err, "failed to create bucket client")
646 }
647
648 // Create blocks compactor dependencies.
649 c.blocksCompactor, c.blocksPlannerFactory, err = c.blocksCompactorFactory(ctx, c.compactorCfg, c.logger, c.registerer)
650 if err != nil {
651 return errors.Wrap(err, "failed to initialize compactor dependencies")
652 }
653
654 // Wrap the bucket client to write block deletion marks in the global location too.
655 c.bucketClient = bucketindex.BucketWithGlobalMarkers(c.bucketClient)
656
657 cleanerBucketClient := c.bucketClient
658 if c.compactorCfg.CleanerCachingBucketEnabled {
659 cleanerBucketClient, err = cortex_tsdb.CreateCachingBucketForCompactor(c.storageCfg.BucketStore.MetadataCache, true, c.bucketClient, c.logger, extprom.WrapRegistererWith(prometheus.Labels{"component": "cleaner"}, c.registerer))
660 if err != nil {
661 return errors.Wrap(err, "create caching bucket for cleaner")
662 }
663 }
664
665 if c.compactorCfg.CachingBucketEnabled {
666 c.bucketClient, err = cortex_tsdb.CreateCachingBucketForCompactor(c.storageCfg.BucketStore.MetadataCache, false, c.bucketClient, c.logger, extprom.WrapRegistererWith(prometheus.Labels{"component": "compactor"}, c.registerer))
667 if err != nil {
668 return errors.Wrap(err, "create caching bucket for compactor")
669 }
670 }
671
672 // Create the users scanner.
673 c.usersScanner, err = users.NewScanner(c.storageCfg.UsersScanner, c.bucketClient, c.logger, extprom.WrapRegistererWith(prometheus.Labels{"component": "compactor"}, c.registerer))
674 if err != nil {
675 return errors.Wrap(err, "failed to create users scanner")
676 }
677
678 var cleanerRingLifecyclerID = "default-cleaner"
679 // Initialize the compactors ring if sharding is enabled.
680 if c.compactorCfg.ShardingEnabled {
681 lifecyclerCfg := c.compactorCfg.ShardingRing.ToLifecyclerConfig()
682 var delegate ring.LifecyclerDelegate
683 delegate = &ring.DefaultLifecyclerDelegate{}
684 if c.compactorCfg.ShardingRing.AutoForgetDelay > 0 {
685 delegate = ring.NewLifecyclerAutoForgetDelegate(c.compactorCfg.ShardingRing.AutoForgetDelay, delegate, c.logger)
686 }
687 c.ringLifecycler, err = ring.NewLifecyclerWithDelegate(lifecyclerCfg, ring.NewNoopFlushTransferer(), "compactor", ringKey, true, false, c.logger, prometheus.WrapRegistererWithPrefix("cortex_", c.registerer), delegate)
688 if err != nil {
689 return errors.Wrap(err, "unable to initialize compactor ring lifecycler")
690 }

Callers

nothing calls this directly

Calls 15

BucketWithGlobalMarkersFunction · 0.92
NewScannerFunction · 0.92
NewNoopFlushTransfererFunction · 0.92
NewFunction · 0.92
NewManagerFunction · 0.92
NewFailureWatcherFunction · 0.92
WaitInstanceStateFunction · 0.92
WaitRingStabilityFunction · 0.92
NewShardedScannerFunction · 0.92

Tested by

no test coverage detected