| 154 | } |
| 155 | |
| 156 | func New( |
| 157 | cfg Config, |
| 158 | logger log.Logger, |
| 159 | partitionRing ring.PartitionRingReader, |
| 160 | overrides Overrides, |
| 161 | store storage.Store, |
| 162 | ) (*BlockBuilder, error) { |
| 163 | if err := cfg.Validate(); err != nil { |
| 164 | return nil, err |
| 165 | } |
| 166 | |
| 167 | b := &BlockBuilder{ |
| 168 | logger: logger, |
| 169 | cfg: cfg, |
| 170 | partitionRing: partitionRing, |
| 171 | decoder: ingest.NewDecoder(), |
| 172 | overrides: overrides, |
| 173 | reader: store, |
| 174 | writer: store, |
| 175 | compactor: store, |
| 176 | consumeStopped: make(chan struct{}), |
| 177 | } |
| 178 | |
| 179 | b.Service = services.NewBasicService(b.starting, b.running, b.stopping) |
| 180 | return b, nil |
| 181 | } |
| 182 | |
| 183 | func (b *BlockBuilder) starting(ctx context.Context) (err error) { |
| 184 | level.Info(b.logger).Log("msg", "block builder starting") |