From 2f28add9546cb6ee8d26136758fa7825f7afd144 Mon Sep 17 00:00:00 2001
From: Simon Belak <simon.belak@gmail.com>
Date: Wed, 20 Sep 2017 20:04:38 +0200
Subject: [PATCH] add cleanup task

---
 ...anup_temporary_computation_job_results.clj | 45 +++++++++++++++++++
 1 file changed, 45 insertions(+)
 create mode 100644 src/metabase/task/cleanup_temporary_computation_job_results.clj

diff --git a/src/metabase/task/cleanup_temporary_computation_job_results.clj b/src/metabase/task/cleanup_temporary_computation_job_results.clj
new file mode 100644
index 00000000000..f48976feba7
--- /dev/null
+++ b/src/metabase/task/cleanup_temporary_computation_job_results.clj
@@ -0,0 +1,45 @@
+(ns metabase.task.cleanup-temporary-computation-job-results
+  "Tasks "
+  (:require [clj-time.core :as t]
+            [clojurewerkz.quartzite
+             [jobs :as jobs]
+             [triggers :as triggers]]
+            [clojurewerkz.quartzite.schedule.daily-interval :as interval]
+            [metabase.task :as task]
+            [toucan.db :as db]))
+
+(def ^:private temporary-result-lifetime (t/minutes 1))
+
+(defn- cleanup-temporary-results!
+  []
+  (db/delete! 'ComputationJobResult
+    :created_at [:< (-> (t/now)
+                        (t/minus temporary-result-lifetime)
+                        str)]))
+
+(def ^:private ^:const cleanup-job-key     "metabase.task.cleanup-temporary-computation-job-results.job")
+(def ^:private ^:const cleanup-trigger-key "metabase.task.cleanup-temporary-computation-job-results.trigger")
+
+(jobs/defjob Cleanup
+  [ctx]
+  (cleanup-temporary-results!))
+
+(defonce ^:private cleanup-job (atom nil))
+(defonce ^:private cleanup-trigger (atom nil))
+
+(defn task-init
+  "Automatically called during startup; start the job for sending pulses."
+  []
+  (reset! cleanup-job (jobs/build
+                       (jobs/of-type Cleanup)
+                       (jobs/with-identity (jobs/key cleanup-job-key))))
+  (reset! cleanup-trigger (triggers/build
+                           (triggers/with-identity
+                             (triggers/key cleanup-trigger-key))
+                           (triggers/start-now)
+                           (triggers/with-schedule
+                             ;; once per day at 3AM
+                             (interval/schedule
+                              (interval/starting-daily-at
+                               (interval/time-of-day 03 00 00))))))
+  (task/schedule-task! @cleanup-job @cleanup-trigger))
-- 
GitLab