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