File tree Expand file tree Collapse file tree 7 files changed +92
-0
lines changed
Expand file tree Collapse file tree 7 files changed +92
-0
lines changed Original file line number Diff line number Diff line change 1+ /.clj-kondo /
2+ /.lsp /
Original file line number Diff line number Diff line change 1+ /.cpcache /
Original file line number Diff line number Diff line change 1+ FROM apache/iceberg-rest-fixture:1.9.0 AS base
2+
3+ FROM clojure:temurin-17-tools-deps-1.12.0.1530-bookworm-slim
4+
5+ COPY --from=base /usr/lib/iceberg-rest/iceberg-rest-adapter.jar /opt/server/iceberg-rest-adapter.jar
6+
7+ RUN set -xeu && \
8+ apt-get update && \
9+ apt-get install -y --no-install-recommends curl && \
10+ rm -rf /var/lib/apt/lists/*
11+
12+ WORKDIR /opt/server/
13+
14+ COPY src /opt/server/src
15+ COPY deps.edn /opt/server/
16+
17+ RUN clojure -P
18+
19+ CMD ["clojure" , "-M:run" ]
Original file line number Diff line number Diff line change 1+ {:deps {http-kit/http-kit {:mvn/version " 2.8.0" }
2+ compojure/compojure {:mvn/version " 1.7.1" }
3+ ring/ring-devel {:mvn/version " 1.14.1" }}
4+ :aliases
5+ {:run {:main-opts [" -m" " iceberg" ]}
6+ :fmt/check {:extra-deps {cljfmt/cljfmt {:mvn/version " 0.9.2" }}
7+ :main-opts [" --main" " cljfmt.main" " check" ]}
8+ :fmt/fix {:extra-deps {cljfmt/cljfmt {:mvn/version " 0.9.2" }}
9+ :main-opts [" --main" " cljfmt.main" " fix" ]}}}
Original file line number Diff line number Diff line change 1+ (ns iceberg
2+ (:require
3+ [clojure.java.process :as proc]
4+ [org.httpkit.client :as client]
5+ [org.httpkit.server :as server]
6+ [ring.middleware.reload :refer [wrap-reload]]
7+ [compojure.core :refer [defroutes POST]]))
8+
9+ (def PORT 8191 )
10+
11+ (defn start-server
12+ []
13+ (proc/start
14+ {:out :inherit
15+ :err :inherit }
16+ " java" " -jar" " iceberg-rest-adapter.jar" ))
17+
18+ (defonce server (atom (start-server )))
19+
20+ (defn server-healthy?
21+ []
22+ (-> (client/get " http://127.0.0.1:8181/v1/config" )
23+ deref
24+ :status
25+ (= 200 )))
26+
27+ (defn handle-restart
28+ [_request]
29+ (println " Terminating process..." )
30+ (.destroy @server)
31+ (.waitFor @server)
32+ (println " Starting new process..." )
33+ (reset! server (start-server ))
34+ (println " Waiting for server to be up..." )
35+ (while (not (server-healthy? )))
36+ (println " New server up." )
37+ {:status 204 })
38+
39+ (defroutes app-routes
40+ (POST " /restart" request (handle-restart request)))
41+
42+ (defn- block-forever
43+ []
44+ (while true
45+ (Thread/sleep 60000 )))
46+
47+ (defn -main
48+ [& _args]
49+ (try
50+ (println " starting server on port" PORT)
51+ (server/run-server (wrap-reload #'app-routes) {:port PORT})
52+ (println " started server on port" PORT)
53+ (block-forever )
54+ (catch Exception e
55+ (println (.getMessage e))
56+ (.printStackTrace e)
57+ (System/exit 1 ))
58+ (finally
59+ (.destroy @server))))
Original file line number Diff line number Diff line change 1+ 1.9.0.0
Original file line number Diff line number Diff line change 1+ # -*- mode: dockerfile; -*-
12ARG BUILD_FROM=clojure:temurin-17-tools-deps-1.12.0.1530-bookworm-slim
23ARG RUN_FROM=eclipse-temurin:11-jdk-ubi9-minimal
34
You can’t perform that action at this time.
0 commit comments