Skip to content

Commit 88c6711

Browse files
authored
fix: Track bytes discarded by ingester. (#12981)
**What this PR does / why we need it**: Only the distributor was tracking discarded bytes. The ingester was missing the tracker and calls. **Checklist** - [ ] Reviewed the [`CONTRIBUTING.md`](https://github.com/grafana/loki/blob/main/CONTRIBUTING.md) guide (**required**) - [ ] Documentation added - [x] Tests updated - [x] Title matches the required conventional commits format, see [here](https://www.conventionalcommits.org/en/v1.0.0/) - **Note** that Promtail is considered to be feature complete, and future development for logs collection will be in [Grafana Alloy](https://github.com/grafana/alloy). As such, `feat` PRs are unlikely to be accepted unless a case can be made for the feature actually being a bug fix to existing behavior. - [ ] Changes that require user attention or interaction to upgrade are documented in `docs/sources/setup/upgrade/_index.md` - [ ] For Helm chart changes bump the Helm chart version in `production/helm/loki/Chart.yaml` and update `production/helm/loki/CHANGELOG.md` and `production/helm/loki/README.md`. [Example PR](d10549e) - [ ] If the change is deprecating or removing a configuration option, update the `deprecated-config.yaml` and `deleted-config.yaml` files respectively in the `tools/deprecated-config-checker` directory. [Example PR](0d4416a)
1 parent 87288d3 commit 88c6711

12 files changed

+104
-64
lines changed

pkg/ingester/checkpoint_test.go

+13-13
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ func TestIngesterWAL(t *testing.T) {
7070
}
7171
}
7272

73-
i, err := New(ingesterConfig, client.Config{}, newStore(), limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, gokit_log.NewNopLogger())
73+
i, err := New(ingesterConfig, client.Config{}, newStore(), limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, gokit_log.NewNopLogger(), nil)
7474
require.NoError(t, err)
7575
require.Nil(t, services.StartAndAwaitRunning(context.Background(), i))
7676
defer services.StopAndAwaitTerminated(context.Background(), i) //nolint:errcheck
@@ -113,7 +113,7 @@ func TestIngesterWAL(t *testing.T) {
113113
expectCheckpoint(t, walDir, false, time.Second)
114114

115115
// restart the ingester
116-
i, err = New(ingesterConfig, client.Config{}, newStore(), limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, gokit_log.NewNopLogger())
116+
i, err = New(ingesterConfig, client.Config{}, newStore(), limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, gokit_log.NewNopLogger(), nil)
117117
require.NoError(t, err)
118118
defer services.StopAndAwaitTerminated(context.Background(), i) //nolint:errcheck
119119
require.Nil(t, services.StartAndAwaitRunning(context.Background(), i))
@@ -127,7 +127,7 @@ func TestIngesterWAL(t *testing.T) {
127127
require.Nil(t, services.StopAndAwaitTerminated(context.Background(), i))
128128

129129
// restart the ingester
130-
i, err = New(ingesterConfig, client.Config{}, newStore(), limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, gokit_log.NewNopLogger())
130+
i, err = New(ingesterConfig, client.Config{}, newStore(), limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, gokit_log.NewNopLogger(), nil)
131131
require.NoError(t, err)
132132
defer services.StopAndAwaitTerminated(context.Background(), i) //nolint:errcheck
133133
require.Nil(t, services.StartAndAwaitRunning(context.Background(), i))
@@ -150,7 +150,7 @@ func TestIngesterWALIgnoresStreamLimits(t *testing.T) {
150150
}
151151
}
152152

153-
i, err := New(ingesterConfig, client.Config{}, newStore(), limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, gokit_log.NewNopLogger())
153+
i, err := New(ingesterConfig, client.Config{}, newStore(), limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, gokit_log.NewNopLogger(), nil)
154154
require.NoError(t, err)
155155
require.Nil(t, services.StartAndAwaitRunning(context.Background(), i))
156156
defer services.StopAndAwaitTerminated(context.Background(), i) //nolint:errcheck
@@ -196,7 +196,7 @@ func TestIngesterWALIgnoresStreamLimits(t *testing.T) {
196196
require.NoError(t, err)
197197

198198
// restart the ingester
199-
i, err = New(ingesterConfig, client.Config{}, newStore(), limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, gokit_log.NewNopLogger())
199+
i, err = New(ingesterConfig, client.Config{}, newStore(), limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, gokit_log.NewNopLogger(), nil)
200200
require.NoError(t, err)
201201
defer services.StopAndAwaitTerminated(context.Background(), i) //nolint:errcheck
202202
require.Nil(t, services.StartAndAwaitRunning(context.Background(), i))
@@ -253,7 +253,7 @@ func TestIngesterWALBackpressureSegments(t *testing.T) {
253253
}
254254
}
255255

256-
i, err := New(ingesterConfig, client.Config{}, newStore(), limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, gokit_log.NewNopLogger())
256+
i, err := New(ingesterConfig, client.Config{}, newStore(), limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, gokit_log.NewNopLogger(), nil)
257257
require.NoError(t, err)
258258
require.Nil(t, services.StartAndAwaitRunning(context.Background(), i))
259259
defer services.StopAndAwaitTerminated(context.Background(), i) //nolint:errcheck
@@ -274,7 +274,7 @@ func TestIngesterWALBackpressureSegments(t *testing.T) {
274274
expectCheckpoint(t, walDir, false, time.Second)
275275

276276
// restart the ingester, ensuring we replayed from WAL.
277-
i, err = New(ingesterConfig, client.Config{}, newStore(), limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, gokit_log.NewNopLogger())
277+
i, err = New(ingesterConfig, client.Config{}, newStore(), limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, gokit_log.NewNopLogger(), nil)
278278
require.NoError(t, err)
279279
defer services.StopAndAwaitTerminated(context.Background(), i) //nolint:errcheck
280280
require.Nil(t, services.StartAndAwaitRunning(context.Background(), i))
@@ -295,7 +295,7 @@ func TestIngesterWALBackpressureCheckpoint(t *testing.T) {
295295
}
296296
}
297297

298-
i, err := New(ingesterConfig, client.Config{}, newStore(), limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, gokit_log.NewNopLogger())
298+
i, err := New(ingesterConfig, client.Config{}, newStore(), limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, gokit_log.NewNopLogger(), nil)
299299
require.NoError(t, err)
300300
require.Nil(t, services.StartAndAwaitRunning(context.Background(), i))
301301
defer services.StopAndAwaitTerminated(context.Background(), i) //nolint:errcheck
@@ -316,7 +316,7 @@ func TestIngesterWALBackpressureCheckpoint(t *testing.T) {
316316
require.Nil(t, services.StopAndAwaitTerminated(context.Background(), i))
317317

318318
// restart the ingester, ensuring we can replay from the checkpoint as well.
319-
i, err = New(ingesterConfig, client.Config{}, newStore(), limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, gokit_log.NewNopLogger())
319+
i, err = New(ingesterConfig, client.Config{}, newStore(), limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, gokit_log.NewNopLogger(), nil)
320320
require.NoError(t, err)
321321
defer services.StopAndAwaitTerminated(context.Background(), i) //nolint:errcheck
322322
require.Nil(t, services.StartAndAwaitRunning(context.Background(), i))
@@ -452,7 +452,7 @@ func Test_SeriesIterator(t *testing.T) {
452452
limiter := NewLimiter(limits, NilMetrics, &ringCountMock{count: 1}, 1)
453453

454454
for i := 0; i < 3; i++ {
455-
inst, err := newInstance(defaultConfig(), defaultPeriodConfigs, fmt.Sprintf("%d", i), limiter, runtime.DefaultTenantConfigs(), noopWAL{}, NilMetrics, nil, nil, nil, nil, NewStreamRateCalculator(), nil)
455+
inst, err := newInstance(defaultConfig(), defaultPeriodConfigs, fmt.Sprintf("%d", i), limiter, runtime.DefaultTenantConfigs(), noopWAL{}, NilMetrics, nil, nil, nil, nil, NewStreamRateCalculator(), nil, nil)
456456
require.Nil(t, err)
457457
require.NoError(t, inst.Push(context.Background(), &logproto.PushRequest{Streams: []logproto.Stream{stream1}}))
458458
require.NoError(t, inst.Push(context.Background(), &logproto.PushRequest{Streams: []logproto.Stream{stream2}}))
@@ -499,7 +499,7 @@ func Benchmark_SeriesIterator(b *testing.B) {
499499
limiter := NewLimiter(limits, NilMetrics, &ringCountMock{count: 1}, 1)
500500

501501
for i := range instances {
502-
inst, _ := newInstance(defaultConfig(), defaultPeriodConfigs, fmt.Sprintf("instance %d", i), limiter, runtime.DefaultTenantConfigs(), noopWAL{}, NilMetrics, nil, nil, nil, nil, NewStreamRateCalculator(), nil)
502+
inst, _ := newInstance(defaultConfig(), defaultPeriodConfigs, fmt.Sprintf("instance %d", i), limiter, runtime.DefaultTenantConfigs(), noopWAL{}, NilMetrics, nil, nil, nil, nil, NewStreamRateCalculator(), nil, nil)
503503

504504
require.NoError(b,
505505
inst.Push(context.Background(), &logproto.PushRequest{
@@ -591,7 +591,7 @@ func TestIngesterWALReplaysUnorderedToOrdered(t *testing.T) {
591591
}
592592
}
593593

594-
i, err := New(ingesterConfig, client.Config{}, newStore(), limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, gokit_log.NewNopLogger())
594+
i, err := New(ingesterConfig, client.Config{}, newStore(), limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, gokit_log.NewNopLogger(), nil)
595595
require.NoError(t, err)
596596
require.Nil(t, services.StartAndAwaitRunning(context.Background(), i))
597597
defer services.StopAndAwaitTerminated(context.Background(), i) //nolint:errcheck
@@ -663,7 +663,7 @@ func TestIngesterWALReplaysUnorderedToOrdered(t *testing.T) {
663663
require.NoError(t, err)
664664

665665
// restart the ingester
666-
i, err = New(ingesterConfig, client.Config{}, newStore(), limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, gokit_log.NewNopLogger())
666+
i, err = New(ingesterConfig, client.Config{}, newStore(), limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, gokit_log.NewNopLogger(), nil)
667667
require.NoError(t, err)
668668
defer services.StopAndAwaitTerminated(context.Background(), i) //nolint:errcheck
669669
require.Nil(t, services.StartAndAwaitRunning(context.Background(), i))

pkg/ingester/flush_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ func newTestStore(t require.TestingT, cfg Config, walOverride WAL) (*testStore,
278278
limits, err := validation.NewOverrides(defaultLimitsTestConfig(), nil)
279279
require.NoError(t, err)
280280

281-
ing, err := New(cfg, client.Config{}, store, limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, gokitlog.NewNopLogger())
281+
ing, err := New(cfg, client.Config{}, store, limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, gokitlog.NewNopLogger(), nil)
282282
require.NoError(t, err)
283283
require.NoError(t, services.StartAndAwaitRunning(context.Background(), ing))
284284

pkg/ingester/ingester.go

+6-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"sync"
1313
"time"
1414

15+
"github.com/grafana/loki/v3/pkg/loghttp/push"
1516
"github.com/grafana/loki/v3/pkg/logqlmodel/metadata"
1617
"github.com/grafana/loki/v3/pkg/storage/types"
1718

@@ -242,10 +243,12 @@ type Ingester struct {
242243
streamRateCalculator *StreamRateCalculator
243244

244245
writeLogManager *writefailures.Manager
246+
247+
customStreamsTracker push.UsageTracker
245248
}
246249

247250
// New makes a new Ingester.
248-
func New(cfg Config, clientConfig client.Config, store Store, limits Limits, configs *runtime.TenantConfigs, registerer prometheus.Registerer, writeFailuresCfg writefailures.Cfg, metricsNamespace string, logger log.Logger) (*Ingester, error) {
251+
func New(cfg Config, clientConfig client.Config, store Store, limits Limits, configs *runtime.TenantConfigs, registerer prometheus.Registerer, writeFailuresCfg writefailures.Cfg, metricsNamespace string, logger log.Logger, customStreamsTracker push.UsageTracker) (*Ingester, error) {
249252
if cfg.ingesterClientFactory == nil {
250253
cfg.ingesterClientFactory = client.New
251254
}
@@ -273,6 +276,7 @@ func New(cfg Config, clientConfig client.Config, store Store, limits Limits, con
273276
terminateOnShutdown: false,
274277
streamRateCalculator: NewStreamRateCalculator(),
275278
writeLogManager: writefailures.NewManager(logger, registerer, writeFailuresCfg, configs, "ingester"),
279+
customStreamsTracker: customStreamsTracker,
276280
}
277281
i.replayController = newReplayController(metrics, cfg.WAL, &replayFlusher{i})
278282

@@ -863,7 +867,7 @@ func (i *Ingester) GetOrCreateInstance(instanceID string) (*instance, error) { /
863867
inst, ok = i.instances[instanceID]
864868
if !ok {
865869
var err error
866-
inst, err = newInstance(&i.cfg, i.periodicConfigs, instanceID, i.limiter, i.tenantConfigs, i.wal, i.metrics, i.flushOnShutdownSwitch, i.chunkFilter, i.pipelineWrapper, i.extractorWrapper, i.streamRateCalculator, i.writeLogManager)
870+
inst, err = newInstance(&i.cfg, i.periodicConfigs, instanceID, i.limiter, i.tenantConfigs, i.wal, i.metrics, i.flushOnShutdownSwitch, i.chunkFilter, i.pipelineWrapper, i.extractorWrapper, i.streamRateCalculator, i.writeLogManager, i.customStreamsTracker)
867871
if err != nil {
868872
return nil, err
869873
}

pkg/ingester/ingester_test.go

+12-12
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ func TestPrepareShutdownMarkerPathNotSet(t *testing.T) {
5757
chunks: map[string][]chunk.Chunk{},
5858
}
5959

60-
i, err := New(ingesterConfig, client.Config{}, store, limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, log.NewNopLogger())
60+
i, err := New(ingesterConfig, client.Config{}, store, limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, log.NewNopLogger(), nil)
6161
require.NoError(t, err)
6262
defer services.StopAndAwaitTerminated(context.Background(), i) //nolint:errcheck
6363

@@ -80,7 +80,7 @@ func TestPrepareShutdown(t *testing.T) {
8080
chunks: map[string][]chunk.Chunk{},
8181
}
8282

83-
i, err := New(ingesterConfig, client.Config{}, store, limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, log.NewNopLogger())
83+
i, err := New(ingesterConfig, client.Config{}, store, limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, log.NewNopLogger(), nil)
8484
require.NoError(t, err)
8585
defer services.StopAndAwaitTerminated(context.Background(), i) //nolint:errcheck
8686

@@ -141,7 +141,7 @@ func TestIngester_GetStreamRates_Correctness(t *testing.T) {
141141
chunks: map[string][]chunk.Chunk{},
142142
}
143143

144-
i, err := New(ingesterConfig, client.Config{}, store, limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, log.NewNopLogger())
144+
i, err := New(ingesterConfig, client.Config{}, store, limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, log.NewNopLogger(), nil)
145145
require.NoError(t, err)
146146
defer services.StopAndAwaitTerminated(context.Background(), i) //nolint:errcheck
147147

@@ -173,7 +173,7 @@ func BenchmarkGetStreamRatesAllocs(b *testing.B) {
173173
chunks: map[string][]chunk.Chunk{},
174174
}
175175

176-
i, err := New(ingesterConfig, client.Config{}, store, limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, log.NewNopLogger())
176+
i, err := New(ingesterConfig, client.Config{}, store, limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, log.NewNopLogger(), nil)
177177
require.NoError(b, err)
178178
defer services.StopAndAwaitTerminated(context.Background(), i) //nolint:errcheck
179179

@@ -197,7 +197,7 @@ func TestIngester(t *testing.T) {
197197
chunks: map[string][]chunk.Chunk{},
198198
}
199199

200-
i, err := New(ingesterConfig, client.Config{}, store, limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, log.NewNopLogger())
200+
i, err := New(ingesterConfig, client.Config{}, store, limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, log.NewNopLogger(), nil)
201201
require.NoError(t, err)
202202
defer services.StopAndAwaitTerminated(context.Background(), i) //nolint:errcheck
203203

@@ -382,7 +382,7 @@ func TestIngesterStreamLimitExceeded(t *testing.T) {
382382
chunks: map[string][]chunk.Chunk{},
383383
}
384384

385-
i, err := New(ingesterConfig, client.Config{}, store, overrides, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, log.NewNopLogger())
385+
i, err := New(ingesterConfig, client.Config{}, store, overrides, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, log.NewNopLogger(), nil)
386386
require.NoError(t, err)
387387
defer services.StopAndAwaitTerminated(context.Background(), i) //nolint:errcheck
388388

@@ -740,7 +740,7 @@ func Test_InMemoryLabels(t *testing.T) {
740740
chunks: map[string][]chunk.Chunk{},
741741
}
742742

743-
i, err := New(ingesterConfig, client.Config{}, store, limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, log.NewNopLogger())
743+
i, err := New(ingesterConfig, client.Config{}, store, limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, log.NewNopLogger(), nil)
744744
require.NoError(t, err)
745745
defer services.StopAndAwaitTerminated(context.Background(), i) //nolint:errcheck
746746

@@ -794,7 +794,7 @@ func TestIngester_GetDetectedLabels(t *testing.T) {
794794
chunks: map[string][]chunk.Chunk{},
795795
}
796796

797-
i, err := New(ingesterConfig, client.Config{}, store, limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, log.NewNopLogger())
797+
i, err := New(ingesterConfig, client.Config{}, store, limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, log.NewNopLogger(), nil)
798798
require.NoError(t, err)
799799
defer services.StopAndAwaitTerminated(context.Background(), i) //nolint:errcheck
800800

@@ -857,7 +857,7 @@ func TestIngester_GetDetectedLabelsWithQuery(t *testing.T) {
857857
chunks: map[string][]chunk.Chunk{},
858858
}
859859

860-
i, err := New(ingesterConfig, client.Config{}, store, limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, log.NewNopLogger())
860+
i, err := New(ingesterConfig, client.Config{}, store, limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, log.NewNopLogger(), nil)
861861
require.NoError(t, err)
862862
defer services.StopAndAwaitTerminated(context.Background(), i) //nolint:errcheck
863863

@@ -1224,7 +1224,7 @@ func TestStats(t *testing.T) {
12241224
limits, err := validation.NewOverrides(defaultLimitsTestConfig(), nil)
12251225
require.NoError(t, err)
12261226

1227-
i, err := New(ingesterConfig, client.Config{}, &mockStore{}, limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, log.NewNopLogger())
1227+
i, err := New(ingesterConfig, client.Config{}, &mockStore{}, limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, log.NewNopLogger(), nil)
12281228
require.NoError(t, err)
12291229

12301230
i.instances["test"] = defaultInstance(t)
@@ -1251,7 +1251,7 @@ func TestVolume(t *testing.T) {
12511251
limits, err := validation.NewOverrides(defaultLimitsTestConfig(), nil)
12521252
require.NoError(t, err)
12531253

1254-
i, err := New(ingesterConfig, client.Config{}, &mockStore{}, limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, log.NewNopLogger())
1254+
i, err := New(ingesterConfig, client.Config{}, &mockStore{}, limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, log.NewNopLogger(), nil)
12551255
require.NoError(t, err)
12561256

12571257
i.instances["test"] = defaultInstance(t)
@@ -1330,7 +1330,7 @@ func createIngesterServer(t *testing.T, ingesterConfig Config) (ingesterClient,
13301330
limits, err := validation.NewOverrides(defaultLimitsTestConfig(), nil)
13311331
require.NoError(t, err)
13321332

1333-
ing, err := New(ingesterConfig, client.Config{}, &mockStore{}, limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, log.NewNopLogger())
1333+
ing, err := New(ingesterConfig, client.Config{}, &mockStore{}, limits, runtime.DefaultTenantConfigs(), nil, writefailures.Cfg{}, constants.Loki, log.NewNopLogger(), nil)
13341334
require.NoError(t, err)
13351335

13361336
listener := bufconn.Listen(1024 * 1024)

pkg/ingester/instance.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ func newInstance(
141141
extractorWrapper log.SampleExtractorWrapper,
142142
streamRateCalculator *StreamRateCalculator,
143143
writeFailures *writefailures.Manager,
144+
customStreamsTracker push.UsageTracker,
144145
) (*instance, error) {
145146
invertedIndex, err := index.NewMultiInvertedIndex(periodConfigs, uint32(cfg.IndexShards))
146147
if err != nil {
@@ -174,6 +175,8 @@ func newInstance(
174175

175176
writeFailures: writeFailures,
176177
schemaconfig: &c,
178+
179+
customStreamsTracker: customStreamsTracker,
177180
}
178181
i.mapper = NewFPMapper(i.getLabelsFromFingerprint)
179182
return i, err
@@ -241,7 +244,7 @@ func (i *instance) Push(ctx context.Context, req *logproto.PushRequest) error {
241244
continue
242245
}
243246

244-
_, appendErr = s.Push(ctx, reqStream.Entries, record, 0, false, rateLimitWholeStream)
247+
_, appendErr = s.Push(ctx, reqStream.Entries, record, 0, false, rateLimitWholeStream, i.customStreamsTracker)
245248
s.chunkMtx.Unlock()
246249
}
247250

0 commit comments

Comments
 (0)