Skip to content
Snippets Groups Projects
Unverified Commit 4711aa31 authored by Noah Moss's avatar Noah Moss Committed by GitHub
Browse files

Don't store analytics checksum if audit loading failed (#40097)

parent ca0ab834
No related branches found
No related tags found
No related merge requests found
......@@ -249,7 +249,6 @@
(ia-content->plugins (plugins/plugins-dir))
(let [[last-checksum current-checksum] (get-last-and-current-checksum)]
(when (should-load-audit? (load-analytics-content) last-checksum current-checksum)
(last-analytics-checksum! current-checksum)
(log/info (str "Loading Analytics Content from: " (instance-analytics-plugin-dir (plugins/plugins-dir))))
;; The EE token might not have :serialization enabled, but audit features should still be able to use it.
(let [report (log/with-no-logs
......@@ -258,7 +257,9 @@
:token-check? false))]
(if (not-empty (:errors report))
(log/info (str "Error Loading Analytics Content: " (pr-str report)))
(log/info (str "Loading Analytics Content Complete (" (count (:seen report)) ") entities loaded."))))))
(do
(log/info (str "Loading Analytics Content Complete (" (count (:seen report)) ") entities loaded."))
(last-analytics-checksum! current-checksum))))))
(when-let [audit-db (t2/select-one :model/Database :is_audit true)]
(adjust-audit-db-to-host! audit-db))))
......
......@@ -5,6 +5,7 @@
[clojure.string :as str]
[clojure.test :refer [deftest is testing use-fixtures]]
[metabase-enterprise.audit-db :as audit-db]
[metabase-enterprise.serialization.cmd :as serialization.cmd]
[metabase-enterprise.serialization.v2.backfill-ids :as serdes.backfill]
[metabase.core :as mbc]
[metabase.models.data-permissions :as data-perms]
......@@ -141,6 +142,17 @@
(is (= :metabase-enterprise.audit-db/no-op
(audit-db/ensure-audit-db-installed!))))))))
(deftest checksum-not-recorded-when-load-fails-test
(mt/test-drivers #{:postgres :h2 :mysql}
(t2/delete! :model/Database :is_audit true)
(testing "If audit content loading throws an exception, the checksum should not be stored"
(audit-db/last-analytics-checksum! 0)
(with-redefs [serialization.cmd/v2-load-internal! (fn [& _] (throw (Exception. "Audit loading failed")))]
(is (thrown-with-msg? Exception
#"Audit loading failed"
(audit-db/ensure-audit-db-installed!)))
(is (= 0 (audit-db/last-analytics-checksum)))))))
(deftest should-load-audit?-test
(testing "load-analytics-content + checksums dont match => load"
(is (= (#'audit-db/should-load-audit? true 1 3) true)))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment