Skip to content

Commit d795ebd

Browse files
authored
Merge pull request #13 from thalesmg/iceberg-restart
feat: add iceberg-rest-fixture image
2 parents bd6a38a + 7d020bf commit d795ebd

File tree

7 files changed

+92
-0
lines changed

7 files changed

+92
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/.clj-kondo/
2+
/.lsp/

iceberg-rest-fixture/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/.cpcache/

iceberg-rest-fixture/Dockerfile

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
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"]

iceberg-rest-fixture/deps.edn

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
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"]}}}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
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))))

iceberg-rest-fixture/vsn

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1.9.0.0

spark-query/Dockerfile-uberjar

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# -*- mode: dockerfile; -*-
12
ARG BUILD_FROM=clojure:temurin-17-tools-deps-1.12.0.1530-bookworm-slim
23
ARG RUN_FROM=eclipse-temurin:11-jdk-ubi9-minimal
34

0 commit comments

Comments
 (0)