diff --git a/backend/src/uxbox/tasks.clj b/backend/src/uxbox/tasks.clj index ea25a1ce4..c97ec8198 100644 --- a/backend/src/uxbox/tasks.clj +++ b/backend/src/uxbox/tasks.clj @@ -51,7 +51,7 @@ [{:id "every 1 hour" :cron #uxbox/cron "1 1 */1 * * ? *" :fn #'uxbox.tasks.demo-gc/handler - :props {:foo "bar"}}]) + :props {:foo 1}}]) (defstate scheduler :start (as-> (impl/scheduler-verticle {:schedule schedule}) $$ diff --git a/backend/src/uxbox/tasks/demo_gc.clj b/backend/src/uxbox/tasks/demo_gc.clj index d40e990b9..3d3948e73 100644 --- a/backend/src/uxbox/tasks/demo_gc.clj +++ b/backend/src/uxbox/tasks/demo_gc.clj @@ -16,5 +16,8 @@ (defn handler {:uxbox.tasks/name "demo-gc"} [{:keys [props] :as task}] - (Thread/sleep 500) - (prn (.getName (Thread/currentThread)) "demo-gc" (:id task) (:props task))) + (try + (Thread/sleep 100) + (prn (.getName (Thread/currentThread)) "demo-gc" (:id task) (:props task)) + (catch Throwable e + nil))) diff --git a/backend/src/uxbox/tasks/impl.clj b/backend/src/uxbox/tasks/impl.clj index 9de5eec2b..d9f1d452f 100644 --- a/backend/src/uxbox/tasks/impl.clj +++ b/backend/src/uxbox/tasks/impl.clj @@ -180,14 +180,11 @@ (db/with-atomic [conn db/pool] (-> (db/query-one conn [sql:lock-scheduled-task id]) (p/then (fn [result] - (if result - (do - (prn (thr-name) "execute-scheduled-task" "task-locked") - (-> (p/do! ((:fn stask) stask)) - (p/catch (fn [e] - (log/warn "Excepton happens on executing scheduled task" e) - nil)))) - (prn (thr-name) "execute-scheduled-task" "task-already-locked")))) + (when result + (-> (p/do! ((:fn stask) stask)) + (p/catch (fn [e] + (log/warn "Excepton happens on executing scheduled task" e) + nil)))))) (p/finally (fn [v e] (-> (vc/current-context) (schedule-task stask))))))) @@ -196,14 +193,13 @@ [cron] (s/assert tm/cron? cron) (let [^Instant now (tm/now) - ^Instant next (.toInstant (.getNextValidTimeAfter cron (Date/from now))) + ^Instant next (tm/next-valid-instant-from cron now) ^Duration duration (Duration/between now next)] (.toMillis duration))) (defn- schedule-task [ctx {:keys [cron] :as stask}] (let [ms (ms-until-valid cron)] - (prn (thr-name) "schedule-task" (:id stask) ms) (vt/schedule! ctx (assoc stask :ctx ctx ::vt/once true