From f8eca1a62090a4697643a83aad25e861157df1a6 Mon Sep 17 00:00:00 2001 From: Joshua Hesketh Date: Mon, 4 Nov 2024 11:55:01 +1100 Subject: [PATCH] MQE: Fix handling of string results This would previously panic after the query was closed --- 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 9c308d7a54a..fc172230024 100644 --- a/pkg/streamingpromql/query.go +++ b/pkg/streamingpromql/query.go @@ -795,6 +795,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)) }