diff options
Diffstat (limited to 'bin/transactor.in')
| -rwxr-xr-x | bin/transactor.in | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/bin/transactor.in b/bin/transactor.in new file mode 100755 index 0000000..c47f2c7 --- /dev/null +++ b/bin/transactor.in @@ -0,0 +1,79 @@ +#!/bin/sh +set -euo pipefail + + +usage() { + cat <<-'EOF' + Usage: + transactor [-p PORT] FILE + EOF +} + + + +VALCACHESIZE= +PORT=50200 +CACHEDIR='cache' +TEMPDATADIR='tmp' +while getopts 'p:C:S:T:' flag; do + case "$flag" in + (p) + PORT="$OPTARG" + ;; + (C) + CACHEDIR="$OPTARG" + ;; + (S) + VALCACHESIZE="$OPTARG" + ;; + (T) + TEMPDATADIR="$OPTARG" + ;; + (*) + usage >&2 + exit 2 + ;; + esac +done +shift $((OPTIND - 1)) + +if [ -z "${1:-}" ]; then + echo 'Missing FILE.' >&2 + usage >&2 + exit 2 +fi +FILE="$1" + + + +if [ -z "$VALCACHESIZE" ]; then + VALCACHESIZE="$( + df -Pk "$FILE" | + tail -n1 | + awk '{printf "%.0f\n", $2 / (1024 * 1024)}' + )" +fi + +sqlite3 "$FILE" < @SYSCONFDIR@/init.sql >&2 + +set -x +exec java \ + -server \ + -Djava.security.manager=allow \ + -Xms4g \ + -Xmx4g \ + -XX:+UseG1GC \ + -XX:MaxGCPauseMillis=50 \ + --class-path 'etc/:lib/*' \ + clojure.main \ + --main datomic.launcher \ + <( + sed \ + -e "s|@PORT@|$PORT|g" \ + -e "s|@FILE@|$FILE|g" \ + -e "s|@CACHEDIR@|$CACHEDIR|g" \ + -e "s|@TEMPDATADIR@|$TEMPDATADIR|g" \ + -e "s|@VALCACHESIZE@|$VALCACHESIZE|g" \ + @SYSCONFDIR@/transactor.properties.tmpl | + tee /dev/stderr + ) |
