From 73f2d7d97b617775a5f3b6ff55039bc2d805878f Mon Sep 17 00:00:00 2001 From: Anshul Khandelwal <12948312+k-anshul@users.noreply.github.com> Date: Tue, 4 Feb 2025 15:20:36 +0530 Subject: [PATCH 1/4] close resolver results --- runtime/health.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/runtime/health.go b/runtime/health.go index d3a2eb791fa..1acf552f207 100644 --- a/runtime/health.go +++ b/runtime/health.go @@ -138,7 +138,7 @@ func (r *Runtime) InstanceHealth(ctx context.Context, instanceID string) (*Insta continue } } - _, err = r.Resolve(ctx, &ResolveOptions{ + resolverRes, err := r.Resolve(ctx, &ResolveOptions{ InstanceID: ctrl.InstanceID, Resolver: "metrics_time_range", ResolverProperties: map[string]any{"metrics_view": mv.Meta.Name.Name}, @@ -152,6 +152,7 @@ func (r *Runtime) InstanceHealth(ctx context.Context, instanceID string) (*Insta if err != nil { mvHealth.Err = err.Error() } + _ = resolverRes.Close() res.MetricsViews[mv.Meta.Name.Name] = mvHealth } From e5bc45713c9b4a71a5bb9e1342c518878f6905b4 Mon Sep 17 00:00:00 2001 From: Anshul Khandelwal <12948312+k-anshul@users.noreply.github.com> Date: Tue, 4 Feb 2025 15:21:29 +0530 Subject: [PATCH 2/4] close resolver results --- runtime/health.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/runtime/health.go b/runtime/health.go index 1acf552f207..abf968046a8 100644 --- a/runtime/health.go +++ b/runtime/health.go @@ -151,8 +151,9 @@ func (r *Runtime) InstanceHealth(ctx context.Context, instanceID string) (*Insta } if err != nil { mvHealth.Err = err.Error() + } else { + _ = resolverRes.Close() } - _ = resolverRes.Close() res.MetricsViews[mv.Meta.Name.Name] = mvHealth } From b59e69a3d6f6b6465327f33e6a1acd878a5da931 Mon Sep 17 00:00:00 2001 From: Anshul Khandelwal <12948312+k-anshul@users.noreply.github.com> Date: Tue, 4 Feb 2025 15:55:21 +0530 Subject: [PATCH 3/4] optimistic locking --- runtime/resolver.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/runtime/resolver.go b/runtime/resolver.go index b68fca82562..9b5dde78d6d 100644 --- a/runtime/resolver.go +++ b/runtime/resolver.go @@ -221,13 +221,19 @@ func NewDriverResolverResult(result *drivers.Result) ResolverResult { } type driverResolverResult struct { - rows *drivers.Result + rows *drivers.Result + closeErr error } var _ ResolverResult = &driverResolverResult{} // Close implements ResolverResult. func (r *driverResolverResult) Close() error { + if r.closeErr != nil { + return r.closeErr + } + // it is okay to call Close multiple times + // so we don't need to track if it was already called return r.rows.Close() } @@ -239,6 +245,7 @@ func (r *driverResolverResult) Schema() *runtimev1.StructType { // Next implements ResolverResult. func (r *driverResolverResult) Next() (map[string]any, error) { if !r.rows.Next() { + r.closeErr = r.rows.Close() return nil, io.EOF } row := make(map[string]any) @@ -251,6 +258,9 @@ func (r *driverResolverResult) Next() (map[string]any, error) { // MarshalJSON implements ResolverResult. func (r *driverResolverResult) MarshalJSON() ([]byte, error) { + defer func() { + r.closeErr = r.rows.Close() + }() var out []map[string]any for r.rows.Next() { row := make(map[string]any) From 38c81f4eb610e1964da72f16e5704bd3d0c700d6 Mon Sep 17 00:00:00 2001 From: Anshul Khandelwal <12948312+k-anshul@users.noreply.github.com> Date: Tue, 4 Feb 2025 15:56:37 +0530 Subject: [PATCH 4/4] fix executor usage --- runtime/resolvers/metricsview_time_range.go | 1 + 1 file changed, 1 insertion(+) diff --git a/runtime/resolvers/metricsview_time_range.go b/runtime/resolvers/metricsview_time_range.go index ea3189d73b6..b2979ff2ee5 100644 --- a/runtime/resolvers/metricsview_time_range.go +++ b/runtime/resolvers/metricsview_time_range.go @@ -87,6 +87,7 @@ func newMetricsViewTimeRangeResolver(ctx context.Context, opts *runtime.Resolver } func (r *metricsViewTimeRangeResolver) Close() error { + r.executor.Close() return nil }