@@ -76,14 +76,15 @@ func TestParquetQueryableFallbackLogic(t *testing.T) {
7676
7777 mParquetQuerier := & mockParquetQuerier {}
7878 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 ,
8788 }
8889
8990 finder .On ("GetBlocks" , mock .Anything , "user-1" , minT , maxT ).Return (bucketindex.Blocks {
@@ -118,14 +119,15 @@ func TestParquetQueryableFallbackLogic(t *testing.T) {
118119
119120 mParquetQuerier := & mockParquetQuerier {}
120121 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 ,
129131 }
130132
131133 finder .On ("GetBlocks" , mock .Anything , "user-1" , minT , maxT ).Return (bucketindex.Blocks {
@@ -178,14 +180,15 @@ func TestParquetQueryableFallbackLogic(t *testing.T) {
178180
179181 mParquetQuerier := & mockParquetQuerier {}
180182 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 ,
189192 }
190193
191194 finder .On ("GetBlocks" , mock .Anything , "user-1" , minT , maxT ).Return (bucketindex.Blocks {
@@ -244,14 +247,15 @@ func TestParquetQueryableFallbackLogic(t *testing.T) {
244247
245248 mParquetQuerier := & mockParquetQuerier {}
246249 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 ,
255259 }
256260
257261 finder .On ("GetBlocks" , mock .Anything , "user-1" , minT , maxT ).Return (bucketindex.Blocks {
@@ -291,6 +295,106 @@ func TestParquetQueryableFallbackLogic(t *testing.T) {
291295 })
292296 })
293297
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+ })
294398}
295399
296400func defaultOverrides (t * testing.T , queryVerticalShardSize int ) * validation.Overrides {
0 commit comments