MCPcopy Create free account
hub / github.com/rilldata/rill / newMetricsViewCacheKeyResolver

Function newMetricsViewCacheKeyResolver

runtime/resolvers/metricsview_cache_key.go:40–102  ·  view source on GitHub ↗
(ctx context.Context, opts *runtime.ResolverOptions)

Source from the content-addressed store, hash-verified

38}
39
40func newMetricsViewCacheKeyResolver(ctx context.Context, opts *runtime.ResolverOptions) (runtime.Resolver, error) {
41 tr := &metricsViewCacheKeyProps{}
42 if err := mapstructureutil.WeakDecode(opts.Properties, tr); err != nil {
43 return nil, err
44 }
45
46 args := &metricsViewCacheKeyResolverArgs{}
47 if err := mapstructureutil.WeakDecode(opts.Args, args); err != nil {
48 return nil, err
49 }
50
51 ctrl, err := opts.Runtime.Controller(ctx, opts.InstanceID)
52 if err != nil {
53 return nil, err
54 }
55
56 res, err := ctrl.Get(ctx, &runtimev1.ResourceName{Kind: runtime.ResourceKindMetricsView, Name: tr.MetricsView}, false)
57 if err != nil {
58 return nil, err
59 }
60
61 mv := res.GetMetricsView().State.ValidSpec
62 if mv == nil {
63 return nil, fmt.Errorf("metrics view %q is invalid", res.Meta.Name.Name)
64 }
65
66 span := trace.SpanFromContext(ctx)
67 if span.SpanContext().IsValid() {
68 span.SetAttributes(
69 attribute.String("metrics_view", tr.MetricsView),
70 attribute.Bool("streaming", res.GetMetricsView().State.Streaming),
71 )
72 }
73
74 security, err := opts.Runtime.ResolveSecurity(ctx, opts.InstanceID, opts.Claims, res)
75 if err != nil {
76 return nil, err
77 }
78
79 if !security.CanAccess() {
80 return nil, runtime.ErrForbidden
81 }
82
83 var userAttrs map[string]any
84 if opts.Claims != nil {
85 userAttrs = opts.Claims.UserAttributes
86 }
87
88 executor, err := executor.New(ctx, opts.Runtime, opts.InstanceID, mv, res.GetMetricsView().State.Streaming, security, args.Priority, userAttrs)
89 if err != nil {
90 return nil, err
91 }
92
93 return &metricsViewCacheKeyResolver{
94 runtime: opts.Runtime,
95 instanceID: opts.InstanceID,
96 mvName: tr.MetricsView,
97 streaming: res.GetMetricsView().State.Streaming,

Callers

nothing calls this directly

Calls 9

WeakDecodeFunction · 0.92
NewFunction · 0.92
ControllerMethod · 0.80
ResolveSecurityMethod · 0.80
CanAccessMethod · 0.80
GetMethod · 0.65
ErrorfMethod · 0.65
StringMethod · 0.65
GetMetricsViewMethod · 0.45

Tested by

no test coverage detected