Add better logging context report on worker runner

This commit is contained in:
Andrey Antukh
2025-11-04 10:55:14 +01:00
parent c214cc1544
commit 49721c0bcd
3 changed files with 24 additions and 14 deletions

View File

@@ -319,5 +319,9 @@
([key default] ([key default]
(c/get config key default))) (c/get config key default)))
(defn logging-context
[]
{:version/backend (:full version)})
;; Set value for all new threads bindings. ;; Set value for all new threads bindings.
(alter-var-root #'*assert* (constantly (contains? flags :backend-asserts))) (alter-var-root #'*assert* (constantly (contains? flags :backend-asserts)))

View File

@@ -25,15 +25,14 @@
(let [claims (-> {} (let [claims (-> {}
(into (::session/token-claims request)) (into (::session/token-claims request))
(into (::actoken/token-claims request)))] (into (::actoken/token-claims request)))]
{:request/path (:path request) (-> (cf/logging-context)
:request/method (:method request) (assoc :request/path (:path request))
:request/params (:params request) (assoc :request/method (:method request))
:request/user-agent (yreq/get-header request "user-agent") (assoc :request/params (:params request))
:request/ip-addr (inet/parse-request request) (assoc :request/user-agent (yreq/get-header request "user-agent"))
:request/profile-id (:uid claims) (assoc :request/ip-addr (inet/parse-request request))
:version/frontend (or (yreq/get-header request "x-frontend-version") "unknown") (assoc :request/profile-id (:uid claims))
:version/backend (:full cf/version)})) (assoc :version/frontend (or (yreq/get-header request "x-frontend-version") "unknown")))))
(defmulti handle-error (defmulti handle-error
(fn [cause _ _] (fn [cause _ _]

View File

@@ -13,6 +13,7 @@
[app.common.schema :as sm] [app.common.schema :as sm]
[app.common.time :as ct] [app.common.time :as ct]
[app.common.transit :as t] [app.common.transit :as t]
[app.config :as cf]
[app.db :as db] [app.db :as db]
[app.metrics :as mtx] [app.metrics :as mtx]
[app.redis :as rds] [app.redis :as rds]
@@ -60,7 +61,8 @@
(defn get-error-context (defn get-error-context
[_ item] [_ item]
{:params item}) (-> (cf/logging-context)
(assoc :params item)))
(defn- get-task (defn- get-task
[{:keys [::db/pool]} task-id] [{:keys [::db/pool]} task-id]
@@ -213,6 +215,7 @@
:payload payload))) :payload payload)))
(catch Throwable cause (catch Throwable cause
(l/err :hint "unable to decode payload" (l/err :hint "unable to decode payload"
::l/context (cf/logging-context)
:payload payload :payload payload
:length (alength ^String/1 payload) :length (alength ^String/1 payload)
:cause cause)))) :cause cause))))
@@ -236,9 +239,9 @@
:cause cause) :cause cause)
(px/sleep timeout) (px/sleep timeout)
(recur result)) (recur result))
(do
(l/err :hint "unhandled exception on processing task result" (l/err :hint "unhandled exception on processing task result"
:cause cause))))))] ::l/context (cf/logging-context)
:cause cause)))))]
(try (try
(let [key (str/ffmt "penpot.worker.queue:%" queue) (let [key (str/ffmt "penpot.worker.queue:%" queue)
@@ -254,11 +257,14 @@
(if (rds/timeout-exception? cause) (if (rds/timeout-exception? cause)
(do (do
(l/err :hint "redis pop operation timeout, consider increasing redis timeout (will retry in some instants)" (l/err :hint "redis pop operation timeout, consider increasing redis timeout (will retry in some instants)"
::l/context (cf/logging-context)
:timeout timeout :timeout timeout
:cause cause) :cause cause)
(px/sleep timeout)) (px/sleep timeout))
(l/err :hint "unhandled exception" :cause cause)))))) (l/err :hint "unhandled exception"
::l/context (cf/logging-context)
:cause cause))))))
(defn- start-thread! (defn- start-thread!
[{:keys [::id ::queue ::wrk/tenant] :as cfg}] [{:keys [::id ::queue ::wrk/tenant] :as cfg}]
@@ -284,6 +290,7 @@
:queue queue)) :queue queue))
(catch Throwable cause (catch Throwable cause
(l/err :hint "unexpected exception" (l/err :hint "unexpected exception"
::l/context (cf/logging-context)
:id id :id id
:queue queue :queue queue
:cause cause)) :cause cause))