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