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

Function newInstance

modules/generator/instance.go:95–131  ·  view source on GitHub ↗
(cfg *Config, instanceID string, overrides metricsGeneratorOverrides, wal storage.Storage, logger log.Logger)

Source from the content-addressed store, hash-verified

93}
94
95func newInstance(cfg *Config, instanceID string, overrides metricsGeneratorOverrides, wal storage.Storage, logger log.Logger) (*instance, error) {
96 logger = log.With(logger, "tenant", instanceID)
97
98 limitLogger := tempo_log.NewRateLimitedLogger(1, level.Warn(logger))
99 var limiter registry.Limiter
100 switch cfg.LimiterType {
101 case LimiterTypeSeries:
102 limiter = localserieslimiter.New(overrides.MetricsGeneratorMaxActiveSeries, instanceID, limitLogger)
103 case LimiterTypeEntity:
104 limiter = localentitylimiter.New(overrides.MetricsGeneratorMaxActiveEntities, instanceID, limitLogger)
105 default:
106 return nil, fmt.Errorf("invalid limiter type: %s", cfg.LimiterType)
107 }
108
109 i := &instance{
110 cfg: cfg,
111 instanceID: instanceID,
112 overrides: overrides,
113
114 registry: registry.New(&cfg.Registry, overrides, instanceID, wal, logger, limiter),
115 wal: wal,
116
117 processors: make(map[string]processor.Processor),
118
119 shutdownCh: make(chan struct{}, 1),
120
121 logger: logger,
122 }
123
124 err := i.updateProcessors()
125 if err != nil {
126 return nil, fmt.Errorf("could not initialize processors: %w", err)
127 }
128 go i.watchOverrides()
129
130 return i, nil
131}
132
133func (i *instance) watchOverrides() {
134 reloadPeriod := 10 * time.Second

Callers 6

createInstanceMethod · 0.70
BenchmarkPushSpansFunction · 0.70
BenchmarkCollectFunction · 0.70

Calls 5

updateProcessorsMethod · 0.95
watchOverridesMethod · 0.95
NewFunction · 0.92
NewFunction · 0.92
NewFunction · 0.92

Tested by 5

BenchmarkPushSpansFunction · 0.56
BenchmarkCollectFunction · 0.56