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

Function New

tempodb/tempodb.go:174–241  ·  view source on GitHub ↗

New creates a new tempodb

(cfg *Config, cacheProvider cache.Provider, logger gkLog.Logger)

Source from the content-addressed store, hash-verified

172
173// New creates a new tempodb
174func New(cfg *Config, cacheProvider cache.Provider, logger gkLog.Logger) (Reader, Writer, Compactor, error) {
175 var rawR backend.RawReader
176 var rawW backend.RawWriter
177 var c backend.Compactor
178
179 err := validateConfig(cfg)
180 if err != nil {
181 return nil, nil, nil, fmt.Errorf("invalid config while creating tempodb: %w", err)
182 }
183
184 switch cfg.Backend {
185 case backend.Local:
186 rawR, rawW, c, err = local.New(cfg.Local)
187 case backend.GCS:
188 rawR, rawW, c, err = gcs.New(cfg.GCS)
189 case backend.S3:
190 rawR, rawW, c, err = s3.New(cfg.S3)
191 case backend.Azure:
192 rawR, rawW, c, err = azure.New(cfg.Azure)
193 default:
194 err = fmt.Errorf("unknown backend %s", cfg.Backend)
195 }
196
197 if err != nil {
198 return nil, nil, nil, err
199 }
200
201 // build a caching layer if we have a provider
202 if cacheProvider != nil {
203 legacyCache, roles, err := createLegacyCache(cfg, logger)
204 if err != nil {
205 return nil, nil, nil, err
206 }
207
208 // inject legacy cache into the cache provider for the roles
209 for _, role := range roles {
210 err = cacheProvider.AddCache(role, legacyCache)
211 if err != nil {
212 return nil, nil, nil, fmt.Errorf("error adding legacy cache to provider: %w", err)
213 }
214 }
215
216 rawR, rawW, err = backend_cache.NewCache(&cfg.BloomCacheCfg, rawR, rawW, cacheProvider, logger)
217 if err != nil {
218 return nil, nil, nil, err
219 }
220 }
221
222 r := backend.NewReader(rawR)
223 w := backend.NewWriter(rawW)
224 rw := &readerWriter{
225 c: c,
226 r: r,
227 w: w,
228 cfg: cfg,
229 logger: logger,
230 pool: pool.NewPool(cfg.Pool),
231 blocklist: blocklist.New(),

Calls 12

NewFunction · 0.92
NewFunction · 0.92
NewFunction · 0.92
NewFunction · 0.92
NewReaderFunction · 0.92
NewWriterFunction · 0.92
NewPoolFunction · 0.92
NewFunction · 0.92
NewFunction · 0.92
validateConfigFunction · 0.85
createLegacyCacheFunction · 0.85
AddCacheMethod · 0.65