diff --git a/src/metabase/public_settings.clj b/src/metabase/public_settings.clj index 897e1d438bc453b53521583c2adb02835e145a01..507c5346cc3931ca852f998e83a4f162145517ba 100644 --- a/src/metabase/public_settings.clj +++ b/src/metabase/public_settings.clj @@ -108,7 +108,10 @@ :type :integer :default 1000 :setter (fn [new-value] - (when (> new-value global-max-caching-kb) + (when (and new-value + (> (cond-> new-value + (string? new-value) Integer/parseInt) + global-max-caching-kb)) (throw (IllegalArgumentException. (str (tru "Failed setting `query-caching-max-kb` to {0}." new-value) diff --git a/test/metabase/public_settings_test.clj b/test/metabase/public_settings_test.clj index dd3badfd9e80923ec26c2c8c561441932b247a0c..f5914711b636f747047c2ab44a2aad6746ec4bf7 100644 --- a/test/metabase/public_settings_test.clj +++ b/test/metabase/public_settings_test.clj @@ -49,3 +49,10 @@ (i18n/with-user-locale zz [(= zz (i18n/user-locale)) (tru "Host")]))) + +;; Make sure Max Cache Entry Size can be set via with a string value, which is what comes back from the API (#9143) +(expect + "1000" + ;; use with temp value macro so original value gets reset after test run + (tu/with-temporary-setting-values [query-caching-max-kb nil] + (public-settings/query-caching-max-kb "1000")))