diff --git a/backend/scripts/start-dev b/backend/scripts/start-dev index a7f0045d1..d9ba4b1ce 100755 --- a/backend/scripts/start-dev +++ b/backend/scripts/start-dev @@ -15,7 +15,7 @@ export PENPOT_FLAGS="\ enable-fdata-storage-objets-map \ disable-secure-session-cookies \ enable-smtp \ - enable-webhooks"; + enable-access-tokens"; set -ex diff --git a/backend/src/app/http/errors.clj b/backend/src/app/http/errors.clj index 6ca7d7f68..4b22cb493 100644 --- a/backend/src/app/http/errors.clj +++ b/backend/src/app/http/errors.clj @@ -81,7 +81,7 @@ (let [explain (ex/explain data)] {::yrs/status 400 ::yrs/body (-> data - (dissoc ::s/problems ::s/value) + (dissoc ::s/problems ::s/value ::s/spec) (cond-> explain (assoc :explain explain)))}) (= code :params-validation) diff --git a/backend/src/app/worker.clj b/backend/src/app/worker.clj index 05c27f7f8..1c7bcfd1b 100644 --- a/backend/src/app/worker.clj +++ b/backend/src/app/worker.clj @@ -574,8 +574,11 @@ (l/trace :hint "register cron task" :id id :cron (str cron)) (db/exec-one! conn [sql:upsert-cron-task id (str cron) (str cron)])))) -(def sql:lock-cron-task - "select id from scheduled_task where id=? for update skip locked") +(defn- lock-scheduled-task! + [conn id] + (let [sql (str "SELECT id FROM scheduled_task " + " WHERE id=? FOR UPDATE SKIP LOCKED")] + (some? (db/exec-one! conn [sql (d/name id)])))) (defn- execute-cron-task [{:keys [::db/pool] :as cfg} {:keys [id] :as task}] @@ -583,11 +586,16 @@ {:name (str "penpot/cront-task/" id)} (try (db/with-atomic [conn pool] - (when (db/exec-one! conn [sql:lock-cron-task (d/name id)]) + (db/exec-one! conn ["SET statement_timeout=0;"]) + (db/exec-one! conn ["SET idle_in_transaction_session_timeout=0;"]) + (when (lock-scheduled-task! conn id) (l/trace :hint "cron: execute task" :task-id id) - ((:fn task) task))) + ((:fn task) task)) + (db/rollback! conn)) + (catch InterruptedException _ (l/debug :hint "cron: task interrupted" :task-id id)) + (catch Throwable cause (binding [l/*context* (get-error-context cause task)] (l/error :hint "cron: unhandled exception on running task"