summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xbin/dtmc.in85
-rwxr-xr-xbin/transactor.in18
2 files changed, 94 insertions, 9 deletions
diff --git a/bin/dtmc.in b/bin/dtmc.in
new file mode 100755
index 0000000..9424ce4
--- /dev/null
+++ b/bin/dtmc.in
@@ -0,0 +1,85 @@
+#!/bin/sh
+set -euo pipefail
+
+
+usage() {
+ cat <<-'EOF'
+ Usage:
+ dtmc backup DBFILE TODIR
+ dtmc gc DBFILE
+ EOF
+}
+
+
+ACTION="${1:-}"
+DBFILE="${2:-}"
+TODIR="${3:-}"
+
+if [ -z "$ACTION" ]; then
+ echo 'Missing ACTION.' >&2
+ usage >&2
+ exit 2
+fi
+
+if [ -z "$DBFILE" ]; then
+ echo 'Missing DBFILE.' >&2
+ usage >&2
+ exit 2
+fi
+
+if [ "$ACTION" = 'backup' ] && [ -z "$TODIR" ]; then
+ echo 'Missing TODIR.' >&2
+ usage >&2
+ exit 2
+fi
+
+
+
+lastroot() (
+ cd "$TODIR"/datomic/roots
+ find * | sort -n | tail -n1
+)
+
+backupcmd() {
+ java \
+ -server \
+ -Xms4g \
+ -Xmx4g \
+ --class-path '@SYSCONFDIR@/:@JAVADIR@/peer.jar' \
+ clojure.main \
+ -m backup \
+ "$@"
+}
+
+
+case "$ACTION" in
+ (backup)
+ backupcmd backup datomic:sql://app?jdbc:sqlite:"$DBFILE" file:"$TODIR"/datomic
+ backupcmd verify file:"$TODIR"/datomic true "$(lastroot)"
+ sqlite3 "$DBFILE" ".backup '$TODIR/sqlite.db'"
+ {
+ sqlite3 "$DBFILE" .dump > "$TODIR"/dump.sql.next
+ mv "$TODIR"/dump.sql.next "$TODIR"/dump.sql
+ }
+ {
+ sqlite3 "$TODIR"/restored.db < @SYSCONFDIR@/init.sql > /dev/null
+ backupcmd restore file:"$TODIR"/datomic datomic:sql://app?jdbc:sqlite:"$TODIR"/restored.db
+ }
+ ;;
+ (gc)
+ exec java \
+ -server \
+ -Xms4g \
+ -Xmx4g \
+ --class-path '@SYSCONFDIR@/:@JAVADIR@/peer.jar' \
+ clojure.main \
+ -m datomic.tools.gc-db \
+ datomic:sql://app?jdbc:sqlite:"$DBFILE" \
+ "$(date --date="$(date +'%Y-%m-01') - 3 months" -Is)"
+ ;;
+ (*)
+ printf 'Bad ACTION: "%s"\n' "$ACTION" >&2
+ usage >&2
+ exit 2
+ ;;
+esac
diff --git a/bin/transactor.in b/bin/transactor.in
index 96ae405..29dfd95 100755
--- a/bin/transactor.in
+++ b/bin/transactor.in
@@ -37,15 +37,15 @@ FILE="$1"
sqlite3 "$FILE" < @SYSCONFDIR@/init.sql > /dev/null
exec java \
- -server \
- -Djava.security.manager=allow \
- -Xms4g \
- -Xmx4g \
- -XX:+UseG1GC \
- -XX:MaxGCPauseMillis=50 \
- --class-path '@SYSCONFDIR@/:@JAVADIR@/*' \
- clojure.main \
- --main datomic.launcher \
+ -server \
+ -Djava.security.manager=allow \
+ -Xms4g \
+ -Xmx4g \
+ -XX:+UseG1GC \
+ -XX:MaxGCPauseMillis=50 \
+ --class-path '@SYSCONFDIR@/:@JAVADIR@/transactor.jar' \
+ clojure.main \
+ --main datomic.launcher \
<(
sed \
-e "s|@PORT@|$PORT|g" \