«

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.