From 9f1cbc3c79f14f157cf60ec9fb029263fe5beceb Mon Sep 17 00:00:00 2001
From: Ngoc Khuat <qn.khuat@gmail.com>
Date: Fri, 2 Aug 2024 16:29:02 +0700
Subject: [PATCH] Reduce memory usage when sending anon stat (#46404)

---
 src/metabase/analytics/stats.clj       | 11 ++++++++---
 test/metabase/analytics/stats_test.clj |  2 ++
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/metabase/analytics/stats.clj b/src/metabase/analytics/stats.clj
index e61d3f413ae..edb168c19b4 100644
--- a/src/metabase/analytics/stats.clj
+++ b/src/metabase/analytics/stats.clj
@@ -362,16 +362,21 @@
 
 ;;; Execution Metrics
 
-(defn summarize-executions
+(defn- summarize-executions
   "Summarize `executions`, by incrementing approriate counts in a summary map."
   ([]
-   (summarize-executions (t2/reducible-select [:model/QueryExecution :executor_id :running_time :error])))
+   (summarize-executions (t2/reducible-query {:select [:executor_id :running_time [[:case
+                                                                                    [:= :error nil ] false
+                                                                                    [:= :error "" ] false
+                                                                                    :else true] :has_error]]
+                                              :from   [:query_execution]})))
   ([executions]
    (reduce summarize-executions {:executions 0, :by_status {}, :num_per_user {}, :num_by_latency {}} executions))
   ([summary execution]
    (-> summary
        (update :executions u/safe-inc)
-       (update-in [:by_status (if (:error execution)
+       ;; MYSQL is returning true as 1, false as 0! what!
+       (update-in [:by_status (if (#{1 true} (:has_error execution))
                                 "failed"
                                 "completed")] u/safe-inc)
        (update-in [:num_per_user (:executor_id execution)] u/safe-inc)
diff --git a/test/metabase/analytics/stats_test.clj b/test/metabase/analytics/stats_test.clj
index 3d4285e6471..329f0fcca68 100644
--- a/test/metabase/analytics/stats_test.clj
+++ b/test/metabase/analytics/stats_test.clj
@@ -222,6 +222,8 @@
 (deftest new-impl-test
   (mt/with-temp [QueryExecution _ (merge query-execution-defaults
                                          {:error "some error"})
+                 QueryExecution _ (merge query-execution-defaults
+                                         {:error "some error"})
                  QueryExecution _ query-execution-defaults]
     (is (= (old-execution-metrics)
            (#'stats/execution-metrics))
-- 
GitLab