| 168 | var _ Interface = (*runtimeConfigOverridesManager)(nil) |
| 169 | |
| 170 | func newRuntimeConfigOverrides(cfg Config, validator Validator, registerer prometheus.Registerer) (Service, error) { |
| 171 | var manager *runtimeconfig.Manager |
| 172 | subservices := []services.Service(nil) |
| 173 | |
| 174 | if cfg.PerTenantOverrideConfig != "" { |
| 175 | runtimeCfg := runtimeconfig.Config{ |
| 176 | LoadPath: []string{cfg.PerTenantOverrideConfig}, |
| 177 | ReloadPeriod: time.Duration(cfg.PerTenantOverridePeriod), |
| 178 | Loader: loadPerTenantOverrides(validator, cfg.ConfigType, cfg.ExpandEnv, cfg.EnableLegacyOverrides), |
| 179 | } |
| 180 | runtimeCfgMgr, err := runtimeconfig.New(runtimeCfg, "overrides", prometheus.WrapRegistererWithPrefix("tempo_", registerer), log.Logger) |
| 181 | if err != nil { |
| 182 | return nil, fmt.Errorf("failed to create runtime config manager: %w", err) |
| 183 | } |
| 184 | manager = runtimeCfgMgr |
| 185 | subservices = append(subservices, runtimeCfgMgr) |
| 186 | } |
| 187 | |
| 188 | o := &runtimeConfigOverridesManager{ |
| 189 | runtimeConfigMgr: manager, |
| 190 | defaultLimits: &cfg.Defaults, |
| 191 | } |
| 192 | |
| 193 | if len(subservices) > 0 { |
| 194 | var err error |
| 195 | o.subservices, err = services.NewManager(subservices...) |
| 196 | if err != nil { |
| 197 | return nil, fmt.Errorf("failed to create subservices: %w", err) |
| 198 | } |
| 199 | o.subservicesWatcher = services.NewFailureWatcher() |
| 200 | o.subservicesWatcher.WatchManager(o.subservices) |
| 201 | } |
| 202 | |
| 203 | o.Service = services.NewBasicService(o.starting, o.running, o.stopping) |
| 204 | |
| 205 | return o, nil |
| 206 | } |
| 207 | |
| 208 | func (o *runtimeConfigOverridesManager) starting(ctx context.Context) error { |
| 209 | if o.subservices != nil { |