Transactor
Running the Transactor
A Datomic transactor performs ACID transactions for a set of databases. You can launch a transactor for one or more databases with the bin/transactor script in the datomic directory:
bin/transactor path/to/transactor-template.properties
For information on launching a second transactor for high availability, see configuring high availability.
If you set a pid-file
in the transactor properties file, Datomic
will write the current process ID to that file on startup.
The transactor startup script accepts JVM arguments, but please note that JVM args other than -Xmx
and -Xms
passed to bin/transactor
(including Java system properties passed via -D
) override Datomic's recommended Java options, including the GC settings.
JVM Argument | Dev Default Setting | Prod Default Setting |
---|---|---|
Max Heap | Xmx1g | Xmx4g |
Initial Heap size | Xms1g | Xms4g |
GC Settings | -XX:+UseG1GC | -XX:+UseG1GC |
-XX:MaxGCPauseMillis=50 | -XX:MaxGCPauseMillis=50 |
For information on supported storages and how transactors interact with peers see storage services and peers.
Health Check Endpoint
A web endpoint for health check is not needed for the Datomic transactor. The Datomic transactor is not a web application, and Datomic High Availability takes care of transactor health automatically.
However, some tools have a checklist requirement that all processes provide a health check endpoint. If you need one, Datomic Pro lets you set a health check host and port in the transactor properties file:
ping-host=localhost ping-port=9999
Or on the command line:
bin/transactor -Ddatomic.pingHost=localhost -Ddatomic.pingPort=9999 {etc.}
When the health check is enabled, Datomic will respond with a 2xx status code to HTTP requests for {host}:{port}/health, e.g.
wget localhost:9999/health
=> HTTP request sent, awaiting response... 200 OK
Stopping the Transactor
The transactor does not perform any kind of cleanup, and can therefore
be stopped any way you like. You can kill a Datomic transactor with a
termination signal, e.g. SIGTERM
, SIGINT
, or SIGKILL
. For
example:
kill $(DATOMIC_PROCESS_ID)
If you have an HA standby, it will take over transactions automatically when you kill an active transactor.