MCPcopy
hub / github.com/grafana/tempo / New

Function New

modules/backendscheduler/backendscheduler.go:69–122  ·  view source on GitHub ↗

New creates a new BackendScheduler

(cfg Config, store storage.Store, overrides overrides.Interface, reader backend.RawReader, writer backend.RawWriter)

Source from the content-addressed store, hash-verified

67
68// New creates a new BackendScheduler
69func New(cfg Config, store storage.Store, overrides overrides.Interface, reader backend.RawReader, writer backend.RawWriter) (*BackendScheduler, error) {
70 err := ValidateConfig(&cfg)
71 if err != nil {
72 return nil, fmt.Errorf("invalid config: %w", err)
73 }
74
75 s := &BackendScheduler{
76 cfg: cfg,
77 store: store,
78 overrides: overrides,
79 work: work.New(cfg.Work),
80 reader: reader,
81 writer: writer,
82 mergedJobs: make(chan *work.Job, 1),
83 }
84
85 // Initialize providers
86 s.providers = []struct {
87 provider provider.Provider
88 jobs <-chan *work.Job
89 }{
90 {
91 provider: provider.NewCompactionProvider(
92 s.cfg.ProviderConfig.Compaction,
93 log.Logger,
94 s.store,
95 s.overrides,
96 s.work,
97 ),
98 jobs: nil, // Will be set in running
99 },
100 {
101 provider: provider.NewRetentionProvider(
102 s.cfg.ProviderConfig.Retention,
103 log.Logger,
104 s.store,
105 s.overrides,
106 s.work,
107 ),
108 jobs: nil, // Will be set in running
109 },
110 {
111 provider: provider.NewRedactionProvider(
112 s.cfg.ProviderConfig.Redaction,
113 log.Logger,
114 s.work,
115 ),
116 jobs: nil, // Will be set in running
117 },
118 }
119
120 s.Service = services.NewBasicService(s.starting, s.running, s.stopping)
121 return s, nil
122}
123
124func (s *BackendScheduler) starting(ctx context.Context) error {
125 level.Info(log.Logger).Log("msg", "backend scheduler starting")

Callers 1

initBackendSchedulerMethod · 0.92

Calls 5

NewFunction · 0.92
NewCompactionProviderFunction · 0.92
NewRetentionProviderFunction · 0.92
NewRedactionProviderFunction · 0.92
ValidateConfigFunction · 0.70

Tested by

no test coverage detected