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 0000000000000000000000000000000000000000..f48976feba7f42dcb6fd500816a70c69cb583261 --- /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))