Skip to content

Commit 46e3114

Browse files
committed
adding tests / hiding documentation for now
Signed-off-by: alanprot <[email protected]>
1 parent adca9f7 commit 46e3114

File tree

9 files changed

+256
-121
lines changed

9 files changed

+256
-121
lines changed

docs/configuration/config-file-reference.md

-98
Original file line numberDiff line numberDiff line change
@@ -152,96 +152,6 @@ api:
152152
# The compactor_config configures the compactor for the blocks storage.
153153
[compactor: <compactor_config>]
154154

155-
parquet_converter:
156-
# Comma separated list of tenants that can be converted. If specified, only
157-
# these tenants will be converted, otherwise all tenants can be converted.
158-
# CLI flag: -parquet-converter.enabled-tenants
159-
[enabled_tenants: <string> | default = ""]
160-
161-
# Comma separated list of tenants that cannot converted.
162-
# CLI flag: -parquet-converter.disabled-tenants
163-
[disabled_tenants: <string> | default = ""]
164-
165-
ring:
166-
kvstore:
167-
# Backend storage to use for the ring. Supported values are: consul, etcd,
168-
# inmemory, memberlist, multi.
169-
# CLI flag: -parquet-converter.ring.store
170-
[store: <string> | default = "consul"]
171-
172-
# The prefix for the keys in the store. Should end with a /.
173-
# CLI flag: -parquet-converter.ring.prefix
174-
[prefix: <string> | default = "collectors/"]
175-
176-
dynamodb:
177-
# Region to access dynamodb.
178-
# CLI flag: -parquet-converter.ring.dynamodb.region
179-
[region: <string> | default = ""]
180-
181-
# Table name to use on dynamodb.
182-
# CLI flag: -parquet-converter.ring.dynamodb.table-name
183-
[table_name: <string> | default = ""]
184-
185-
# Time to expire items on dynamodb.
186-
# CLI flag: -parquet-converter.ring.dynamodb.ttl-time
187-
[ttl: <duration> | default = 0s]
188-
189-
# Time to refresh local ring with information on dynamodb.
190-
# CLI flag: -parquet-converter.ring.dynamodb.puller-sync-time
191-
[puller_sync_time: <duration> | default = 1m]
192-
193-
# Maximum number of retries for DDB KV CAS.
194-
# CLI flag: -parquet-converter.ring.dynamodb.max-cas-retries
195-
[max_cas_retries: <int> | default = 10]
196-
197-
# Timeout of dynamoDbClient requests. Default is 2m.
198-
# CLI flag: -parquet-converter.ring.dynamodb.timeout
199-
[timeout: <duration> | default = 2m]
200-
201-
# The consul_config configures the consul client.
202-
# The CLI flags prefix for this block config is: parquet-converter.ring
203-
[consul: <consul_config>]
204-
205-
# The etcd_config configures the etcd client.
206-
# The CLI flags prefix for this block config is: parquet-converter.ring
207-
[etcd: <etcd_config>]
208-
209-
multi:
210-
# Primary backend storage used by multi-client.
211-
# CLI flag: -parquet-converter.ring.multi.primary
212-
[primary: <string> | default = ""]
213-
214-
# Secondary backend storage used by multi-client.
215-
# CLI flag: -parquet-converter.ring.multi.secondary
216-
[secondary: <string> | default = ""]
217-
218-
# Mirror writes to secondary store.
219-
# CLI flag: -parquet-converter.ring.multi.mirror-enabled
220-
[mirror_enabled: <boolean> | default = false]
221-
222-
# Timeout for storing value to secondary store.
223-
# CLI flag: -parquet-converter.ring.multi.mirror-timeout
224-
[mirror_timeout: <duration> | default = 2s]
225-
226-
# Period at which to heartbeat to the ring. 0 = disabled.
227-
# CLI flag: -parquet-converter.ring.heartbeat-period
228-
[heartbeat_period: <duration> | default = 5s]
229-
230-
# The heartbeat timeout after which parquet-converter are considered
231-
# unhealthy within the ring. 0 = never (timeout disabled).
232-
# CLI flag: -parquet-converter.ring.heartbeat-timeout
233-
[heartbeat_timeout: <duration> | default = 1m]
234-
235-
# Time since last heartbeat before parquet-converter will be removed from
236-
# ring. 0 to disable
237-
# CLI flag: -parquet-converter.auto-forget-delay
238-
[auto_forget_delay: <duration> | default = 2m]
239-
240-
# File path where tokens are stored. If empty, tokens are not stored at
241-
# shutdown and restored at startup.
242-
# CLI flag: -parquet-converter.ring.tokens-file-path
243-
[tokens_file_path: <string> | default = ""]
244-
245155
# The store_gateway_config configures the store-gateway service used by the
246156
# blocks storage.
247157
[store_gateway: <store_gateway_config>]
@@ -2589,7 +2499,6 @@ The `consul_config` configures the consul client. The supported CLI flags `<pref
25892499
- `compactor.ring`
25902500
- `distributor.ha-tracker`
25912501
- `distributor.ring`
2592-
- `parquet-converter.ring`
25932502
- `ruler.ring`
25942503
- `store-gateway.sharding-ring`
25952504

@@ -2906,7 +2815,6 @@ The `etcd_config` configures the etcd client. The supported CLI flags `<prefix>`
29062815
- `compactor.ring`
29072816
- `distributor.ha-tracker`
29082817
- `distributor.ring`
2909-
- `parquet-converter.ring`
29102818
- `ruler.ring`
29112819
- `store-gateway.sharding-ring`
29122820

@@ -3803,12 +3711,6 @@ query_rejection:
38033711
# CLI flag: -compactor.partition-series-count
38043712
[compactor_partition_series_count: <int> | default = 0]
38053713

3806-
# The default tenant's shard size when the shuffle-sharding strategy is used by
3807-
# the parquet converter. When this setting is specified in the per-tenant
3808-
# overrides, a value of 0 disables shuffle sharding for the tenant.
3809-
# CLI flag: -parquet-converter.tenant-shard-size
3810-
[parquet_converter_tenant_shard_size: <int> | default = 0]
3811-
38123714
# S3 server-side encryption type. Required to enable server-side encryption
38133715
# overrides for a specific tenant. If not set, the default S3 client settings
38143716
# are used.

pkg/cortex/cortex.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ type Config struct {
114114
QueryRange queryrange.Config `yaml:"query_range"`
115115
BlocksStorage tsdb.BlocksStorageConfig `yaml:"blocks_storage"`
116116
Compactor compactor.Config `yaml:"compactor"`
117-
ParquetConverter parquetconverter.Config `yaml:"parquet_converter"`
117+
ParquetConverter parquetconverter.Config `yaml:"parquet_converter" doc:"hidden"`
118118
StoreGateway storegateway.Config `yaml:"store_gateway"`
119119
TenantFederation tenantfederation.Config `yaml:"tenant_federation"`
120120

pkg/cortex/modules.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"context"
55
"flag"
66
"fmt"
7-
"github.com/cortexproject/cortex/pkg/parquetconverter"
87
"log/slog"
98
"net/http"
109
"runtime"
@@ -37,6 +36,7 @@ import (
3736
"github.com/cortexproject/cortex/pkg/frontend"
3837
"github.com/cortexproject/cortex/pkg/frontend/transport"
3938
"github.com/cortexproject/cortex/pkg/ingester"
39+
"github.com/cortexproject/cortex/pkg/parquetconverter"
4040
"github.com/cortexproject/cortex/pkg/purger"
4141
"github.com/cortexproject/cortex/pkg/querier"
4242
"github.com/cortexproject/cortex/pkg/querier/tenantfederation"
@@ -696,8 +696,7 @@ func (t *Cortex) initAlertManager() (serv services.Service, err error) {
696696

697697
func (t *Cortex) initParquetConverter() (serv services.Service, err error) {
698698
t.Cfg.ParquetConverter.Ring.ListenPort = t.Cfg.Server.GRPCListenPort
699-
t.Parquetconverter = parquetconverter.NewConverter(t.Cfg.ParquetConverter, t.Cfg.BlocksStorage, t.Cfg.Compactor.BlockRanges.ToMilliseconds(), util_log.Logger, prometheus.DefaultRegisterer, t.Overrides)
700-
return t.Parquetconverter, nil
699+
return parquetconverter.NewConverter(t.Cfg.ParquetConverter, t.Cfg.BlocksStorage, t.Cfg.Compactor.BlockRanges.ToMilliseconds(), util_log.Logger, prometheus.DefaultRegisterer, t.Overrides)
701700
}
702701

703702
func (t *Cortex) initCompactor() (serv services.Service, err error) {

pkg/parquetconverter/converter.go

+14-17
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ type Config struct {
4747
EnabledTenants flagext.StringSliceCSV `yaml:"enabled_tenants"`
4848
DisabledTenants flagext.StringSliceCSV `yaml:"disabled_tenants"`
4949
MetaSyncConcurrency int `yaml:"meta_sync_concurrency"`
50+
ConversionInterval time.Duration `yaml:"conversion_interval"`
5051

5152
DataDir string `yaml:"data_dir"`
5253

@@ -70,7 +71,7 @@ type Converter struct {
7071
ringSubservices *services.Manager
7172
ringSubservicesWatcher *services.FailureWatcher
7273

73-
bkt objstore.InstrumentedBucket
74+
bkt objstore.Bucket
7475

7576
// chunk pool
7677
pool chunkenc.Pool
@@ -88,9 +89,17 @@ func (cfg *Config) RegisterFlags(f *flag.FlagSet) {
8889
f.Var(&cfg.DisabledTenants, "parquet-converter.disabled-tenants", "Comma separated list of tenants that cannot converted.")
8990
f.StringVar(&cfg.DataDir, "parquet-converter.data-dir", "./data", "Data directory in which to cache blocks and process conversions.")
9091
f.IntVar(&cfg.MetaSyncConcurrency, "parquet-converter.meta-sync-concurrency", 20, "Number of Go routines to use when syncing block meta files from the long term storage.")
92+
f.DurationVar(&cfg.ConversionInterval, "parquet-converter.conversion-interval", time.Minute, "The frequency at which the conversion job runs.")
9193
}
9294

93-
func NewConverter(cfg Config, storageCfg cortex_tsdb.BlocksStorageConfig, blockRanges []int64, logger log.Logger, registerer prometheus.Registerer, limits *validation.Overrides) *Converter {
95+
func NewConverter(cfg Config, storageCfg cortex_tsdb.BlocksStorageConfig, blockRanges []int64, logger log.Logger, registerer prometheus.Registerer, limits *validation.Overrides) (*Converter, error) {
96+
bkt, err := bucket.NewClient(context.Background(), storageCfg.Bucket, nil, "parquet-converter", logger, registerer)
97+
98+
return newConverter(cfg, bkt, storageCfg, blockRanges, logger, registerer, limits), err
99+
}
100+
101+
func newConverter(cfg Config, bkt objstore.InstrumentedBucket, storageCfg cortex_tsdb.BlocksStorageConfig, blockRanges []int64, logger log.Logger, registerer prometheus.Registerer, limits *validation.Overrides) *Converter {
102+
bkt = bucketindex.BucketWithGlobalMarkers(bkt)
94103
c := &Converter{
95104
cfg: cfg,
96105
reg: registerer,
@@ -101,24 +110,17 @@ func NewConverter(cfg Config, storageCfg cortex_tsdb.BlocksStorageConfig, blockR
101110
pool: chunkenc.NewPool(),
102111
blockRanges: blockRanges,
103112
fetcherMetrics: block.NewFetcherMetrics(registerer, nil, nil),
113+
bkt: bkt,
104114
}
105115

106116
c.Service = services.NewBasicService(c.starting, c.running, c.stopping)
107117
return c
108118
}
109119

110120
func (c *Converter) starting(ctx context.Context) error {
111-
bkt, err := bucket.NewClient(ctx, c.storageCfg.Bucket, nil, "parquet-converter", c.logger, c.reg)
112-
bkt = bucketindex.BucketWithGlobalMarkers(bkt)
113-
114-
if err != nil {
115-
return err
116-
}
117-
118-
c.bkt = bkt
119121
lifecyclerCfg := c.cfg.Ring.ToLifecyclerConfig()
122+
var err error
120123
c.ringLifecycler, err = ring.NewLifecycler(lifecyclerCfg, ring.NewNoopFlushTransferer(), "parquet-converter", ringKey, true, false, c.logger, prometheus.WrapRegistererWithPrefix("cortex_", c.reg))
121-
122124
if err != nil {
123125
return errors.Wrap(err, "unable to initialize converter ring lifecycler")
124126
}
@@ -152,7 +154,7 @@ func (c *Converter) starting(ctx context.Context) error {
152154

153155
func (c *Converter) running(ctx context.Context) error {
154156
level.Info(c.logger).Log("msg", "parquet-converter started")
155-
t := time.NewTicker(time.Second * 10)
157+
t := time.NewTicker(c.cfg.ConversionInterval)
156158
defer t.Stop()
157159
for {
158160
select {
@@ -187,7 +189,6 @@ func (c *Converter) running(ctx context.Context) error {
187189
level.Info(userLogger).Log("msg", "scanned user", "user", userID)
188190

189191
err = c.convertUser(ctx, userLogger, ring, userID)
190-
191192
if err != nil {
192193
level.Error(userLogger).Log("msg", "failed to convert user", "user", userID, "err", err)
193194
}
@@ -216,7 +217,6 @@ func (c *Converter) discoverUsers(ctx context.Context) ([]string, error) {
216217
}
217218

218219
func (c *Converter) convertUser(ctx context.Context, logger log.Logger, ring ring.ReadRing, userID string) error {
219-
220220
uBucket := bucket.NewUserBucketClient(userID, c.bkt, c.limits)
221221

222222
var blockLister block.Lister
@@ -253,7 +253,6 @@ func (c *Converter) convertUser(ctx context.Context, logger log.Logger, ring rin
253253
c.fetcherMetrics,
254254
[]block.MetadataFilter{ignoreDeletionMarkFilter},
255255
)
256-
257256
if err != nil {
258257
return errors.Wrap(err, "error creating block fetcher")
259258
}
@@ -275,7 +274,6 @@ func (c *Converter) convertUser(ctx context.Context, logger log.Logger, ring rin
275274
}
276275

277276
marker, err := cortex_parquet.ReadConverterMark(ctx, b.ULID, uBucket, logger)
278-
279277
if err != nil {
280278
level.Error(logger).Log("msg", "failed to read marker", "block", b.ULID.String(), "err", err)
281279
continue
@@ -304,7 +302,6 @@ func (c *Converter) convertUser(ctx context.Context, logger log.Logger, ring rin
304302
}
305303

306304
tsdbBlock, err := tsdb.OpenBlock(logutil.GoKitLogToSlog(logger), bdir, c.pool, tsdb.DefaultPostingsDecoderFactory)
307-
308305
if err != nil {
309306
level.Error(logger).Log("msg", "Error opening block", "err", err)
310307
continue

0 commit comments

Comments
 (0)