From f517f8f368b6be2a9b2e58f0f1cd4115c054187e Mon Sep 17 00:00:00 2001
From: Josip Mrden <josip.mrden@memgraph.io>
Date: Wed, 20 Mar 2024 13:33:09 +0100
Subject: [PATCH] Fix

---
 src/query/procedure/mg_procedure_impl.cpp | 11 +++++++----
 src/query/procedure/mg_procedure_impl.hpp |  2 +-
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/query/procedure/mg_procedure_impl.cpp b/src/query/procedure/mg_procedure_impl.cpp
index 8db56fdf0..70d67080c 100644
--- a/src/query/procedure/mg_procedure_impl.cpp
+++ b/src/query/procedure/mg_procedure_impl.cpp
@@ -4088,10 +4088,7 @@ mgp_error mgp_execute_query(mgp_graph *graph, mgp_memory *memory, const char *qu
         auto *interpreter = new memgraph::query::Interpreter(instance, instance->dbms_handler->Get());
         interpreter->SetUser(graph->ctx->user_or_role);
 
-        // instance->interpreters.WithLock([&interpreter](auto &interpreters) { interpreters.insert(&interpreter); });
-        // memgraph::utils::OnScopeExit erase_interpreter([&] {
-        //   instance->interpreters.WithLock([&interpreter](auto &interpreters) { interpreters.erase(&interpreter); });
-        // });
+        instance->interpreters.WithLock([interpreter](auto &interpreters) { interpreters.insert(interpreter); });
 
         const auto query_params = CreateQueryParams(params);
 
@@ -4108,6 +4105,12 @@ mgp_error mgp_execute_query(mgp_graph *graph, mgp_memory *memory, const char *qu
       result);
 }
 
+mgp_execution_result::~mgp_execution_result() {
+  auto *instance = memgraph::query::InterpreterContext::getInstance();
+  instance->interpreters.WithLock([this](auto &interpreters) { interpreters.erase(interpreter); });
+  interpreter = nullptr;
+}
+
 mgp_error mgp_fetch_execution_headers(mgp_execution_result *exec_result, mgp_execution_headers **result) {
   return WrapExceptions([exec_result]() { return &exec_result->headers; }, result);
 }
diff --git a/src/query/procedure/mg_procedure_impl.hpp b/src/query/procedure/mg_procedure_impl.hpp
index 4923cd35e..d14734862 100644
--- a/src/query/procedure/mg_procedure_impl.hpp
+++ b/src/query/procedure/mg_procedure_impl.hpp
@@ -1021,7 +1021,7 @@ struct mgp_execution_rows {
 struct mgp_execution_result {
   mgp_execution_result(memgraph::query::Interpreter *interpreter, mgp_execution_headers headers)
       : interpreter(interpreter), headers(headers) {}
-  ~mgp_execution_result() = default;
+  ~mgp_execution_result();
 
   memgraph::query::Interpreter *interpreter;
   mgp_execution_headers headers;