From 1cc611a61e61239c7be8dfe4bc8601971c8c5ff2 Mon Sep 17 00:00:00 2001 From: Joshua Hesketh Date: Mon, 4 Nov 2024 16:52:03 +1100 Subject: [PATCH] MQE: Fix handling of string results (#9803) This would previously panic after the query was closed (cherry picked from commit dcbf3f4b6e4caf1533247493baed68271a14a514) --- pkg/streamingpromql/engine_test.go | 2 ++ pkg/streamingpromql/query.go | 2 ++ 2 files changed, 4 insertions(+) diff --git a/pkg/streamingpromql/engine_test.go b/pkg/streamingpromql/engine_test.go index 8ad786e5896..78fd4002bcc 100644 --- a/pkg/streamingpromql/engine_test.go +++ b/pkg/streamingpromql/engine_test.go @@ -251,10 +251,12 @@ func TestNewInstantQuery_Strings(t *testing.T) { q, err := mimirEngine.NewInstantQuery(ctx, storage, nil, expr, time.Now()) require.NoError(t, err) mimir := q.Exec(context.Background()) + q.Close() q, err = prometheusEngine.NewInstantQuery(ctx, storage, nil, expr, time.Now()) require.NoError(t, err) prometheus := q.Exec(context.Background()) + q.Close() testutils.RequireEqualResults(t, expr, prometheus, mimir) } diff --git a/pkg/streamingpromql/query.go b/pkg/streamingpromql/query.go index 0243e478676..bd3467b86bb 100644 --- a/pkg/streamingpromql/query.go +++ b/pkg/streamingpromql/query.go @@ -781,6 +781,8 @@ func (q *Query) Close() { types.VectorPool.Put(v, q.memoryConsumptionTracker) case promql.Scalar: // Nothing to do, we already returned the slice in populateScalarFromScalarOperator. + case promql.String: + // Nothing to do as strings don't come from a pool default: panic(fmt.Sprintf("unknown result value type %T", q.result.Value)) }