From db5e48dc3391807b41f2329c90e03c2979318e19 Mon Sep 17 00:00:00 2001 From: Arve Knudsen Date: Sun, 8 Sep 2024 14:39:13 +0200 Subject: [PATCH] promql.Engine.Close: No-op if nil (#14861) Signed-off-by: Arve Knudsen --- promql/engine.go | 4 ++++ promql/engine_test.go | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/promql/engine.go b/promql/engine.go index dd855c6d2d..e55f154d23 100644 --- a/promql/engine.go +++ b/promql/engine.go @@ -435,6 +435,10 @@ func NewEngine(opts EngineOpts) *Engine { // Close closes ng. func (ng *Engine) Close() error { + if ng == nil { + return nil + } + if ng.activeQueryTracker != nil { return ng.activeQueryTracker.Close() } diff --git a/promql/engine_test.go b/promql/engine_test.go index 947c0e1ed8..db399d8656 100644 --- a/promql/engine_test.go +++ b/promql/engine_test.go @@ -3019,6 +3019,29 @@ func TestEngineOptsValidation(t *testing.T) { } } +func TestEngine_Close(t *testing.T) { + t.Run("nil engine", func(t *testing.T) { + var ng *promql.Engine + require.NoError(t, ng.Close()) + }) + + t.Run("non-nil engine", func(t *testing.T) { + ng := promql.NewEngine(promql.EngineOpts{ + Logger: nil, + Reg: nil, + MaxSamples: 0, + Timeout: 100 * time.Second, + NoStepSubqueryIntervalFn: nil, + EnableAtModifier: true, + EnableNegativeOffset: true, + EnablePerStepStats: false, + LookbackDelta: 0, + EnableDelayedNameRemoval: true, + }) + require.NoError(t, ng.Close()) + }) +} + func TestInstantQueryWithRangeVectorSelector(t *testing.T) { engine := newTestEngine(t)