@@ -76,14 +76,15 @@ func TestParquetQueryableFallbackLogic(t *testing.T) {
76
76
77
77
mParquetQuerier := & mockParquetQuerier {}
78
78
pq := & parquetQuerierWithFallback {
79
- minT : minT ,
80
- maxT : maxT ,
81
- finder : finder ,
82
- blocksStoreQuerier : q ,
83
- parquetQuerier : mParquetQuerier ,
84
- metrics : newParquetQueryableFallbackMetrics (prometheus .NewRegistry ()),
85
- limits : defaultOverrides (t , 4 ),
86
- logger : log .NewNopLogger (),
79
+ minT : minT ,
80
+ maxT : maxT ,
81
+ finder : finder ,
82
+ blocksStoreQuerier : q ,
83
+ parquetQuerier : mParquetQuerier ,
84
+ metrics : newParquetQueryableFallbackMetrics (prometheus .NewRegistry ()),
85
+ limits : defaultOverrides (t , 4 ),
86
+ logger : log .NewNopLogger (),
87
+ defaultBlockStoreType : parquetBlockStore ,
87
88
}
88
89
89
90
finder .On ("GetBlocks" , mock .Anything , "user-1" , minT , maxT ).Return (bucketindex.Blocks {
@@ -118,14 +119,15 @@ func TestParquetQueryableFallbackLogic(t *testing.T) {
118
119
119
120
mParquetQuerier := & mockParquetQuerier {}
120
121
pq := & parquetQuerierWithFallback {
121
- minT : minT ,
122
- maxT : maxT ,
123
- finder : finder ,
124
- blocksStoreQuerier : q ,
125
- parquetQuerier : mParquetQuerier ,
126
- metrics : newParquetQueryableFallbackMetrics (prometheus .NewRegistry ()),
127
- limits : defaultOverrides (t , 0 ),
128
- logger : log .NewNopLogger (),
122
+ minT : minT ,
123
+ maxT : maxT ,
124
+ finder : finder ,
125
+ blocksStoreQuerier : q ,
126
+ parquetQuerier : mParquetQuerier ,
127
+ metrics : newParquetQueryableFallbackMetrics (prometheus .NewRegistry ()),
128
+ limits : defaultOverrides (t , 0 ),
129
+ logger : log .NewNopLogger (),
130
+ defaultBlockStoreType : parquetBlockStore ,
129
131
}
130
132
131
133
finder .On ("GetBlocks" , mock .Anything , "user-1" , minT , maxT ).Return (bucketindex.Blocks {
@@ -178,14 +180,15 @@ func TestParquetQueryableFallbackLogic(t *testing.T) {
178
180
179
181
mParquetQuerier := & mockParquetQuerier {}
180
182
pq := & parquetQuerierWithFallback {
181
- minT : minT ,
182
- maxT : maxT ,
183
- finder : finder ,
184
- blocksStoreQuerier : q ,
185
- parquetQuerier : mParquetQuerier ,
186
- metrics : newParquetQueryableFallbackMetrics (prometheus .NewRegistry ()),
187
- limits : defaultOverrides (t , 0 ),
188
- logger : log .NewNopLogger (),
183
+ minT : minT ,
184
+ maxT : maxT ,
185
+ finder : finder ,
186
+ blocksStoreQuerier : q ,
187
+ parquetQuerier : mParquetQuerier ,
188
+ metrics : newParquetQueryableFallbackMetrics (prometheus .NewRegistry ()),
189
+ limits : defaultOverrides (t , 0 ),
190
+ logger : log .NewNopLogger (),
191
+ defaultBlockStoreType : parquetBlockStore ,
189
192
}
190
193
191
194
finder .On ("GetBlocks" , mock .Anything , "user-1" , minT , maxT ).Return (bucketindex.Blocks {
@@ -244,14 +247,15 @@ func TestParquetQueryableFallbackLogic(t *testing.T) {
244
247
245
248
mParquetQuerier := & mockParquetQuerier {}
246
249
pq := & parquetQuerierWithFallback {
247
- minT : minT ,
248
- maxT : maxT ,
249
- finder : finder ,
250
- blocksStoreQuerier : q ,
251
- parquetQuerier : mParquetQuerier ,
252
- metrics : newParquetQueryableFallbackMetrics (prometheus .NewRegistry ()),
253
- limits : defaultOverrides (t , 0 ),
254
- logger : log .NewNopLogger (),
250
+ minT : minT ,
251
+ maxT : maxT ,
252
+ finder : finder ,
253
+ blocksStoreQuerier : q ,
254
+ parquetQuerier : mParquetQuerier ,
255
+ metrics : newParquetQueryableFallbackMetrics (prometheus .NewRegistry ()),
256
+ limits : defaultOverrides (t , 0 ),
257
+ logger : log .NewNopLogger (),
258
+ defaultBlockStoreType : parquetBlockStore ,
255
259
}
256
260
257
261
finder .On ("GetBlocks" , mock .Anything , "user-1" , minT , maxT ).Return (bucketindex.Blocks {
@@ -291,6 +295,106 @@ func TestParquetQueryableFallbackLogic(t *testing.T) {
291
295
})
292
296
})
293
297
298
+ t .Run ("Default query TSDB block store even if parquet blocks available. Override with ctx" , func (t * testing.T ) {
299
+ finder := & blocksFinderMock {}
300
+ stores := createStore ()
301
+
302
+ q := & blocksStoreQuerier {
303
+ minT : minT ,
304
+ maxT : maxT ,
305
+ finder : finder ,
306
+ stores : stores ,
307
+ consistency : NewBlocksConsistencyChecker (0 , 0 , log .NewNopLogger (), nil ),
308
+ logger : log .NewNopLogger (),
309
+ metrics : newBlocksStoreQueryableMetrics (prometheus .NewPedanticRegistry ()),
310
+ limits : & blocksStoreLimitsMock {},
311
+
312
+ storeGatewayConsistencyCheckMaxAttempts : 3 ,
313
+ }
314
+
315
+ mParquetQuerier := & mockParquetQuerier {}
316
+ pq := & parquetQuerierWithFallback {
317
+ minT : minT ,
318
+ maxT : maxT ,
319
+ finder : finder ,
320
+ blocksStoreQuerier : q ,
321
+ parquetQuerier : mParquetQuerier ,
322
+ metrics : newParquetQueryableFallbackMetrics (prometheus .NewRegistry ()),
323
+ limits : defaultOverrides (t , 0 ),
324
+ logger : log .NewNopLogger (),
325
+ defaultBlockStoreType : tsdbBlockStore ,
326
+ }
327
+
328
+ finder .On ("GetBlocks" , mock .Anything , "user-1" , minT , maxT ).Return (bucketindex.Blocks {
329
+ & bucketindex.Block {ID : block1 , Parquet : & parquet.ConverterMarkMeta {Version : 1 }},
330
+ & bucketindex.Block {ID : block2 , Parquet : & parquet.ConverterMarkMeta {Version : 1 }},
331
+ }, map [ulid.ULID ]* bucketindex.BlockDeletionMark (nil ), nil )
332
+
333
+ t .Run ("select" , func (t * testing.T ) {
334
+ stores .Reset ()
335
+ mParquetQuerier .Reset ()
336
+ ss := pq .Select (ctx , true , nil , matchers ... )
337
+ require .NoError (t , ss .Err ())
338
+ require .Len (t , stores .queriedBlocks , 2 )
339
+ require .Len (t , mParquetQuerier .queriedBlocks , 0 )
340
+ })
341
+
342
+ t .Run ("select with ctx key override to parquet" , func (t * testing.T ) {
343
+ stores .Reset ()
344
+ mParquetQuerier .Reset ()
345
+ newCtx := AddBlockStoreTypeToContext (ctx , string (parquetBlockStore ))
346
+ ss := pq .Select (newCtx , true , nil , matchers ... )
347
+ require .NoError (t , ss .Err ())
348
+ require .Len (t , stores .queriedBlocks , 0 )
349
+ require .Len (t , mParquetQuerier .queriedBlocks , 2 )
350
+ })
351
+
352
+ t .Run ("labelNames" , func (t * testing.T ) {
353
+ stores .Reset ()
354
+ mParquetQuerier .Reset ()
355
+ r , _ , err := pq .LabelNames (ctx , nil , matchers ... )
356
+ require .NoError (t , err )
357
+ require .Len (t , stores .queriedBlocks , 2 )
358
+ require .Len (t , mParquetQuerier .queriedBlocks , 0 )
359
+ require .Contains (t , r , "fromSg" )
360
+ require .NotContains (t , r , "fromParquet" )
361
+ })
362
+
363
+ t .Run ("labelNames with ctx key override to parquet" , func (t * testing.T ) {
364
+ stores .Reset ()
365
+ mParquetQuerier .Reset ()
366
+ newCtx := AddBlockStoreTypeToContext (ctx , string (parquetBlockStore ))
367
+ r , _ , err := pq .LabelNames (newCtx , nil , matchers ... )
368
+ require .NoError (t , err )
369
+ require .Len (t , stores .queriedBlocks , 0 )
370
+ require .Len (t , mParquetQuerier .queriedBlocks , 2 )
371
+ require .NotContains (t , r , "fromSg" )
372
+ require .Contains (t , r , "fromParquet" )
373
+ })
374
+
375
+ t .Run ("labelValues" , func (t * testing.T ) {
376
+ stores .Reset ()
377
+ mParquetQuerier .Reset ()
378
+ r , _ , err := pq .LabelValues (ctx , labels .MetricName , nil , matchers ... )
379
+ require .NoError (t , err )
380
+ require .Len (t , stores .queriedBlocks , 2 )
381
+ require .Len (t , mParquetQuerier .queriedBlocks , 0 )
382
+ require .Contains (t , r , "fromSg" )
383
+ require .NotContains (t , r , "fromParquet" )
384
+ })
385
+
386
+ t .Run ("labelValues with ctx key override to parquet" , func (t * testing.T ) {
387
+ stores .Reset ()
388
+ mParquetQuerier .Reset ()
389
+ newCtx := AddBlockStoreTypeToContext (ctx , string (parquetBlockStore ))
390
+ r , _ , err := pq .LabelValues (newCtx , labels .MetricName , nil , matchers ... )
391
+ require .NoError (t , err )
392
+ require .Len (t , stores .queriedBlocks , 0 )
393
+ require .Len (t , mParquetQuerier .queriedBlocks , 2 )
394
+ require .NotContains (t , r , "fromSg" )
395
+ require .Contains (t , r , "fromParquet" )
396
+ })
397
+ })
294
398
}
295
399
296
400
func defaultOverrides (t * testing.T , queryVerticalShardSize int ) * validation.Overrides {
0 commit comments