diff options
| -rw-r--r-- | datomic-pro-1.0.7469/bin/bridge.clj | 2 | ||||
| -rwxr-xr-x | datomic-pro-1.0.7469/bin/classpath | 8 | ||||
| -rwxr-xr-x | datomic-pro-1.0.7469/bin/console | 4 | ||||
| -rw-r--r-- | datomic-pro-1.0.7469/bin/logback.xml | 65 | ||||
| -rwxr-xr-x | datomic-pro-1.0.7469/bin/maven-install | 6 | ||||
| -rwxr-xr-x | datomic-pro-1.0.7469/bin/run | 4 | ||||
| -rwxr-xr-x | datomic-pro-1.0.7469/bin/shell | 4 | ||||
| -rw-r--r-- | datomic-pro-1.0.7469/bin/shell.clj | 52 | ||||
| -rwxr-xr-x | datomic-pro-1.0.7469/bin/transactor | 39 | ||||
| -rw-r--r-- | datomic-pro-1.0.7469/create-db.bsh | 25 | ||||
| -rw-r--r-- | datomic-pro-1.0.7469/init.sql | 15 | ||||
| -rw-r--r-- | datomic-pro-1.0.7469/transactor.properties | 192 |
12 files changed, 416 insertions, 0 deletions
diff --git a/datomic-pro-1.0.7469/bin/bridge.clj b/datomic-pro-1.0.7469/bin/bridge.clj new file mode 100644 index 0000000..f8ee570 --- /dev/null +++ b/datomic-pro-1.0.7469/bin/bridge.clj @@ -0,0 +1,2 @@ +(require '[datomic.slf4j.bridge :as bridge]) +(datomic.slf4j.bridge/install) diff --git a/datomic-pro-1.0.7469/bin/classpath b/datomic-pro-1.0.7469/bin/classpath new file mode 100755 index 0000000..60aee6a --- /dev/null +++ b/datomic-pro-1.0.7469/bin/classpath @@ -0,0 +1,8 @@ +#!/bin/sh + +if [ -e "src/clj/datomic/db.clj" ]; then + echo $CLOJURE_JAR${CLOJURE_JAR+:}target/classes:build/src:bin:src/clj:test/src:samples/clj:`cat build/maven-classpath`:$DATOMIC_EXT_CLASSPATH +else + s="`echo *transactor*.jar`:lib/*" + echo resources:${s// /:}:samples/clj:bin:$DATOMIC_EXT_CLASSPATH +fi diff --git a/datomic-pro-1.0.7469/bin/console b/datomic-pro-1.0.7469/bin/console new file mode 100755 index 0000000..caeb51d --- /dev/null +++ b/datomic-pro-1.0.7469/bin/console @@ -0,0 +1,4 @@ +#!/bin/sh +set -euo pipefail + +exec java -server -Xmx1g -cp 'lib/console/*:lib/*' clojure.main -i "bin/bridge.clj" --main datomic.console "$@" diff --git a/datomic-pro-1.0.7469/bin/logback.xml b/datomic-pro-1.0.7469/bin/logback.xml new file mode 100644 index 0000000..009e1c3 --- /dev/null +++ b/datomic-pro-1.0.7469/bin/logback.xml @@ -0,0 +1,65 @@ +<configuration> + + <!-- prevent per-message overhead for jul logging calls, e.g. Hornet --> + <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"> + <resetJUL>true</resetJUL> + </contextListener> + + <appender name="MAIN" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${DATOMIC_LOG_DIR:-log}/%d{yyyy-MM-dd}.log</fileNamePattern> + <maxHistory>72</maxHistory> + </rollingPolicy> + <prudent>true</prudent> <!-- multi jvm safe, slower --> + <encoder> + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-10contextName %logger{36} - %msg%n</pattern> + </encoder> + </appender> + + <logger name="datomic.cast2slf4j" level="DEBUG"/> + + <!-- uncomment to log storage access --> + <!-- <logger name="datomic.kv-cluster" level="DEBUG"/> --> + + <!-- uncomment to log transactor heartbeat --> + <!-- <logger name="datomic.lifecycle" level="DEBUG"/> --> + + <!-- uncomment to log transactions (transactor side) --> + <!-- <logger name="datomic.transaction" level="DEBUG"/> --> + + <!-- uncomment to log transactions (peer side) --> + <!-- <logger name="datomic.peer" level="DEBUG"/> --> + + <!-- uncomment to log the transactor log --> + <!-- <logger name="datomic.log" level="DEBUG"/> --> + + <!-- uncomment to log peer connection to transactor --> + <!-- <logger name="datomic.connector" level="DEBUG"/> --> + + <!-- uncomment to log storage gc --> + <!-- <logger name="datomic.garbage" level="DEBUG"/> --> + + <!-- uncomment to log indexing jobs --> + <!-- <logger name="datomic.index" level="DEBUG"/> --> + + <!-- these namespsaces create a ton of log noise --> + <logger name="org.apache.activemq.audit" level="WARN"/> + <logger name="httpclient" level="INFO"/> + <logger name="org.apache.commons.httpclient" level="INFO"/> + <logger name="org.apache.http" level="INFO"/> + <logger name="org.jets3t" level="INFO"/> + <logger name="com.amazonaws" level="INFO"/> + <logger name="com.amazonaws.request" level="WARN"/> + <logger name="sun.rmi" level="INFO"/> + <logger name="datomic.spy.memcached" level="INFO"/> + <logger name="com.ning.http.client.providers.netty" level="INFO"/> + <logger name="org.eclipse.jetty" level="INFO"/> + <logger name="org.hornetq.core.client.impl" level="INFO"/> + <logger name="org.apache.tomcat.jdbc.pool" level="INFO"/> + + <logger name="datomic.cast2slf4j" level="DEBUG"/> + + <root level="info"> + <appender-ref ref="MAIN"/> + </root> +</configuration> diff --git a/datomic-pro-1.0.7469/bin/maven-install b/datomic-pro-1.0.7469/bin/maven-install new file mode 100755 index 0000000..376411b --- /dev/null +++ b/datomic-pro-1.0.7469/bin/maven-install @@ -0,0 +1,6 @@ +#!/bin/bash +echo "Installing peer-1.0.7469" in local maven repository... +mvn install:install-file -DgroupId=com.datomic -DartifactId=peer -Dfile=peer-1.0.7469.jar -DpomFile=pom.xml + +echo Installing memcache-asg-java-client-1.1.0.36.jar in local maven repository... +mvn install:install-file -DgroupId=com.datomic -DartifactId=memcache-asg-java-client -Dfile=lib/memcache-asg-java-client-1.1.0.36.jar -Dversion=1.1.0.36 -Dpackaging=jar
\ No newline at end of file diff --git a/datomic-pro-1.0.7469/bin/run b/datomic-pro-1.0.7469/bin/run new file mode 100755 index 0000000..7aa808a --- /dev/null +++ b/datomic-pro-1.0.7469/bin/run @@ -0,0 +1,4 @@ +#!/bin/sh +set -euo pipefail + +exec java -server -Xmx1g -Xms1g -cp 'bin:datomic.clj:lib/*' clojure.main -i bin/bridge.clj "$@" diff --git a/datomic-pro-1.0.7469/bin/shell b/datomic-pro-1.0.7469/bin/shell new file mode 100755 index 0000000..748763a --- /dev/null +++ b/datomic-pro-1.0.7469/bin/shell @@ -0,0 +1,4 @@ +#!/bin/sh +set -euo pipefail + +exec java -server -Xmx1g -cp 'lib/*' jline.ConsoleRunner clojure.main bin/shell.clj "$@" diff --git a/datomic-pro-1.0.7469/bin/shell.clj b/datomic-pro-1.0.7469/bin/shell.clj new file mode 100644 index 0000000..0686284 --- /dev/null +++ b/datomic-pro-1.0.7469/bin/shell.clj @@ -0,0 +1,52 @@ +;; Copyright (c) Metadata Partners, LLC. +;; All rights reserved. + +(import 'bsh.Interpreter) +(import 'java.io.InputStreamReader) + +(require '[clojure.string :as str] + '[datomic.slf4j.bridge :as bridge]) + +(bridge/install) + +;; make an interpreter wired to console +(def in (InputStreamReader. System/in)) +(def out (System/out)) +(def err (System/err)) + +(def bsh (Interpreter. in out err true)) + +;; import API and keyword constants +(.eval bsh "import datomic.Entity;") +(.eval bsh "import datomic.Connection;") +(.eval bsh "import datomic.Database;") +(.eval bsh "import datomic.Datom;") +(.eval bsh "import datomic.Peer;") +(.eval bsh "import datomic.TxReport;") +(.eval bsh "import datomic.Util;") +(.eval bsh "import datomic.impl.Shell;") +(.eval bsh "import java.io.*;") +(.eval bsh "import java.util.*;") + +;;(.eval bsh "pause() { System.out.println(\"Press enter to continue...\"); (new java.util.Scanner).nextLine(); };") + +(if *command-line-args* + ;; run script file + (do + (let [script (first *command-line-args*) + args (to-array (rest *command-line-args*))] + (.set bsh "args" args) + (.source bsh script))) + ;; run interactive + (do + ;; setup banner and prompt + (.eval bsh "printBanner() { print(\"Datomic Java Shell\"); print (\"Type Shell.help(); for help.\");}") + (.eval bsh "getBshPrompt() { return \"datomic % \"; }") + ;; turn on show so results are visible w/o print + (.setShowResults bsh true) + ;; start Datomic loading + (future (require 'datomic.peer)) + ;; let it run + (.run bsh))) + + diff --git a/datomic-pro-1.0.7469/bin/transactor b/datomic-pro-1.0.7469/bin/transactor new file mode 100755 index 0000000..5cdd394 --- /dev/null +++ b/datomic-pro-1.0.7469/bin/transactor @@ -0,0 +1,39 @@ +#!/bin/bash +cd `dirname $0`/.. + +if [ "$1" == "" ]; then + echo "Usage: $0 properties-file" + exit -1 +fi + +while [ $# -gt 1 ] +do + case "$1" in + -Xmx*) + XMX=$1 + ;; + -Xms*) + XMS=$1 + ;; + *) + JAVA_OPTS="$JAVA_OPTS $1" + ;; + esac + shift +done + +# defaults +if [ "$XMX" == "" ]; then + XMX=-Xmx1g +fi +if [ "$XMS" == "" ]; then + XMS=-Xms1g +fi +if [ "$JAVA_OPTS" == "" ]; then + JAVA_OPTS='-XX:+UseG1GC -XX:MaxGCPauseMillis=50' +fi + +echo "Launching with Java options -server $XMS $XMX $JAVA_OPTS" +exec java -server -cp `bin/classpath` $XMX $XMS $JAVA_OPTS clojure.main --main datomic.launcher "$@" + + diff --git a/datomic-pro-1.0.7469/create-db.bsh b/datomic-pro-1.0.7469/create-db.bsh new file mode 100644 index 0000000..e70851b --- /dev/null +++ b/datomic-pro-1.0.7469/create-db.bsh @@ -0,0 +1,25 @@ +db_name = System.getenv("DATOMIC_DB"); +if (db_name == null || db_name.isEmpty()) { + db_name = "app"; +} +db_uri = "datomic:sql://" + db_name + "?jdbc:sqlite:/usr/storage/sqlite.db"; +for (int i = 0; i < 20; i++) { + Thread.sleep(3000); + System.out.println("Testing connection to database '" + db_name + "'..."); + try { + if (Peer.createDatabase(db_uri)) { + System.out.println("Created database '" + db_name + "'"); + } + try { + new File("/usr/datomic-pro/db_ready").createNewFile(); + } catch (Exception e) { + System.out.println("Could not create file /usr/datomic-pro/db_ready: " + e.getMessage()); + } + System.out.println("Connect using DB URI datomic:sql://" + db_name + "?jdbc:sqlite:<LOCAL/PATH/TO/sqlite.db>"); + System.out.println(" e.g. datomic:sql://app?jdbc:sqlite:./storage/sqlite.db if you mounted ./storage"); + System.exit(0); + } catch (Exception e) { + // System.out.println(e.getMessage()); + } +} +System.out.println("WARNING: Could not create or connect to database " + db_name + " after 10s."); diff --git a/datomic-pro-1.0.7469/init.sql b/datomic-pro-1.0.7469/init.sql new file mode 100644 index 0000000..5c5ef49 --- /dev/null +++ b/datomic-pro-1.0.7469/init.sql @@ -0,0 +1,15 @@ +PRAGMA foreign_keys = ON; +PRAGMA journal_mode = WAL; +PRAGMA synchronous = NORMAL; +PRAGMA mmap_size = 134217728; -- 128 megabytes +PRAGMA journal_size_limit = 67108864; -- 64 megabytes +PRAGMA cache_size = 2000; + +-- datomic schema +CREATE TABLE IF NOT EXISTS datomic_kvs ( + id TEXT NOT NULL, + rev INTEGER, + map TEXT, + val BYTEA, + CONSTRAINT pk_id PRIMARY KEY (id) +); diff --git a/datomic-pro-1.0.7469/transactor.properties b/datomic-pro-1.0.7469/transactor.properties new file mode 100644 index 0000000..f716bd9 --- /dev/null +++ b/datomic-pro-1.0.7469/transactor.properties @@ -0,0 +1,192 @@ +################################################################### + +# protocol=dev +protocol=sql +host=localhost +port=4334 + + + +## OPTIONAL ####################################################### +## The dev: and free: protocols typically use two ports +## starting with the selected :port, but you can specify the +## second (h2) port explicitly, e.g. for virtualization environs +## that do not issue contiguous ports. + +# h2-port=4335 + + +################################################################### +# See https://docs.datomic.com/on-prem/storage.html + +sql-driver-class=org.sqlite.JDBC +sql-url=jdbc:sqlite:storage.db +# sql-url=jdbc:postgresql://localhost:5432/datomic +# sql-user=datomic +# sql-password=datomic + +## The Postgres driver is included with Datomic. For other SQL +## databases, you will need to install the driver on the +## transactor classpath, by copying the file into lib/, +## and place the driver on your peer's classpath. +# sql-driver-class=org.postgresql.Driver + +## Driver specified params, as semicolon-separated pairs. +# Optional +# sql-driver-params=<param1=val1¶m2=val2...> + +## The query used to validate JDBC connection. +# Optional +# sql-validation-query=select 1 + + + +################################################################### +## Security settings for embedded storage (free and dev). + + +## == Passwords == +## Datomic free/dev has an embedded storage engine with default +## passwords. You can supply the 'admin' password explicitly with +## 'storage-admin-password', and rotate that later by moving it to +## 'old-storage-admin-password', supplying a new +## 'storage-admin-password'. +# storage-admin-password= +# old-storage-admin-password= + +## Peers access storage via the 'datomic' user. You can set/rotate +## the password for 'datomic' using 'storage-datomic-password' and +## 'old-storage-datomic-password' as per above. +## NOTE: If you set the password for 'datomic' peers must connect +## using the same password in the connect URI. +## See https://docs.datomic.com/on-prem/clojure/index.html#datomic.api/connect. +# storage-datomic-password= +# old-storage-datomic-password= + +## == Peer access == +## You can control network access to storage by peers via +## 'storage-access', options are 'local' (the default) and 'remote'. +## NOTE: To enable remote access, you must explicitly specify +## the admin and datomic passwords above. +# storage-access=local + + + +################################################################### +# See https://docs.datomic.com/on-prem/capacity.html + +# Launching with Java options -server -Xms1g -Xmx1g -XX:+UseG1GC -XX:MaxGCPauseMillis=50 + +## Recommended settings for -Xmx4g production usage. +# memory-index-threshold=32m +# memory-index-max=512m +# object-cache-max=1g + +## Recommended settings for -Xmx1g usage, e.g. dev laptops. +memory-index-threshold=32m +memory-index-max=256m +object-cache-max=128m + + + +## OPTIONAL ####################################################### + + +## Set to false to disable SSL between the peers and the transactor. +# Default: true +# encrypt-channel=true + +## Data directory is used for dev: and free: storage, and +## as a temporary directory for all storages. +# data-dir=data + +## Transactor will log here, see bin/logback.xml to configure logging. +# log-dir=log + +## Transactor will write process pid here on startup +# pid-file=transactor.pid + + + +## OPTIONAL ####################################################### +# See https://docs.datomic.com/on-prem/valcache.html +## Valcache configuration. +## Set these valcache properties to a directory on an SSD to enable valcache + +# valcache-path= +# valcache-max-gb= + + + +## OPTIONAL ####################################################### +# See https://docs.datomic.com/on-prem/storage.html +## Memcached configuration. + +# memcached=host:port,host:port,... +# memcached-username=datomic +# memcached-password=datomic + + + +## OPTIONAL ####################################################### +# See https://docs.datomic.com/on-prem/capacity.html + + +## Soft limit on the number of concurrent writes to storage. +# Default: 4, Miniumum: 2 +# write-concurrency=4 + +## Soft limit on the number of concurrent reads to storage. +# Default: 2 times write-concurrency, Miniumum: 2 +# read-concurrency=8 + +## Parallelism in index jobs. +# Default: 1, Maximum: 8 +# index-parallelism=1 + + + +## OPTIONAL ####################################################### +# See https://docs.datomic.com/on-prem/aws.html +## Optional settings for rotating logs to S3 +# (Can be auto-generated by bin/datomic ensure-transactor.) + +# aws-s3-log-bucket-id= + + + +## OPTIONAL ####################################################### +# See https://docs.datomic.com/on-prem/aws.html +## Optional settings for Cloudwatch metrics. +# (Can be auto-generated by bin/datomic ensure-transactor.) + +# aws-cloudwatch-region= + +## Pick a unique name to distinguish transactor metrics from different systems. +# aws-cloudwatch-dimension-value=your-system-name + + + +## OPTIONAL ####################################################### +# See https://docs.datomic.com/on-prem/ha.html + + +## The transactor will write a heartbeat into storage on this interval. +## A standby transactor will take over if it sees the heartbeat go +## unwritten for 2x this interval. If your transactor load leads to +## long gc pauses, you can increase this number to prevent the standby +## transactor from unnecessarily taking over during a long gc pause. +# Default: 5000, Miniumum: 5000 +# heartbeat-interval-msec=5000 + + + +## OPTIONAL ####################################################### + + +## The transactor will use this partition for new entities that +## do not explicitly specify a partition. +# Default: :db.part/user +# default-partition=:db.part/user + + |
