github.com/grafana/pyroscope@v1.18.0/pkg/ingester/query.go (about) 1 package ingester 2 3 import ( 4 "context" 5 6 "connectrpc.com/connect" 7 8 ingestv1 "github.com/grafana/pyroscope/api/gen/proto/go/ingester/v1" 9 typesv1 "github.com/grafana/pyroscope/api/gen/proto/go/types/v1" 10 ) 11 12 // LabelValues returns the possible label values for a given label name. 13 func (i *Ingester) LabelValues(ctx context.Context, req *connect.Request[typesv1.LabelValuesRequest]) (*connect.Response[typesv1.LabelValuesResponse], error) { 14 return forInstanceUnary(ctx, i, func(instance *instance) (*connect.Response[typesv1.LabelValuesResponse], error) { 15 return instance.LabelValues(ctx, req) 16 }) 17 } 18 19 // LabelNames returns the possible label names. 20 func (i *Ingester) LabelNames(ctx context.Context, req *connect.Request[typesv1.LabelNamesRequest]) (*connect.Response[typesv1.LabelNamesResponse], error) { 21 return forInstanceUnary(ctx, i, func(instance *instance) (*connect.Response[typesv1.LabelNamesResponse], error) { 22 return instance.LabelNames(ctx, req) 23 }) 24 } 25 26 // ProfileTypes returns the possible profile types. 27 func (i *Ingester) ProfileTypes(ctx context.Context, req *connect.Request[ingestv1.ProfileTypesRequest]) (*connect.Response[ingestv1.ProfileTypesResponse], error) { 28 return forInstanceUnary(ctx, i, func(instance *instance) (*connect.Response[ingestv1.ProfileTypesResponse], error) { 29 return instance.ProfileTypes(ctx, req) 30 }) 31 } 32 33 // Series returns labels series for the given set of matchers. 34 func (i *Ingester) Series(ctx context.Context, req *connect.Request[ingestv1.SeriesRequest]) (*connect.Response[ingestv1.SeriesResponse], error) { 35 return forInstanceUnary(ctx, i, func(instance *instance) (*connect.Response[ingestv1.SeriesResponse], error) { 36 return instance.Series(ctx, req) 37 }) 38 } 39 40 // BlockMetadata returns the metadata of the instance's blocks 41 func (i *Ingester) BlockMetadata(ctx context.Context, req *connect.Request[ingestv1.BlockMetadataRequest]) (*connect.Response[ingestv1.BlockMetadataResponse], error) { 42 return forInstanceUnary(ctx, i, func(instance *instance) (*connect.Response[ingestv1.BlockMetadataResponse], error) { 43 return instance.BlockMetadata(ctx, req) 44 }) 45 } 46 47 func (i *Ingester) MergeProfilesStacktraces(ctx context.Context, stream *connect.BidiStream[ingestv1.MergeProfilesStacktracesRequest, ingestv1.MergeProfilesStacktracesResponse]) error { 48 return forInstanceStream(ctx, i, stream, func(instance *instance) error { 49 return instance.MergeProfilesStacktraces(ctx, stream) 50 }) 51 } 52 53 func (i *Ingester) MergeProfilesLabels(ctx context.Context, stream *connect.BidiStream[ingestv1.MergeProfilesLabelsRequest, ingestv1.MergeProfilesLabelsResponse]) error { 54 return forInstanceStream(ctx, i, stream, func(instance *instance) error { 55 return instance.MergeProfilesLabels(ctx, stream) 56 }) 57 } 58 59 func (i *Ingester) MergeProfilesPprof(ctx context.Context, stream *connect.BidiStream[ingestv1.MergeProfilesPprofRequest, ingestv1.MergeProfilesPprofResponse]) error { 60 return forInstanceStream(ctx, i, stream, func(instance *instance) error { 61 return instance.MergeProfilesPprof(ctx, stream) 62 }) 63 } 64 65 func (i *Ingester) MergeSpanProfile(ctx context.Context, stream *connect.BidiStream[ingestv1.MergeSpanProfileRequest, ingestv1.MergeSpanProfileResponse]) error { 66 return forInstanceStream(ctx, i, stream, func(instance *instance) error { 67 return instance.MergeSpanProfile(ctx, stream) 68 }) 69 } 70 71 func (i *Ingester) GetProfileStats(ctx context.Context, req *connect.Request[typesv1.GetProfileStatsRequest]) (*connect.Response[typesv1.GetProfileStatsResponse], error) { 72 return forInstanceUnary(ctx, i, func(instance *instance) (*connect.Response[typesv1.GetProfileStatsResponse], error) { 73 return instance.GetProfileStats(ctx, req) 74 }) 75 } 76 77 func (i *Ingester) GetBlockStats(ctx context.Context, req *connect.Request[ingestv1.GetBlockStatsRequest]) (*connect.Response[ingestv1.GetBlockStatsResponse], error) { 78 return forInstanceUnary(ctx, i, func(instance *instance) (*connect.Response[ingestv1.GetBlockStatsResponse], error) { 79 return instance.GetBlockStats(ctx, req) 80 }) 81 }