diff --git a/Dockerfile b/Dockerfile index 88dad42aa..e3574f899 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,7 @@ RUN apt-get update && apt-get upgrade -y && \ rm -rf /var/lib/apt/lists/ RUN mkdir -p /app/data && chown 1001:1001 /app/data -COPY target/blaze-standalone.jar /app/ +COPY target/blaze-0.18.4-standalone.jar /app/ WORKDIR /app USER 1001 @@ -16,4 +16,4 @@ ENV INDEX_DB_DIR="/app/data/index" ENV TRANSACTION_DB_DIR="/app/data/transaction" ENV RESOURCE_DB_DIR="/app/data/resource" -CMD ["java", "-jar", "blaze-standalone.jar", "-m", "blaze.core"] +CMD ["java", "-jar", "blaze-0.18.4-standalone.jar"] diff --git a/Makefile b/Makefile index 6a3dfc2af..dd2196dc3 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,10 @@ lint-root: lint: $(MODULES) lint-root -test-root: +prep: + clojure -X:deps prep + +test-root: prep clojure -M:test:kaocha --profile :ci test: $(MODULES) test-root @@ -20,13 +23,16 @@ clean-root: clean: $(MODULES) clean-root -uberjar: - clojure -X:depstar uberjar :jar target/blaze-standalone.jar +uberjar: prep + clojure -T:build uber outdated: clojure -M:outdated deps-tree: - clojure -Stree + clojure -X:deps tree + +deps-list: + clojure -X:deps list -.PHONY: $(MODULES) lint-root lint test-root test test-coverage clean-root clean uberjar outdated deps-tree +.PHONY: $(MODULES) lint-root lint prep test-root test test-coverage clean-root clean uberjar outdated deps-tree deps-list diff --git a/build.clj b/build.clj new file mode 100644 index 000000000..8f28a8d0d --- /dev/null +++ b/build.clj @@ -0,0 +1,41 @@ +(ns build + (:require [clojure.tools.build.api :as b])) + +(def lib 'samply/blaze) +(def version "0.18.4") +(def class-dir "target/classes") +(def basis (b/create-basis {:project "deps.edn"})) +(def uber-file (format "target/%s-%s-standalone.jar" (name lib) version)) + +(defn clean [_] + (b/delete {:path "target"})) + +(defn uber [_] + (clean nil) + (b/copy-dir {:src-dirs ["src" "resources"] + :target-dir class-dir}) + (b/compile-clj {:basis basis + :src-dirs ["src"] + :class-dir class-dir + :compile-opts + {:direct-linking true + :elide-meta [:doc :file :line :added]}}) + (b/uber {:class-dir class-dir + :uber-file uber-file + :basis basis + :main 'blaze.core + :exclude + ["^about.html" + "^META-INF/versions/\\d+/module-info.class" + "^HISTORY-JAVA.md" + "^dse_protocol_v\\d.spec" + "^native_protocol_v\\d.spec" + ".*-musl.so$" + ".*-ppc64le.so$" + ".*-s390x.so$" + ".*-linux32.so$" + ".*.dll$" + ".*.jnilib$"] + :conflict-handlers + {"META-INF/io.netty.versions.properties" :append + :default :warn}})) diff --git a/deps.edn b/deps.edn index 21184dd8d..6970f5e48 100644 --- a/deps.edn +++ b/deps.edn @@ -44,11 +44,11 @@ {:mvn/version "2.0.5"}} :aliases - {:depstar - {:replace-deps - {com.github.seancorfield/depstar - {:mvn/version "2.1.303"}} - :ns-default hf.depstar} + {:build + {:deps + {io.github.clojure/tools.build + {:git/tag "v0.8.5" :git/sha "9c738da"}} + :ns-default build} :test {:extra-paths ["dev" "test"] diff --git a/docs/deployment/manual-deployment.md b/docs/deployment/manual-deployment.md index 09f9a7dce..2050b7ed4 100644 --- a/docs/deployment/manual-deployment.md +++ b/docs/deployment/manual-deployment.md @@ -7,7 +7,7 @@ Blaze runs on the JVM and comes as single JAR file. Download the most recent ver After the download, you can start blaze with the following command (Linux, macOS): ```sh -java -jar blaze-0.18.4-standalone.jar -m blaze.core +java -jar blaze-0.18.4-standalone.jar ``` Blaze will run with an in-memory, volatile database for testing and demo purposes. @@ -17,14 +17,14 @@ Blaze can be run with durable storage by setting the environment variables `STOR Under Linux/macOS: ```sh -STORAGE=standalone java -jar blaze-0.18.4-standalone.jar -m blaze.core +STORAGE=standalone java -jar blaze-0.18.4-standalone.jar ``` Under Windows, you need to set the Environment variables in the PowerShell before starting Blaze: ```powershell $Env:STORAGE="standalone" -java -jar blaze-0.18.4-standalone.jar -m blaze.core +java -jar blaze-0.18.4-standalone.jar ``` This will create three directories called `index`, `transaction` and `resource` inside the current working directory, one for each database part used. diff --git a/modules/byte-string/deps.edn b/modules/byte-string/deps.edn index 578eddcae..97f5f86de 100644 --- a/modules/byte-string/deps.edn +++ b/modules/byte-string/deps.edn @@ -1,4 +1,4 @@ -{:paths ["src" "resources"] +{:paths ["src"] :deps {com.google.guava/guava diff --git a/modules/cql/Makefile b/modules/cql/Makefile index d6fbd2a65..14c70c245 100644 --- a/modules/cql/Makefile +++ b/modules/cql/Makefile @@ -1,6 +1,9 @@ lint: clj-kondo --lint src test deps.edn +prep: + clojure -X:deps prep + cql-test: wget http://cql.hl7.org/tests.zip echo "0d48a7441c43b6ee46e71d73decfa0cf4ea81e2ce70951f20e9163c3bebfc49a tests.zip" | sha256sum --check --status @@ -9,13 +12,19 @@ cql-test: # See: https://github.com/HL7/cql/pull/69 sed -i.bak '277d' cql-test/CqlArithmeticFunctionsTest.xml -test: cql-test +test: cql-test prep clojure -M:test:kaocha --profile :ci -test-coverage: cql-test +test-coverage: cql-test prep clojure -M:test:coverage +deps-tree: + clojure -X:deps tree + +deps-list: + clojure -X:deps list + clean: rm -rf .clj-kondo/.cache .cpcache cql-test target -.PHONY: lint test test-coverage clean +.PHONY: lint prep test test-coverage deps-tree deps-list clean diff --git a/modules/db-resource-store-cassandra/Makefile b/modules/db-resource-store-cassandra/Makefile index 196a53ceb..8eb60f27a 100644 --- a/modules/db-resource-store-cassandra/Makefile +++ b/modules/db-resource-store-cassandra/Makefile @@ -1,13 +1,16 @@ lint: clj-kondo --lint src test deps.edn -test: +prep: + clojure -X:deps prep + +test: prep clojure -M:test:kaocha --profile :ci -test-coverage: +test-coverage: prep clojure -M:test:coverage clean: rm -rf .clj-kondo/.cache .cpcache target -.PHONY: lint test test-coverage clean +.PHONY: lint prep test test-coverage clean diff --git a/modules/db-resource-store/Makefile b/modules/db-resource-store/Makefile index 196a53ceb..8eb60f27a 100644 --- a/modules/db-resource-store/Makefile +++ b/modules/db-resource-store/Makefile @@ -1,13 +1,16 @@ lint: clj-kondo --lint src test deps.edn -test: +prep: + clojure -X:deps prep + +test: prep clojure -M:test:kaocha --profile :ci -test-coverage: +test-coverage: prep clojure -M:test:coverage clean: rm -rf .clj-kondo/.cache .cpcache target -.PHONY: lint test test-coverage clean +.PHONY: lint prep test test-coverage clean diff --git a/modules/db-tx-log-kafka/Makefile b/modules/db-tx-log-kafka/Makefile index 196a53ceb..8eb60f27a 100644 --- a/modules/db-tx-log-kafka/Makefile +++ b/modules/db-tx-log-kafka/Makefile @@ -1,13 +1,16 @@ lint: clj-kondo --lint src test deps.edn -test: +prep: + clojure -X:deps prep + +test: prep clojure -M:test:kaocha --profile :ci -test-coverage: +test-coverage: prep clojure -M:test:coverage clean: rm -rf .clj-kondo/.cache .cpcache target -.PHONY: lint test test-coverage clean +.PHONY: lint prep test test-coverage clean diff --git a/modules/db-tx-log/Makefile b/modules/db-tx-log/Makefile index 196a53ceb..8eb60f27a 100644 --- a/modules/db-tx-log/Makefile +++ b/modules/db-tx-log/Makefile @@ -1,13 +1,16 @@ lint: clj-kondo --lint src test deps.edn -test: +prep: + clojure -X:deps prep + +test: prep clojure -M:test:kaocha --profile :ci -test-coverage: +test-coverage: prep clojure -M:test:coverage clean: rm -rf .clj-kondo/.cache .cpcache target -.PHONY: lint test test-coverage clean +.PHONY: lint prep test test-coverage clean diff --git a/modules/db/Makefile b/modules/db/Makefile index 9810d3bfb..d6dff4670 100644 --- a/modules/db/Makefile +++ b/modules/db/Makefile @@ -1,13 +1,16 @@ lint: clj-kondo --lint src test test-perf deps.edn -test: +prep: + clojure -X:deps prep + +test: prep clojure -M:test:kaocha --profile :ci -test-coverage: +test-coverage: prep clojure -M:test:coverage clean: rm -rf .clj-kondo/.cache .cpcache target -.PHONY: lint test test-coverage clean +.PHONY: lint prep test test-coverage clean diff --git a/modules/byte-string/resources/data_readers.clj b/modules/db/test/data_readers.clj similarity index 100% rename from modules/byte-string/resources/data_readers.clj rename to modules/db/test/data_readers.clj diff --git a/modules/interaction/Makefile b/modules/interaction/Makefile index 196a53ceb..8eb60f27a 100644 --- a/modules/interaction/Makefile +++ b/modules/interaction/Makefile @@ -1,13 +1,16 @@ lint: clj-kondo --lint src test deps.edn -test: +prep: + clojure -X:deps prep + +test: prep clojure -M:test:kaocha --profile :ci -test-coverage: +test-coverage: prep clojure -M:test:coverage clean: rm -rf .clj-kondo/.cache .cpcache target -.PHONY: lint test test-coverage clean +.PHONY: lint prep test test-coverage clean diff --git a/modules/metrics/Makefile b/modules/metrics/Makefile index 196a53ceb..23d3127ff 100644 --- a/modules/metrics/Makefile +++ b/modules/metrics/Makefile @@ -1,13 +1,16 @@ lint: clj-kondo --lint src test deps.edn -test: +build: + clojure -T:build compile + +test: build clojure -M:test:kaocha --profile :ci -test-coverage: +test-coverage: build clojure -M:test:coverage clean: rm -rf .clj-kondo/.cache .cpcache target -.PHONY: lint test test-coverage clean +.PHONY: lint build test test-coverage clean diff --git a/modules/metrics/build.clj b/modules/metrics/build.clj new file mode 100644 index 000000000..c5a0c72fb --- /dev/null +++ b/modules/metrics/build.clj @@ -0,0 +1,12 @@ +(ns build + (:refer-clojure :exclude [compile]) + (:require [clojure.tools.build.api :as b])) + + +(defn compile [_] + (b/compile-clj + {:basis (b/create-basis + {:project "deps.edn" + :compile-opts {:direct-linking true}}) + :class-dir "target/classes" + :ns-compile ['blaze.metrics.Collector]})) diff --git a/modules/metrics/deps.edn b/modules/metrics/deps.edn index 114e6fc17..6c51fdf7c 100644 --- a/modules/metrics/deps.edn +++ b/modules/metrics/deps.edn @@ -1,15 +1,25 @@ -{:deps +{:paths ["src" "target/classes"] + + :deps {blaze/module-base {:local/root "../module-base"} - com.rpl/proxy-plus - {:mvn/version "0.0.8"} - io.prometheus/simpleclient_hotspot {:mvn/version "0.16.0"}} + :deps/prep-lib + {:alias :build + :fn compile + :ensure "target/classes"} + :aliases - {:test + {:build + {:deps + {io.github.clojure/tools.build + {:git/tag "v0.8.5" :git/sha "9c738da"}} + :ns-default build} + + :test {:extra-paths ["test"] :extra-deps @@ -29,4 +39,4 @@ {:mvn/version "1.2.4"}} :main-opts ["-m" "cloverage.coverage" "--codecov" "-p" "src" "-s" "test" - "-e" ".*spec$"]}}} + "-e" ".*spec$" -e "blaze.metrics.Collector"]}}} diff --git a/modules/metrics/src/blaze/metrics/Collector.clj b/modules/metrics/src/blaze/metrics/Collector.clj new file mode 100644 index 000000000..f082a0f86 --- /dev/null +++ b/modules/metrics/src/blaze/metrics/Collector.clj @@ -0,0 +1,18 @@ +(ns blaze.metrics.Collector + (:gen-class + :extends io.prometheus.client.Collector + :constructors {[Object] []} + :init init + :state fn + :main false)) + + +(set! *warn-on-reflection* true) + + +(defn -init [fn] + [[] fn]) + + +(defn -collect-void [this] + ((.-fn ^blaze.metrics.Collector this))) diff --git a/modules/metrics/src/blaze/metrics/core.clj b/modules/metrics/src/blaze/metrics/core.clj index 7a89bdff0..a77f1ec91 100644 --- a/modules/metrics/src/blaze/metrics/core.clj +++ b/modules/metrics/src/blaze/metrics/core.clj @@ -1,8 +1,7 @@ (ns blaze.metrics.core (:require [clojure.core.protocols :as p] - [clojure.datafy :as datafy] - [com.rpl.proxy-plus :refer [proxy+]]) + [clojure.datafy :as datafy]) (:import [io.prometheus.client Collector Collector$MetricFamilySamples Collector$MetricFamilySamples$Sample @@ -15,9 +14,7 @@ (defmacro collector [& body] - `(proxy+ [] - Collector - (~'collect [~'_] ~@body))) + `(blaze.metrics.Collector. (fn [] ~@body))) (defn collect diff --git a/modules/operation-measure-evaluate-measure/Makefile b/modules/operation-measure-evaluate-measure/Makefile index 196a53ceb..8eb60f27a 100644 --- a/modules/operation-measure-evaluate-measure/Makefile +++ b/modules/operation-measure-evaluate-measure/Makefile @@ -1,13 +1,16 @@ lint: clj-kondo --lint src test deps.edn -test: +prep: + clojure -X:deps prep + +test: prep clojure -M:test:kaocha --profile :ci -test-coverage: +test-coverage: prep clojure -M:test:coverage clean: rm -rf .clj-kondo/.cache .cpcache target -.PHONY: lint test test-coverage clean +.PHONY: lint prep test test-coverage clean diff --git a/modules/page-store-cassandra/Makefile b/modules/page-store-cassandra/Makefile index 196a53ceb..8eb60f27a 100644 --- a/modules/page-store-cassandra/Makefile +++ b/modules/page-store-cassandra/Makefile @@ -1,13 +1,16 @@ lint: clj-kondo --lint src test deps.edn -test: +prep: + clojure -X:deps prep + +test: prep clojure -M:test:kaocha --profile :ci -test-coverage: +test-coverage: prep clojure -M:test:coverage clean: rm -rf .clj-kondo/.cache .cpcache target -.PHONY: lint test test-coverage clean +.PHONY: lint prep test test-coverage clean diff --git a/modules/page-store/Makefile b/modules/page-store/Makefile index 196a53ceb..8eb60f27a 100644 --- a/modules/page-store/Makefile +++ b/modules/page-store/Makefile @@ -1,13 +1,16 @@ lint: clj-kondo --lint src test deps.edn -test: +prep: + clojure -X:deps prep + +test: prep clojure -M:test:kaocha --profile :ci -test-coverage: +test-coverage: prep clojure -M:test:coverage clean: rm -rf .clj-kondo/.cache .cpcache target -.PHONY: lint test test-coverage clean +.PHONY: lint prep test test-coverage clean diff --git a/modules/rest-api/Makefile b/modules/rest-api/Makefile index 196a53ceb..8eb60f27a 100644 --- a/modules/rest-api/Makefile +++ b/modules/rest-api/Makefile @@ -1,13 +1,16 @@ lint: clj-kondo --lint src test deps.edn -test: +prep: + clojure -X:deps prep + +test: prep clojure -M:test:kaocha --profile :ci -test-coverage: +test-coverage: prep clojure -M:test:coverage clean: rm -rf .clj-kondo/.cache .cpcache target -.PHONY: lint test test-coverage clean +.PHONY: lint prep test test-coverage clean diff --git a/modules/rest-util/Makefile b/modules/rest-util/Makefile index 196a53ceb..8eb60f27a 100644 --- a/modules/rest-util/Makefile +++ b/modules/rest-util/Makefile @@ -1,13 +1,16 @@ lint: clj-kondo --lint src test deps.edn -test: +prep: + clojure -X:deps prep + +test: prep clojure -M:test:kaocha --profile :ci -test-coverage: +test-coverage: prep clojure -M:test:coverage clean: rm -rf .clj-kondo/.cache .cpcache target -.PHONY: lint test test-coverage clean +.PHONY: lint prep test test-coverage clean diff --git a/modules/rocksdb/Makefile b/modules/rocksdb/Makefile index 196a53ceb..8eb60f27a 100644 --- a/modules/rocksdb/Makefile +++ b/modules/rocksdb/Makefile @@ -1,13 +1,16 @@ lint: clj-kondo --lint src test deps.edn -test: +prep: + clojure -X:deps prep + +test: prep clojure -M:test:kaocha --profile :ci -test-coverage: +test-coverage: prep clojure -M:test:coverage clean: rm -rf .clj-kondo/.cache .cpcache target -.PHONY: lint test test-coverage clean +.PHONY: lint prep test test-coverage clean diff --git a/modules/thread-pool-executor-collector/Makefile b/modules/thread-pool-executor-collector/Makefile index 196a53ceb..8eb60f27a 100644 --- a/modules/thread-pool-executor-collector/Makefile +++ b/modules/thread-pool-executor-collector/Makefile @@ -1,13 +1,16 @@ lint: clj-kondo --lint src test deps.edn -test: +prep: + clojure -X:deps prep + +test: prep clojure -M:test:kaocha --profile :ci -test-coverage: +test-coverage: prep clojure -M:test:coverage clean: rm -rf .clj-kondo/.cache .cpcache target -.PHONY: lint test test-coverage clean +.PHONY: lint prep test test-coverage clean diff --git a/pom.xml b/pom.xml deleted file mode 100644 index 1b3254d8f..000000000 --- a/pom.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - 4.0.0 - samply - blaze - 0.18.4 - blaze - - A FHIR Store with internal, fast CQL Evaluation Engine - https://github.com/samply/blaze - - - Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 - - - - - - Alexander Kiel - - - - diff --git a/src/blaze/core.clj b/src/blaze/core.clj index c371b9064..000f90b5c 100644 --- a/src/blaze/core.clj +++ b/src/blaze/core.clj @@ -2,7 +2,8 @@ (:require [blaze.system :as system] [clojure.string :as str] - [taoensso.timbre :as log])) + [taoensso.timbre :as log]) + (:gen-class)) (defn- max-memory []