0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-02-02 20:39:09 -05:00

🎉 Add /readyz http endpoint for backend & exporter

This commit is contained in:
Andrey Antukh 2022-09-13 07:06:23 +02:00
parent 36f30c611e
commit 028e0c5b70
6 changed files with 51 additions and 35 deletions

View file

@ -516,7 +516,7 @@
[_ {:keys [executor session] :as cfg}] [_ {:keys [executor session] :as cfg}]
(let [cfg (update cfg :provider d/without-nils)] (let [cfg (update cfg :provider d/without-nils)]
["" {:middleware [[(:middleware session)] ["" {:middleware [[(:middleware session)]
[hmw/with-promise-async executor] [hmw/with-dispatch executor]
[hmw/with-config cfg] [hmw/with-config cfg]
[provider-lookup] [provider-lookup]
]} ]}

View file

@ -10,7 +10,7 @@
[app.common.logging :as l] [app.common.logging :as l]
[app.common.transit :as t] [app.common.transit :as t]
[app.http.errors :as errors] [app.http.errors :as errors]
[app.http.middleware :as middleware] [app.http.middleware :as mw]
[app.metrics :as mtx] [app.metrics :as mtx]
[app.worker :as wrk] [app.worker :as wrk]
[clojure.spec.alpha :as s] [clojure.spec.alpha :as s]
@ -144,14 +144,16 @@
(defmethod ig/init-key ::router (defmethod ig/init-key ::router
[_ {:keys [ws session metrics assets feedback] :as cfg}] [_ {:keys [ws session metrics assets feedback] :as cfg}]
(rr/router (rr/router
[["" {:middleware [[middleware/server-timing] [["" {:middleware [[mw/server-timing]
[middleware/format-response] [mw/format-response]
[middleware/params] [mw/params]
[middleware/parse-request] [mw/parse-request]
[middleware/errors errors/handle] [mw/errors errors/handle]
[middleware/restrict-methods]]} [mw/restrict-methods]]}
["/metrics" {:handler (::mtx/handler metrics)
:allowed-methods #{:get}}]
["/metrics" {:handler (::mtx/handler metrics)}]
["/assets" {:middleware [(:middleware session)]} ["/assets" {:middleware [(:middleware session)]}
["/by-id/:id" {:handler (:objects-handler assets)}] ["/by-id/:id" {:handler (:objects-handler assets)}]
["/by-file-media-id/:id" {:handler (:file-objects-handler assets)}] ["/by-file-media-id/:id" {:handler (:file-objects-handler assets)}]
@ -167,7 +169,7 @@
:handler ws :handler ws
:allowed-methods #{:get}}] :allowed-methods #{:get}}]
["/api" {:middleware [[middleware/cors] ["/api" {:middleware [[mw/cors]
[(:middleware session)]]} [(:middleware session)]]}
["/audit/events" {:handler (:audit-handler cfg) ["/audit/events" {:handler (:audit-handler cfg)
:allowed-methods #{:post}}] :allowed-methods #{:post}}]
@ -176,4 +178,3 @@
(:doc-routes cfg) (:doc-routes cfg)
(:oidc-routes cfg) (:oidc-routes cfg)
(:rpc-routes cfg)]]])) (:rpc-routes cfg)]]]))

View file

@ -378,9 +378,12 @@
(defmethod ig/init-key ::routes (defmethod ig/init-key ::routes
[_ {:keys [session pool executor] :as cfg}] [_ {:keys [session pool executor] :as cfg}]
[["/readyz" {:middleware [[mw/with-dispatch executor]
[mw/with-config cfg]]
:handler health-handler}]
["/dbg" {:middleware [[(:middleware session)] ["/dbg" {:middleware [[(:middleware session)]
[with-authorization pool] [with-authorization pool]
[mw/with-promise-async executor] [mw/with-dispatch executor]
[mw/with-config cfg]]} [mw/with-config cfg]]}
["" {:handler index-handler}] ["" {:handler index-handler}]
["/health" {:handler health-handler}] ["/health" {:handler health-handler}]
@ -391,4 +394,4 @@
["/file/export" {:handler export-handler}] ["/file/export" {:handler export-handler}]
["/file/import" {:handler import-handler}] ["/file/import" {:handler import-handler}]
["/file/data" {:handler file-data-handler}] ["/file/data" {:handler file-data-handler}]
["/file/changes" {:handler file-changes-handler}]]) ["/file/changes" {:handler file-changes-handler}]]])

View file

@ -195,8 +195,9 @@
{:name ::restrict-methods {:name ::restrict-methods
:compile compile-restrict-methods}) :compile compile-restrict-methods})
(def with-promise-async (def with-dispatch
{:compile {:name ::with-dispatch
:compile
(fn [& _] (fn [& _]
(fn [handler executor] (fn [handler executor]
(fn [request respond raise] (fn [request respond raise]
@ -206,7 +207,8 @@
(p/catch raise)))))}) (p/catch raise)))))})
(def with-config (def with-config
{:compile {:name ::with-config
:compile
(fn [& _] (fn [& _]
(fn [handler config] (fn [handler config]
(fn (fn

View file

@ -236,7 +236,6 @@
respond (cond-> respond respond (cond-> respond
(renew-session? session) (renew-session? session)
(wrap-respond session))] (wrap-respond session))]
(handler request respond raise)))))) (handler request respond raise))))))
(catch Throwable cause (catch Throwable cause

View file

@ -124,6 +124,16 @@
(let [token (.get ^js cookies cookie-name)] (let [token (.get ^js cookies cookie-name)]
(handler (cond-> exchange token (assoc :request/auth-token token)))))) (handler (cond-> exchange token (assoc :request/auth-token token))))))
(defn- wrap-health
"Add /healthz entry point intercept."
[handler]
(fn [{:keys [:request/path] :as exchange}]
(if (= path "/readyz")
(assoc exchange
:response/status 200
:response/body "OK")
(handler exchange))))
(defn- create-adapter (defn- create-adapter
[handler] [handler]
(fn [req res] (fn [req res]
@ -149,6 +159,7 @@
(defn init (defn init
[] []
(let [handler (-> handlers/handler (let [handler (-> handlers/handler
(wrap-health)
(wrap-auth "auth-token") (wrap-auth "auth-token")
(wrap-response-format) (wrap-response-format)
(wrap-params) (wrap-params)