Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@
* [BUGFIX] Compactor: Fix spurious `bucket operation fail after retries` error logs emitted during partial block cleanup. #7749
* [BUGFIX] Alertmanager: Fix panic in `validateAlertmanagerConfig` when receiver config traversal encounters nil interface values. #7751
* [BUGFIX] Parquet Converter: Fix `auto_forget_delay` having no effect. The ring lifecycler was created without the auto-forget delegate, so unhealthy instances were never automatically removed from the ring. #7752
* [BUGFIX] Parquet Converter: Fix misleading error messages referring to the compactor ring instead of the parquet converter ring during startup and sharding checks. #7755

## 1.21.1 2026-06-04

Expand Down
12 changes: 6 additions & 6 deletions pkg/parquetconverter/converter.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ import (
)

const (
// ringKey is the key under which we store the compactors ring in the KVStore.
// ringKey is the key under which we store the parquet converters ring in the KVStore.
ringKey = "parquet-converter"

converterMetaPrefix = "converter-meta-"
Expand Down Expand Up @@ -181,12 +181,12 @@ func (c *Converter) starting(ctx context.Context) error {
}
c.ringLifecycler, err = ring.NewLifecyclerWithDelegate(lifecyclerCfg, ring.NewNoopFlushTransferer(), "parquet-converter", ringKey, true, false, c.logger, prometheus.WrapRegistererWithPrefix("cortex_", c.reg), delegate)
if err != nil {
return errors.Wrap(err, "unable to initialize converter ring lifecycler")
return errors.Wrap(err, "unable to initialize parquet converter ring lifecycler")
}

c.ring, err = ring.New(lifecyclerCfg.RingConfig, "parquet-converter", ringKey, c.logger, prometheus.WrapRegistererWithPrefix("cortex_", c.reg))
if err != nil {
return errors.Wrap(err, "unable to initialize compactor ring")
return errors.Wrap(err, "unable to initialize parquet converter ring")
}

c.ringSubservices, err = services.NewManager(c.ringLifecycler, c.ring)
Expand All @@ -197,7 +197,7 @@ func (c *Converter) starting(ctx context.Context) error {
err = services.StartManagerAndAwaitHealthy(ctx, c.ringSubservices)
}
if err != nil {
return errors.Wrap(err, "unable to start compactor ring dependencies")
return errors.Wrap(err, "unable to start parquet converter ring dependencies")
}

ctxWithTimeout, cancel := context.WithTimeout(ctx, time.Minute*3)
Expand Down Expand Up @@ -561,14 +561,14 @@ func (c *Converter) ownBlock(ring ring.ReadRing, blockId string) (bool, error) {
_, _ = hasher.Write([]byte(blockId))
userHash := hasher.Sum32()

// Check whether this compactor instance owns the user.
// Check whether this parquet converter instance owns the user.
rs, err := ring.Get(userHash, RingOp, nil, nil, nil)
if err != nil {
return false, err
}

if len(rs.Instances) != 1 {
return false, fmt.Errorf("unexpected number of compactors in the shard (expected 1, got %d)", len(rs.Instances))
return false, fmt.Errorf("unexpected number of parquet converters in the shard (expected 1, got %d)", len(rs.Instances))
}

return rs.Instances[0].Addr == c.ringLifecycler.Addr, nil
Expand Down