From 443adece6de1641dbb0c0d88b4d981e66ee1e4ea Mon Sep 17 00:00:00 2001 From: Cam Saul <1455846+camsaul@users.noreply.github.com> Date: Mon, 9 Mar 2020 16:15:49 -0700 Subject: [PATCH] Potential fixes for occasional cache test failure (#11987) --- .../query_processor/middleware/cache.clj | 1 - .../query_processor/middleware/cache_test.clj | 26 ++++++++++--------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/metabase/query_processor/middleware/cache.clj b/src/metabase/query_processor/middleware/cache.clj index 7ef5f0a11b9..a10f499683e 100644 --- a/src/metabase/query_processor/middleware/cache.clj +++ b/src/metabase/query_processor/middleware/cache.clj @@ -105,7 +105,6 @@ ([] (rf)) ([result] - ;; TODO - what about the final result? Are we ignoring it completely? (a/close! in-chan) (let [duration-ms (- (System/currentTimeMillis) start-time)] (log/info (trs "Query took {0} to run; miminum for cache eligibility is {1}" diff --git a/test/metabase/query_processor/middleware/cache_test.clj b/test/metabase/query_processor/middleware/cache_test.clj index dc17f089fee..22b50089ec0 100644 --- a/test/metabase/query_processor/middleware/cache_test.clj +++ b/test/metabase/query_processor/middleware/cache_test.clj @@ -104,17 +104,18 @@ (let [orig @save-chan*] (try (reset! save-chan* save-chan) - (let [orig impl/serialize-async] - (with-redefs [impl/serialize-async (fn [& args] - (u/prog1 (apply orig args) - (a/go - (let [result (a/<! (:out-chan <>))] - (when (instance? Throwable result) - (a/>!! save-chan (or (:type (ex-data result)) - ::exception)))))))] + (let [orig (var-get #'cache/cache-results-async!)] + (with-redefs [cache/cache-results-async! (fn [query-hash out-chan] + (a/go + (when-let [result (a/<! out-chan)] + (when (instance? Throwable result) + (a/>!! save-chan (or (:type (ex-data result)) + ::exception))))) + (orig query-hash out-chan))] (u/prog1 (thunk) - (is (= expected-result - (mt/wait-for-result save-chan 500)))))) + (testing "waiting for save" + (is (= expected-result + (mt/wait-for-result save-chan 1000))))))) (finally (reset! save-chan* orig)))))) @@ -130,8 +131,9 @@ (try (reset! purge-chan* purge-chan) (u/prog1 (thunk) - (is (= expected-result - (mt/wait-for-result purge-chan 500)))) + (testing "waiting for purge" + (is (= expected-result + (mt/wait-for-result purge-chan 500))))) (finally (reset! purge-chan* orig)))))) (defmacro ^:private wait-for-purge-result {:style/indent 1} [expected-result & body] -- GitLab