github.com/grafana/pyroscope@v1.18.0/pkg/phlaredb/validate.go (about)

     1  package phlaredb
     2  
     3  import (
     4  	"context"
     5  	"path"
     6  
     7  	"github.com/grafana/dskit/runutil"
     8  
     9  	"github.com/grafana/pyroscope/pkg/objstore/client"
    10  	"github.com/grafana/pyroscope/pkg/objstore/providers/filesystem"
    11  	"github.com/grafana/pyroscope/pkg/phlaredb/block"
    12  	"github.com/grafana/pyroscope/pkg/util"
    13  )
    14  
    15  // ValidateLocalBlock validates the block in the given directory is readable.
    16  func ValidateLocalBlock(ctx context.Context, dir string) error {
    17  	meta, err := block.ReadMetaFromDir(dir)
    18  	if err != nil {
    19  		return err
    20  	}
    21  
    22  	bkt, err := client.NewBucket(ctx, client.Config{
    23  		StorageBackendConfig: client.StorageBackendConfig{
    24  			Backend: client.Filesystem,
    25  			Filesystem: filesystem.Config{
    26  				Directory: path.Dir(dir),
    27  			},
    28  		},
    29  	}, "validate")
    30  	if err != nil {
    31  		return err
    32  	}
    33  	q := NewSingleBlockQuerierFromMeta(ctx, bkt, meta)
    34  	defer runutil.CloseWithLogOnErr(util.Logger, q, "closing block querier")
    35  	return q.Open(ctx)
    36  }