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

Function NewProvider

modules/cache/cache.go:29–67  ·  view source on GitHub ↗

NewProvider creates a new cache provider with the given config.

(cfg *Config, logger log.Logger)

Source from the content-addressed store, hash-verified

27
28// NewProvider creates a new cache provider with the given config.
29func NewProvider(cfg *Config, logger log.Logger) (cache.Provider, error) {
30 p := &provider{
31 caches: map[cache.Role]cache.Cache{},
32 }
33
34 err := cfg.Validate()
35 if err != nil {
36 return nil, fmt.Errorf("invalid cache config: %w", err)
37 }
38
39 statMemcached.Set(0)
40 statRedis.Set(0)
41
42 for _, cacheCfg := range cfg.Caches {
43 var c cache.Cache
44
45 if cacheCfg.MemcachedConfig != nil {
46 level.Info(logger).Log("msg", "configuring memcached client", "roles", cacheCfg.Name())
47
48 statMemcached.Add(1)
49 c = memcached.NewClient(cacheCfg.MemcachedConfig, cfg.Background, cacheCfg.Name(), logger)
50 }
51
52 if cacheCfg.RedisConfig != nil {
53 level.Info(logger).Log("msg", "configuring redis client", "roles", cacheCfg.Name())
54
55 statRedis.Add(1)
56 c = redis.NewClient(cacheCfg.RedisConfig, cfg.Background, cacheCfg.Name(), logger)
57 }
58
59 // add this cache for all claimed roles
60 for _, role := range cacheCfg.Role {
61 p.caches[role] = c
62 }
63 }
64
65 p.Service = services.NewIdleService(p.starting, p.stopping)
66 return p, nil
67}
68
69// CacheFor is used to retrieve a cache for a given role.
70func (p *provider) CacheFor(role cache.Role) cache.Cache {

Callers 2

initCacheProviderMethod · 0.92
TestMaxItemSizeFunction · 0.85

Calls 7

NewClientFunction · 0.92
NewClientFunction · 0.92
ValidateMethod · 0.65
SetMethod · 0.65
LogMethod · 0.65
NameMethod · 0.65
AddMethod · 0.65

Tested by 1

TestMaxItemSizeFunction · 0.68