Chapter 15. Configuration Reference

This section is the authoritative reference for JanusGraph configuration options. It includes all options for storage and indexing backends that are part of the official JanusGraph distribution.

The table is automatically generated by traversing the keys and namespaces in JanusGraph’s internal configuration management API. Hence, the configuration options as listed on this page are synchronized with a particular JanusGraph release. If a reference to a configuration option in other parts of this documentation is in conflict with its representation on this page, assume the version listed here to be correct.

15.1. Mutability Levels

Each configuration option has a certain mutability level that governs whether and how it can be modified after the database is opened for the first time. The following listing describes the mutability levels.

FIXED
Once the database has been opened, these configuration options cannot be changed for the entire life of the database
GLOBAL_OFFLINE
These options can only be changed for the entire database cluster at once when all instances are shut down
GLOBAL
These options can only be changed globally across the entire database cluster
MASKABLE
These options are global but can be overwritten by a local configuration file
LOCAL
These options can only be provided through a local configuration file

Refer to Section 4.3, “Global Configuration” for information on how to change non-local configuration options.

15.2. Umbrella Namespace

Namespaces marked with an asterisk are umbrella namespaces which means that they can accommodate an arbitrary number of sub-namespaces - each of which uniquely identified by its name. The configuration options listed under an umbrella namespace apply only to those sub-namespaces. Umbrella namespaces are used to configure multiple system components that are of the same type and hence have the same configuration options.

For example, the log namespace is an umbrella namespace because JanusGraph can interface with multiple logging backends, such as the user log, each of which has the same core set of configuration options. To configure the send batch size of the user log to 100 transaction changes, one would have to set the following option in the configuration

log.user.send-batch-size = 100

15.3. Configuration Namespaces and Options

15.3.1. attributes.custom *

Custom attribute serialization and handling

NameDescriptionDatatypeDefault ValueMutability

attributes.custom.[X].attribute-class

Class of the custom attribute to be registered

String

(no default value)

GLOBAL_OFFLINE

attributes.custom.[X].serializer-class

Class of the custom attribute serializer to be registered

String

(no default value)

GLOBAL_OFFLINE

15.3.2. cache

Configuration options that modify JanusGraph’s caching behavior

NameDescriptionDatatypeDefault ValueMutability

cache.db-cache

Whether to enable JanusGraph’s database-level cache, which is shared across all transactions. Enabling this option speeds up traversals by holding hot graph elements in memory, but also increases the likelihood of reading stale data. Disabling it forces each transaction to independently fetch graph elements from storage before reading/writing them.

Boolean

false

MASKABLE

cache.db-cache-clean-wait

How long, in milliseconds, database-level cache will keep entries after flushing them. This option is only useful on distributed storage backends that are capable of acknowledging writes without necessarily making them immediately visible.

Integer

50

GLOBAL_OFFLINE

cache.db-cache-size

Size of JanusGraph’s database level cache. Values between 0 and 1 are interpreted as a percentage of VM heap, while larger values are interpreted as an absolute size in bytes.

Double

0.3

MASKABLE

cache.db-cache-time

Default expiration time, in milliseconds, for entries in the database-level cache. Entries are evicted when they reach this age even if the cache has room to spare. Set to 0 to disable expiration (cache entries live forever or until memory pressure triggers eviction when set to 0).

Long

10000

GLOBAL_OFFLINE

cache.tx-cache-size

Maximum size of the transaction-level cache of recently-used vertices.

Integer

20000

MASKABLE

cache.tx-dirty-size

Initial size of the transaction-level cache of uncommitted dirty vertices. This is a performance hint for write-heavy, performance-sensitive transactional workloads. If set, it should roughly match the median vertices modified per transaction.

Integer

(no default value)

MASKABLE

15.3.3. cluster

Configuration options for multi-machine deployments

NameDescriptionDatatypeDefault ValueMutability

cluster.max-partitions

The number of virtual partition blocks created in the partitioned graph. This should be larger than the maximum expected number of nodes in the JanusGraph graph cluster. Must be greater than 1 and a power of 2.

Integer

32

FIXED

15.3.4. computer

GraphComputer related configuration

NameDescriptionDatatypeDefault ValueMutability

computer.result-mode

How the graph computer should return the computed results. persist for writing them into the graph, localtx for writing them into the local transaction, or none (default)

String

none

MASKABLE

15.3.5. graph

General configuration options

NameDescriptionDatatypeDefault ValueMutability

graph.allow-stale-config

Whether to allow the local and storage-backend-hosted copies of the configuration to contain conflicting values for options with any of the following types: FIXED, GLOBAL_OFFLINE, GLOBAL. These types are managed globally through the storage backend and cannot be overridden by changing the local configuration. This type of conflict usually indicates misconfiguration. When this option is true, JanusGraph will log these option conflicts, but continue normal operation using the storage-backend-hosted value for each conflicted option. When this option is false, JanusGraph will log these option conflicts, but then it will throw an exception, refusing to start.

Boolean

true

MASKABLE

graph.allow-upgrade

Setting this to true will allow certain fixed values to be updated such as storage-version. This should only be used for upgrading.

Boolean

false

MASKABLE

graph.graphname

This config option is an optional configuration setting that you may supply when opening a graph. The String value you provide will be the name of your graph. If you use the ConfigurationManagement APIs, then you will be able to access your graph by this String representation using the ConfiguredGraphFactory APIs.

String

(no default value)

LOCAL

graph.replace-instance-if-exists

If a JanusGraph instance with the same instance identifier already exists, the usage of this configuration option results in the opening of this graph anwyay.

Boolean

false

LOCAL

graph.set-vertex-id

Whether user provided vertex ids should be enabled and JanusGraph’s automatic id allocation be disabled. Useful when operating JanusGraph in concert with another storage system that assigns long ids but disables some of JanusGraph’s advanced features which can lead to inconsistent data. EXPERT FEATURE - USE WITH GREAT CARE.

Boolean

false

FIXED

graph.storage-version

The version of JanusGraph storage schema with which this database was created. Automatically set on first start of graph. Should only ever be changed if upgraing to a new major release version of JanusGraph that contains schema changes

String

(no default value)

FIXED

graph.timestamps

The timestamp resolution to use when writing to storage and indices. Sets the time granularity for the entire graph cluster. To avoid potential inaccuracies, the configured time resolution should match those of the backend systems. Some JanusGraph storage backends declare a preferred timestamp resolution that reflects design constraints in the underlying service. When the backend provides a preferred default, and when this setting is not explicitly declared in the config file, the backend default is used and the general default associated with this setting is ignored. An explicit declaration of this setting overrides both the general and backend-specific defaults.

TimestampProviders

MICRO

FIXED

graph.unique-instance-id

Unique identifier for this JanusGraph instance. This must be unique among all instances concurrently accessing the same stores or indexes. It’s automatically generated by concatenating the hostname, process id, and a static (process-wide) counter. Leaving it unset is recommended.

String

(no default value)

LOCAL

graph.unique-instance-id-suffix

When this is set and unique-instance-id is not, this JanusGraph instance’s unique identifier is generated by concatenating the hex encoded hostname to the provided number.

Short

(no default value)

LOCAL

graph.use-hostname-for-unique-instance-id

When this is set, this JanusGraph’s unique instance identifier is set to the hostname. If unique-instance-id-suffix is also set, then the identifier is set to <hostname><suffix>.

Boolean

false

LOCAL

15.3.6. gremlin

Gremlin configuration options

NameDescriptionDatatypeDefault ValueMutability

gremlin.graph

The implementation of graph factory that will be used by gremlin server

String

org.janusgraph.core.JanusGraphFactory

LOCAL

15.3.7. ids

General configuration options for graph element IDs

NameDescriptionDatatypeDefault ValueMutability

ids.block-size

Globally reserve graph element IDs in chunks of this size. Setting this too low will make commits frequently block on slow reservation requests. Setting it too high will result in IDs wasted when a graph instance shuts down with reserved but mostly-unused blocks.

Integer

10000

GLOBAL_OFFLINE

ids.flush

When true, vertices and edges are assigned IDs immediately upon creation. When false, IDs are assigned only when the transaction commits.

Boolean

true

MASKABLE

ids.num-partitions

Number of partition block to allocate for placement of vertices

Integer

10

MASKABLE

ids.placement

Name of the vertex placement strategy or full class name

String

simple

MASKABLE

ids.renew-percentage

When the most-recently-reserved ID block has only this percentage of its total IDs remaining (expressed as a value between 0 and 1), JanusGraph asynchronously begins reserving another block. This helps avoid transaction commits waiting on ID reservation even if the block size is relatively small.

Double

0.3

MASKABLE

ids.renew-timeout

The number of milliseconds that the JanusGraph id pool manager will wait before giving up on allocating a new block of ids

Duration

120000 ms

MASKABLE

ids.store-name

The name of the ID KCVStore. IDS_STORE_NAME is meant to be used only for backward compatibility with Titan, and should not be used explicitly in normal operations or in new graphs.

String

janusgraph_ids

GLOBAL_OFFLINE

15.3.8. ids.authority

Configuration options for graph element ID reservation/allocation

NameDescriptionDatatypeDefault ValueMutability

ids.authority.conflict-avoidance-mode

This setting helps separate JanusGraph instances sharing a single graph storage backend avoid contention when reserving ID blocks, increasing overall throughput.

ConflictAvoidanceMode

NONE

GLOBAL_OFFLINE

ids.authority.conflict-avoidance-tag

Conflict avoidance tag to be used by this JanusGraph instance when allocating IDs

Integer

0

LOCAL

ids.authority.conflict-avoidance-tag-bits

Configures the number of bits of JanusGraph-assigned element IDs that are reserved for the conflict avoidance tag

Integer

4

FIXED

ids.authority.randomized-conflict-avoidance-retries

Number of times the system attempts ID block reservations with random conflict avoidance tags before giving up and throwing an exception

Integer

5

MASKABLE

ids.authority.wait-time

The number of milliseconds the system waits for an ID block reservation to be acknowledged by the storage backend

Duration

300 ms

GLOBAL_OFFLINE

15.3.9. index *

Configuration options for the individual indexing backends

NameDescriptionDatatypeDefault ValueMutability

index.[X].backend

The indexing backend used to extend and optimize JanusGraph’s query functionality. This setting is optional. JanusGraph can use multiple heterogeneous index backends. Hence, this option can appear more than once, so long as the user-defined name between "index" and "backend" is unique among appearances.Similar to the storage backend, this should be set to one of JanusGraph’s built-in shorthand names for its standard index backends (shorthands: lucene, elasticsearch, es, solr) or to the full package and classname of a custom/third-party IndexProvider implementation.

String

elasticsearch

GLOBAL_OFFLINE

index.[X].conf-file

Path to a configuration file for those indexing backends that require/support a separate config file

String

(no default value)

MASKABLE

index.[X].directory

Directory to store index data locally

String

(no default value)

MASKABLE

index.[X].hostname

The hostname or comma-separated list of hostnames of index backend servers. This is only applicable to some index backends, such as elasticsearch and solr.

String[]

127.0.0.1

MASKABLE

index.[X].index-name

Name of the index if required by the indexing backend

String

janusgraph

GLOBAL_OFFLINE

index.[X].map-name

Whether to use the name of the property key as the field name in the index. It must be ensured, that theindexed property key names are valid field names. Renaming the property key will NOT rename the field and its the developers responsibility to avoid field collisions.

Boolean

true

GLOBAL

index.[X].max-result-set-size

Maximum number of results to return if no limit is specified. For index backends that support scrolling, it represents the number of results in each batch

Integer

50

MASKABLE

index.[X].port

The port on which to connect to index backend servers

Integer

(no default value)

MASKABLE

15.3.10. index.[X].elasticsearch

Elasticsearch index configuration

NameDescriptionDatatypeDefault ValueMutability

index.[X].elasticsearch.bulk-refresh

Elasticsearch bulk API refresh setting used to control when changes made by this request are made visible to search

String

false

MASKABLE

index.[X].elasticsearch.health-request-timeout

When JanusGraph initializes its ES backend, JanusGraph waits up to this duration for the ES cluster health to reach at least yellow status. This string should be formatted as a natural number followed by the lowercase letter "s", e.g. 3s or 60s.

String

30s

MASKABLE

index.[X].elasticsearch.interface

Interface for connecting to Elasticsearch. TRANSPORT_CLIENT and NODE were previously supported, but now are required to migrate to REST_CLIENT. See the JanusGraph upgrade instructions for more details.

String

REST_CLIENT

MASKABLE

index.[X].elasticsearch.max-retry-timeout

Sets the maximum timeout (in milliseconds) to honour in case of multiple retries of the same request sent using the ElasticSearch Rest Client by JanusGraph.

Integer

(no default value)

MASKABLE

index.[X].elasticsearch.scroll-keep-alive

How long (in seconds) elasticsearch should keep alive the scroll context.

Integer

60

GLOBAL_OFFLINE

index.[X].elasticsearch.use-all-field

Whether JanusGraph should add an "all" field mapping. When enabled field mappings will include a "copy_to" parameter referencing the "all" field. This is supported since Elasticsearch 6.x and is required when using wildcard fields starting in Elasticsearch 6.x.

Boolean

true

GLOBAL_OFFLINE

index.[X].elasticsearch.use-deprecated-multitype-index

Whether JanusGraph should group these indices into a single Elasticsearch index (requires Elasticsearch 5.x or earlier).

Boolean

false

GLOBAL_OFFLINE

15.3.11. index.[X].elasticsearch.create

Settings related to index creation

NameDescriptionDatatypeDefault ValueMutability

index.[X].elasticsearch.create.allow-mapping-update

Whether JanusGraph should allow a mapping update when registering an index. Only applicable when use-external-mappings is true.

Boolean

false

MASKABLE

index.[X].elasticsearch.create.sleep

How long to sleep, in milliseconds, between the successful completion of a (blocking) index creation request and the first use of that index. This only applies when creating an index in ES, which typically only happens the first time JanusGraph is started on top of ES. If the index JanusGraph is configured to use already exists, then this setting has no effect.

Long

200

MASKABLE

index.[X].elasticsearch.create.use-external-mappings

Whether JanusGraph should make use of an external mapping when registering an index.

Boolean

false

MASKABLE

15.3.12. index.[X].elasticsearch.http.auth

Configuration options for HTTP(S) authentication.

NameDescriptionDatatypeDefault ValueMutability

index.[X].elasticsearch.http.auth.type

Authentication type to be used for HTTP(S) access.

String

NONE

LOCAL

15.3.13. index.[X].elasticsearch.http.auth.basic

Configuration options for HTTP(S) Basic authentication.

NameDescriptionDatatypeDefault ValueMutability

index.[X].elasticsearch.http.auth.basic.password

Password for HTTP(S) authentication.

String

 

LOCAL

index.[X].elasticsearch.http.auth.basic.realm

Realm value for HTTP(S) authentication. If empty, any realm is accepted.

String

 

LOCAL

index.[X].elasticsearch.http.auth.basic.username

Username for HTTP(S) authentication.

String

 

LOCAL

15.3.14. index.[X].elasticsearch.http.auth.custom

Configuration options for custom HTTP(S) authenticator.

NameDescriptionDatatypeDefault ValueMutability

index.[X].elasticsearch.http.auth.custom.authenticator-args

Comma-separated custom authenticator constructor arguments.

String[]

 

LOCAL

index.[X].elasticsearch.http.auth.custom.authenticator-class

Authenticator fully qualified class name.

String

 

LOCAL

15.3.15. index.[X].elasticsearch.ssl

Elasticsearch SSL configuration

NameDescriptionDatatypeDefault ValueMutability

index.[X].elasticsearch.ssl.allow-self-signed-certificates

Controls the accepting of the self-signed SSL certificates.

Boolean

false

LOCAL

index.[X].elasticsearch.ssl.disable-hostname-verification

Disables the SSL hostname verification if set to true. Hostname verification is enabled by default.

Boolean

false

LOCAL

index.[X].elasticsearch.ssl.enabled

Controls use of the SSL connection to Elasticsearch.

Boolean

false

LOCAL

15.3.16. index.[X].elasticsearch.ssl.keystore

Configuration options for SSL Keystore.

NameDescriptionDatatypeDefault ValueMutability

index.[X].elasticsearch.ssl.keystore.keypassword

The password to access the key in the SSL Keystore. If the option is not present, the value of "storepassword" is used.

String

 

LOCAL

index.[X].elasticsearch.ssl.keystore.location

Marks the location of the SSL Keystore.

String

 

LOCAL

index.[X].elasticsearch.ssl.keystore.storepassword

The password to access SSL Keystore.

String

 

LOCAL

15.3.17. index.[X].elasticsearch.ssl.truststore

Configuration options for SSL Truststore.

NameDescriptionDatatypeDefault ValueMutability

index.[X].elasticsearch.ssl.truststore.location

Marks the location of the SSL Truststore.

String

 

LOCAL

index.[X].elasticsearch.ssl.truststore.password

The password to access SSL Truststore.

String

 

LOCAL

15.3.18. index.[X].solr

Solr index configuration

NameDescriptionDatatypeDefault ValueMutability

index.[X].solr.configset

If specified, the same solr configSet can be reused for each new Collection that is created in SolrCloud.

String

(no default value)

MASKABLE

index.[X].solr.dyn-fields

Whether to use dynamic fields (which appends the data type to the field name). If dynamic fields is disabledthe user must map field names and define them explicitly in the schema.

Boolean

true

GLOBAL_OFFLINE

index.[X].solr.http-compression

Enable/disable compression on the HTTP connections made to Solr.

Boolean

false

MASKABLE

index.[X].solr.http-connection-timeout

Solr HTTP connection timeout.

Integer

5000

MASKABLE

index.[X].solr.http-max

Maximum number of HTTP connections in total to all Solr servers.

Integer

100

MASKABLE

index.[X].solr.http-max-per-host

Maximum number of HTTP connections per Solr host.

Integer

20

MASKABLE

index.[X].solr.http-urls

List of URLs to use to connect to Solr Servers (LBHttpSolrClient is used), don’t add core or collection name to the URL.

String[]

http://localhost:8983/solr

MASKABLE

index.[X].solr.kerberos-enabled

Whether SOLR instance is Kerberized or not.

Boolean

false

MASKABLE

index.[X].solr.key-field-names

Field name that uniquely identifies each document in Solr. Must be specified as a list of collection=field.

String[]

(no default value)

GLOBAL

index.[X].solr.max-shards-per-node

Maximum number of shards per node. This applies when creating a new collection which is only supported under the SolrCloud operation mode.

Integer

1

GLOBAL_OFFLINE

index.[X].solr.mode

The operation mode for Solr which is either via HTTP (http) or using SolrCloud (cloud)

String

cloud

GLOBAL_OFFLINE

index.[X].solr.num-shards

Number of shards for a collection. This applies when creating a new collection which is only supported under the SolrCloud operation mode.

Integer

1

GLOBAL_OFFLINE

index.[X].solr.replication-factor

Replication factor for a collection. This applies when creating a new collection which is only supported under the SolrCloud operation mode.

Integer

1

GLOBAL_OFFLINE

index.[X].solr.ttl_field

Name of the TTL field for Solr collections.

String

ttl

GLOBAL_OFFLINE

index.[X].solr.wait-searcher

When mutating - wait for the index to reflect new mutations before returning. This can have a negative impact on performance.

Boolean

false

LOCAL

index.[X].solr.zookeeper-url

URL of the Zookeeper instance coordinating the SolrCloud cluster

String[]

localhost:2181

MASKABLE

15.3.19. log *

Configuration options for JanusGraph’s logging system

NameDescriptionDatatypeDefault ValueMutability

log.[X].backend

Define the log backed to use

String

default

GLOBAL_OFFLINE

log.[X].fixed-partition

Whether all log entries are written to one fixed partition even if the backend store is partitioned.This can cause imbalanced loads and should only be used on low volume logs

Boolean

false

GLOBAL_OFFLINE

log.[X].key-consistent

Whether to require consistency for log reading and writing messages to the storage backend

Boolean

false

MASKABLE

log.[X].max-partitions

The maximum number of partitions to use for logging. Setting up this many actual or virtual partitions. Must be bigger than 0and a power of 2.

Integer

(no default value)

FIXED

log.[X].max-read-time

Maximum time in ms to try reading log messages from the backend before failing.

Duration

4000 ms

MASKABLE

log.[X].max-write-time

Maximum time in ms to try persisting log messages against the backend before failing.

Duration

10000 ms

MASKABLE

log.[X].num-buckets

The number of buckets to split log entries into for load balancing

Integer

1

GLOBAL_OFFLINE

log.[X].read-batch-size

Maximum number of log messages to read at a time for logging implementations that read messages in batches

Integer

1024

MASKABLE

log.[X].read-interval

Time in ms between message readings from the backend for this logging implementations that read message in batch

Duration

5000 ms

MASKABLE

log.[X].read-lag-time

Maximum time in ms that it may take for reads to appear in the backend. If a write does not becomevisible in the storage backend in this amount of time, a log reader might miss the message.

Duration

500 ms

MASKABLE

log.[X].read-threads

Number of threads to be used in reading and processing log messages

Integer

1

MASKABLE

log.[X].send-batch-size

Maximum number of log messages to batch up for sending for logging implementations that support batch sending

Integer

256

MASKABLE

log.[X].send-delay

Maximum time in ms that messages can be buffered locally before sending in batch

Duration

1000 ms

MASKABLE

log.[X].ttl

Sets a TTL on all log entries, meaningthat all entries added to this log expire after the configured amount of time. Requiresthat the log implementation supports TTL.

Duration

(no default value)

GLOBAL

15.3.20. metrics

Configuration options for metrics reporting

NameDescriptionDatatypeDefault ValueMutability

metrics.enabled

Whether to enable basic timing and operation count monitoring on backend

Boolean

false

MASKABLE

metrics.merge-stores

Whether to aggregate measurements for the edge store, vertex index, edge index, and ID store

Boolean

true

MASKABLE

metrics.prefix

The default name prefix for Metrics reported by JanusGraph.

String

org.janusgraph

MASKABLE

15.3.21. metrics.console

Configuration options for metrics reporting to console

NameDescriptionDatatypeDefault ValueMutability

metrics.console.interval

Time between Metrics reports printing to the console, in milliseconds

Duration

(no default value)

MASKABLE

15.3.22. metrics.csv

Configuration options for metrics reporting to CSV file

NameDescriptionDatatypeDefault ValueMutability

metrics.csv.directory

Metrics CSV output directory

String

(no default value)

MASKABLE

metrics.csv.interval

Time between dumps of CSV files containing Metrics data, in milliseconds

Duration

(no default value)

MASKABLE

15.3.23. metrics.ganglia

Configuration options for metrics reporting through Ganglia

NameDescriptionDatatypeDefault ValueMutability

metrics.ganglia.addressing-mode

Whether to communicate to Ganglia via uni- or multicast

String

unicast

MASKABLE

metrics.ganglia.hostname

The unicast host or multicast group name to which Metrics will send Ganglia data

String

(no default value)

MASKABLE

metrics.ganglia.interval

The number of milliseconds to wait between sending Metrics data to Ganglia

Duration

(no default value)

MASKABLE

metrics.ganglia.port

The port to which Ganglia data are sent

Integer

8649

MASKABLE

metrics.ganglia.protocol-31

Whether to send data to Ganglia in the 3.1 protocol format

Boolean

true

MASKABLE

metrics.ganglia.spoof

If non-null, it must be a valid Gmetric spoof string formatted as an IP:hostname pair. See https://github.com/ganglia/monitor-core/wiki/Gmetric-Spoofing for information about this setting.

String

(no default value)

MASKABLE

metrics.ganglia.ttl

The multicast TTL to set on outgoing Ganglia datagrams

Integer

1

MASKABLE

metrics.ganglia.uuid

The host UUID to set on outgoing Ganglia datagrams. See https://github.com/ganglia/monitor-core/wiki/UUIDSources for information about this setting.

String

(no default value)

LOCAL

15.3.24. metrics.graphite

Configuration options for metrics reporting through Graphite

NameDescriptionDatatypeDefault ValueMutability

metrics.graphite.hostname

The hostname to receive Graphite plaintext protocol metric data

String

(no default value)

MASKABLE

metrics.graphite.interval

The number of milliseconds to wait between sending Metrics data

Duration

(no default value)

MASKABLE

metrics.graphite.port

The port to which Graphite data are sent

Integer

2003

MASKABLE

metrics.graphite.prefix

A Graphite-specific prefix for reported metrics

String

(no default value)

MASKABLE

15.3.25. metrics.jmx

Configuration options for metrics reporting through JMX

NameDescriptionDatatypeDefault ValueMutability

metrics.jmx.agentid

The JMX agentId used by Metrics

String

(no default value)

MASKABLE

metrics.jmx.domain

The JMX domain in which to report Metrics

String

(no default value)

MASKABLE

metrics.jmx.enabled

Whether to report Metrics through a JMX MBean

Boolean

false

MASKABLE

15.3.26. metrics.slf4j

Configuration options for metrics reporting through slf4j

NameDescriptionDatatypeDefault ValueMutability

metrics.slf4j.interval

Time between slf4j logging reports of Metrics data, in milliseconds

Duration

(no default value)

MASKABLE

metrics.slf4j.logger

The complete name of the Logger through which Metrics will report via Slf4j

String

(no default value)

MASKABLE

15.3.27. query

Configuration options for query processing

NameDescriptionDatatypeDefault ValueMutability

query.batch

Whether traversal queries should be batched when executed against the storage backend. This can lead to significant performance improvement if there is a non-trivial latency to the backend.

Boolean

false

MASKABLE

query.batch-property-prefetch

Whether to do a batched pre-fetch of all properties on adjacent vertices against the storage backend prior to evaluating a has condition against those vertices. Because these vertex properties will be loaded into the transaction-level cache of recently-used vertices when the condition is evaluated this can lead to significant performance improvement if there are many edges to adjacent vertices and there is a non-trivial latency to the backend.

Boolean

false

MASKABLE

query.fast-property

Whether to pre-fetch all properties on first singular vertex property access. This can eliminate backend calls on subsequentproperty access for the same vertex at the expense of retrieving all properties at once. This can be expensive for vertices with many properties

Boolean

true

MASKABLE

query.force-index

Whether JanusGraph should throw an exception if a graph query cannot be answered using an index. Doing solimits the functionality of JanusGraph’s graph queries but ensures that slow graph queries are avoided on large graphs. Recommended for production use of JanusGraph.

Boolean

false

MASKABLE

query.ignore-unknown-index-key

Whether to ignore undefined types encountered in user-provided index queries

Boolean

false

MASKABLE

query.smart-limit

Whether the query optimizer should try to guess a smart limit for the query to ensure responsiveness in light of possibly large result sets. Those will be loaded incrementally if this option is enabled.

Boolean

true

MASKABLE

15.3.28. schema

Schema related configuration options

NameDescriptionDatatypeDefault ValueMutability

schema.constraints

Configures the schema constraints to be used by this graph. If config schema.constraints is set to true and schema.default is set to none, then an IllegalArgumentException is thrown for schema constraint violations. If schema.constraints is set to true and schema.default is not set none, schema constraints are automatically created as described in the config option schema.default. If schema.constraints is set to false which is the default, then no schema constraints are applied.

Boolean

false

GLOBAL_OFFLINE

schema.default

Configures the DefaultSchemaMaker to be used by this graph. If set to none, automatic schema creation is disabled. Defaults to a blueprints compatible schema maker with MULTI edge labels and SINGLE property keys

String

default

MASKABLE

15.3.29. storage

Configuration options for the storage backend. Some options are applicable only for certain backends.

NameDescriptionDatatypeDefault ValueMutability

storage.backend

The primary persistence provider used by JanusGraph. This is required. It should be set one of JanusGraph’s built-in shorthand names for its standard storage backends (shorthands: berkeleyje, cassandrathrift, cassandra, astyanax, embeddedcassandra, cql, hbase, inmemory) or to the full package and classname of a custom/third-party StoreManager implementation.

String

(no default value)

LOCAL

storage.batch-loading

Whether to enable batch loading into the storage backend

Boolean

false

LOCAL

storage.buffer-size

Size of the batch in which mutations are persisted

Integer

1024

MASKABLE

storage.conf-file

Path to a configuration file for those storage backends which require/support a single separate config file.

String

(no default value)

LOCAL

storage.connection-timeout

Default timeout, in milliseconds, when connecting to a remote database instance

Duration

10000 ms

MASKABLE

storage.directory

Storage directory for those storage backends that require local storage.

String

(no default value)

LOCAL

storage.drop-on-clear

Whether to drop the graph database (true) or delete rows (false) when clearing storage. Note that some backends always drop the graph database when clearing storage. Also note that indices are always dropped when clearing storage.

Boolean

true

MASKABLE

storage.hostname

The hostname or comma-separated list of hostnames of storage backend servers. This is only applicable to some storage backends, such as cassandra and hbase.

String[]

127.0.0.1

LOCAL

storage.page-size

JanusGraph break requests that may return many results from distributed storage backends into a series of requests for small chunks/pages of results, where each chunk contains up to this many elements.

Integer

100

MASKABLE

storage.parallel-backend-ops

Whether JanusGraph should attempt to parallelize storage operations

Boolean

true

MASKABLE

storage.password

Password to authenticate against backend

String

(no default value)

LOCAL

storage.port

The port on which to connect to storage backend servers. For HBase, it is the Zookeeper port.

Integer

(no default value)

LOCAL

storage.read-only

Read-only database

Boolean

false

LOCAL

storage.read-time

Maximum time (in ms) to wait for a backend read operation to complete successfully. If a backend read operationfails temporarily, JanusGraph will backoff exponentially and retry the operation until the wait time has been exhausted.

Duration

10000 ms

MASKABLE

storage.root

Storage root directory for those storage backends that require local storage. If you do not supply storage.directory and you do supply graph.graphname, then your data will be stored in the directory equivalent to <STORAGE_ROOT>/<GRAPH_NAME>.

String

(no default value)

LOCAL

storage.setup-wait

Time in milliseconds for backend manager to wait for the storage backends to become available when JanusGraph is run in server mode

Duration

60000 ms

MASKABLE

storage.transactions

Enables transactions on storage backends that support them

Boolean

true

MASKABLE

storage.username

Username to authenticate against backend

String

(no default value)

LOCAL

storage.write-time

Maximum time (in ms) to wait for a backend write operation to complete successfully. If a backend write operationfails temporarily, JanusGraph will backoff exponentially and retry the operation until the wait time has been exhausted.

Duration

100000 ms

MASKABLE

15.3.30. storage.berkeleyje

BerkeleyDB JE configuration options

NameDescriptionDatatypeDefault ValueMutability

storage.berkeleyje.cache-percentage

Percentage of JVM heap reserved for BerkeleyJE’s cache

Integer

65

MASKABLE

storage.berkeleyje.isolation-level

The isolation level used by transactions

String

REPEATABLE_READ

MASKABLE

storage.berkeleyje.lock-mode

The BDB record lock mode used for read operations

String

LockMode.DEFAULT

MASKABLE

15.3.31. storage.cassandra

Cassandra storage backend options

NameDescriptionDatatypeDefault ValueMutability

storage.cassandra.atomic-batch-mutate

True to use Cassandra atomic batch mutation, false to use non-atomic batches

Boolean

true

MASKABLE

storage.cassandra.compaction-strategy-class

The compaction strategy to use for JanusGraph tables

String

(no default value)

FIXED

storage.cassandra.compaction-strategy-options

Compaction strategy options. This list is interpreted as a map. It must have an even number of elements in [key,val,key,val,…] form.

String[]

(no default value)

FIXED

storage.cassandra.compression

Whether the storage backend should use compression when storing the data

Boolean

true

FIXED

storage.cassandra.compression-block-size

The size of the compression blocks in kilobytes

Integer

64

FIXED

storage.cassandra.compression-type

The sstable_compression value JanusGraph uses when creating column families. This accepts any value allowed by Cassandra’s sstable_compression option. Leave this unset to disable sstable_compression on JanusGraph-created CFs.

String

LZ4Compressor

MASKABLE

storage.cassandra.frame-size-mb

The thrift frame size in megabytes

Integer

15

MASKABLE

storage.cassandra.keyspace

The name of JanusGraph’s keyspace. It will be created if it does not exist. If it is not supplied, but graph.graphname is, then the the keyspace will be set to that.

String

janusgraph

LOCAL

storage.cassandra.read-consistency-level

The consistency level of read operations against Cassandra

String

QUORUM

MASKABLE

storage.cassandra.replication-factor

The number of data replicas (including the original copy) that should be kept. This is only meaningful for storage backends that natively support data replication.

Integer

1

GLOBAL_OFFLINE

storage.cassandra.replication-strategy-class

The replication strategy to use for JanusGraph keyspace

String

org.apache.cassandra.locator.SimpleStrategy

FIXED

storage.cassandra.replication-strategy-options

Replication strategy options, e.g. factor or replicas per datacenter. This list is interpreted as a map. It must have an even number of elements in [key,val,key,val,…] form. A replication_factor set here takes precedence over one set with storage.cassandra.replication-factor

String[]

(no default value)

FIXED

storage.cassandra.write-consistency-level

The consistency level of write operations against Cassandra

String

QUORUM

MASKABLE

15.3.32. storage.cassandra.astyanax

Astyanax-specific Cassandra options

NameDescriptionDatatypeDefault ValueMutability

storage.cassandra.astyanax.cluster-name

Default name for the Cassandra cluster

String

JanusGraph Cluster

MASKABLE

storage.cassandra.astyanax.connection-pool-type

Astyanax’s connection pooler implementation

String

TOKEN_AWARE

MASKABLE

storage.cassandra.astyanax.frame-size

The thrift frame size in mega bytes

Integer

15

MASKABLE

storage.cassandra.astyanax.host-supplier

Host supplier to use when discovery type is set to DISCOVERY_SERVICE or TOKEN_AWARE

String

(no default value)

MASKABLE

storage.cassandra.astyanax.local-datacenter

The name of the local or closest Cassandra datacenter. When set and not whitespace, this value will be passed into ConnectionPoolConfigurationImpl.setLocalDatacenter. When unset or set to whitespace, setLocalDatacenter will not be invoked.

String

(no default value)

MASKABLE

storage.cassandra.astyanax.max-cluster-connections-per-host

Maximum pooled "cluster" connections per host

Integer

3

MASKABLE

storage.cassandra.astyanax.max-connections

Maximum open connections allowed in the pool (counting all hosts)

Integer

-1

MASKABLE

storage.cassandra.astyanax.max-connections-per-host

Maximum pooled connections per host

Integer

32

MASKABLE

storage.cassandra.astyanax.max-operations-per-connection

Maximum number of operations allowed per connection before the connection is closed

Integer

100000

MASKABLE

storage.cassandra.astyanax.node-discovery-type

How Astyanax discovers Cassandra cluster nodes

String

RING_DESCRIBE

MASKABLE

storage.cassandra.astyanax.read-page-size

The page size for Cassandra read operations

Integer

4096

MASKABLE

storage.cassandra.astyanax.retry-backoff-strategy

Astyanax’s retry backoff strategy with configuration parameters

String

com.netflix.astyanax.connectionpool.impl.FixedRetryBackoffStrategy,1000,5000

MASKABLE

storage.cassandra.astyanax.retry-delay-slice

Astyanax’s connection pool "retryDelaySlice" parameter

Integer

10000

MASKABLE

storage.cassandra.astyanax.retry-max-delay-slice

Astyanax’s connection pool "retryMaxDelaySlice" parameter

Integer

10

MASKABLE

storage.cassandra.astyanax.retry-policy

Astyanax’s retry policy implementation with configuration parameters

String

com.netflix.astyanax.retry.BoundedExponentialBackoff,100,25000,8

MASKABLE

storage.cassandra.astyanax.retry-suspend-window

Astyanax’s connection pool "retryMaxDelaySlice" parameter

Integer

20000

MASKABLE

15.3.33. storage.cassandra.ssl

Configuration options for SSL

NameDescriptionDatatypeDefault ValueMutability

storage.cassandra.ssl.enabled

Controls use of the SSL connection to Cassandra

Boolean

false

LOCAL

15.3.34. storage.cassandra.ssl.truststore

Configuration options for SSL Truststore.

NameDescriptionDatatypeDefault ValueMutability

storage.cassandra.ssl.truststore.location

Marks the location of the SSL Truststore.

String

 

LOCAL

storage.cassandra.ssl.truststore.password

The password to access SSL Truststore.

String

 

LOCAL

15.3.35. storage.cassandra.thrift.cpool

Options for the Apache commons-pool connection manager

NameDescriptionDatatypeDefault ValueMutability

storage.cassandra.thrift.cpool.evictor-period

Approximate number of milliseconds between runs of the idle connection evictor. Set to -1 to never run the idle connection evictor.

Long

30000

MASKABLE

storage.cassandra.thrift.cpool.idle-test

Whether the idle connection evictor validates idle connections and drops those that fail to validate

Boolean

false

MASKABLE

storage.cassandra.thrift.cpool.idle-tests-per-eviction-run

When the value is negative, e.g. -n, roughly one nth of the idle connections are tested per run. When the value is positive, e.g. n, the min(idle-count, n) connections are tested per run.

Integer

0

MASKABLE

storage.cassandra.thrift.cpool.max-active

Maximum number of concurrently in-use connections (-1 to leave undefined)

Integer

16

MASKABLE

storage.cassandra.thrift.cpool.max-idle

Maximum number of concurrently idle connections (-1 to leave undefined)

Integer

4

MASKABLE

storage.cassandra.thrift.cpool.max-total

Max number of allowed Thrift connections, idle or active (-1 to leave undefined)

Integer

-1

MASKABLE

storage.cassandra.thrift.cpool.max-wait

Maximum number of milliseconds to block when storage.cassandra.thrift.cpool.when-exhausted is set to BLOCK. Has no effect when set to actions besides BLOCK. Set to -1 to wait indefinitely.

Long

-1

MASKABLE

storage.cassandra.thrift.cpool.min-evictable-idle-time

Minimum number of milliseconds a connection must be idle before it is eligible for eviction. See also storage.cassandra.thrift.cpool.evictor-period. Set to -1 to never evict idle connections.

Long

60000

MASKABLE

storage.cassandra.thrift.cpool.min-idle

Minimum number of idle connections the pool attempts to maintain

Integer

0

MASKABLE

storage.cassandra.thrift.cpool.when-exhausted

What to do when clients concurrently request more active connections than are allowed by the pool. The value must be one of BLOCK, FAIL, or GROW.

String

BLOCK

MASKABLE

15.3.36. storage.cql

CQL storage backend options

NameDescriptionDatatypeDefault ValueMutability

storage.cql.atomic-batch-mutate

True to use Cassandra atomic batch mutation, false to use non-atomic batches

Boolean

false

MASKABLE

storage.cql.batch-statement-size

The number of statements in each batch

Integer

20

MASKABLE

storage.cql.cluster-name

Default name for the Cassandra cluster

String

JanusGraph Cluster

MASKABLE

storage.cql.compact-storage

Whether the storage backend should use compact storage on tables. This option is only available for Cassandra 2 and earlier and defaults to true.

Boolean

true

FIXED

storage.cql.compaction-strategy-class

The compaction strategy to use for JanusGraph tables

String

(no default value)

FIXED

storage.cql.compaction-strategy-options

Compaction strategy options. This list is interpreted as a map. It must have an even number of elements in [key,val,key,val,…] form.

String[]

(no default value)

FIXED

storage.cql.compression

Whether the storage backend should use compression when storing the data

Boolean

true

FIXED

storage.cql.compression-block-size

The size of the compression blocks in kilobytes

Integer

64

FIXED

storage.cql.compression-type

The sstable_compression value JanusGraph uses when creating column families. This accepts any value allowed by Cassandra’s sstable_compression option. Leave this unset to disable sstable_compression on JanusGraph-created CFs.

String

LZ4Compressor

MASKABLE

storage.cql.keyspace

The name of JanusGraph’s keyspace. It will be created if it does not exist.

String

janusgraph

LOCAL

storage.cql.local-core-connections-per-host

The number of connections initially created and kept open to each host for local datacenter

Integer

1

FIXED

storage.cql.local-datacenter

The name of the local or closest Cassandra datacenter. When set and not whitespace, this value will be passed into ConnectionPoolConfigurationImpl.setLocalDatacenter. When unset or set to whitespace, setLocalDatacenter will not be invoked.

String

(no default value)

MASKABLE

storage.cql.local-max-connections-per-host

The maximum number of connections that can be created per host for local datacenter

Integer

1

FIXED

storage.cql.local-max-requests-per-connection

The maximum number of requests per connection for local datacenter

Integer

1024

FIXED

storage.cql.only-use-local-consistency-for-system-operations

True to prevent any system queries from using QUORUM consistency and always use LOCAL_QUORUM instead

Boolean

false

MASKABLE

storage.cql.protocol-version

The protocol version used to connect to the Cassandra database. If no value is supplied then the driver will negotiate with the server.

Integer

0

LOCAL

storage.cql.read-consistency-level

The consistency level of read operations against Cassandra

String

QUORUM

MASKABLE

storage.cql.remote-core-connections-per-host

The number of connections initially created and kept open to each host for remote datacenter

Integer

1

FIXED

storage.cql.remote-max-connections-per-host

The maximum number of connections that can be created per host for remote datacenter

Integer

1

FIXED

storage.cql.remote-max-requests-per-connection

The maximum number of requests per connection for remote datacenter

Integer

256

FIXED

storage.cql.replication-factor

The number of data replicas (including the original copy) that should be kept

Integer

1

GLOBAL_OFFLINE

storage.cql.replication-strategy-class

The replication strategy to use for JanusGraph keyspace

String

SimpleStrategy

FIXED

storage.cql.replication-strategy-options

Replication strategy options, e.g. factor or replicas per datacenter. This list is interpreted as a map. It must have an even number of elements in [key,val,key,val,…] form. A replication_factor set here takes precedence over one set with storage.cql.replication-factor

String[]

(no default value)

FIXED

storage.cql.use-external-locking

True to prevent JanusGraph from using its own locking mechanism. Setting this to true eliminates redundant checks when using an external locking mechanism outside of JanusGraph. Be aware that when use-external-locking is set to true, that failure to employ a locking algorithm which locks all columns that participate in a transaction upfront and unlocks them when the transaction ends, will result in a read uncommitted transaction isolation level guarantee. If set to true without an appropriate external locking mechanism in place side effects such as dirty/non-repeatable/phantom reads should be expected.

Boolean

false

MASKABLE

storage.cql.write-consistency-level

The consistency level of write operations against Cassandra

String

QUORUM

MASKABLE

15.3.37. storage.cql.ssl

Configuration options for SSL

NameDescriptionDatatypeDefault ValueMutability

storage.cql.ssl.enabled

Controls use of the SSL connection to Cassandra

Boolean

false

LOCAL

15.3.38. storage.cql.ssl.truststore

Configuration options for SSL Truststore.

NameDescriptionDatatypeDefault ValueMutability

storage.cql.ssl.truststore.location

Marks the location of the SSL Truststore.

String

 

LOCAL

storage.cql.ssl.truststore.password

The password to access SSL Truststore.

String

 

LOCAL

15.3.39. storage.hbase

HBase storage options

NameDescriptionDatatypeDefault ValueMutability

storage.hbase.compat-class

The package and class name of the HBaseCompat implementation. HBaseCompat masks version-specific HBase API differences. When this option is unset, JanusGraph calls HBase’s VersionInfo.getVersion() and loads the matching compat class at runtime. Setting this option forces JanusGraph to instead reflectively load and instantiate the specified class.

String

(no default value)

MASKABLE

storage.hbase.compression-algorithm

An HBase Compression.Algorithm enum string which will be applied to newly created column families. The compression algorithm must be installed and available on the HBase cluster. JanusGraph cannot install and configure new compression algorithms on the HBase cluster by itself.

String

GZ

MASKABLE

storage.hbase.region-count

The number of initial regions set when creating JanusGraph’s HBase table

Integer

(no default value)

MASKABLE

storage.hbase.regions-per-server

The number of regions per regionserver to set when creating JanusGraph’s HBase table

Integer

(no default value)

MASKABLE

storage.hbase.short-cf-names

Whether to shorten the names of JanusGraph’s column families to one-character mnemonics to conserve storage space

Boolean

true

FIXED

storage.hbase.skip-schema-check

Assume that JanusGraph’s HBase table and column families already exist. When this is true, JanusGraph will not check for the existence of its table/CFs, nor will it attempt to create them under any circumstances. This is useful when running JanusGraph without HBase admin privileges.

Boolean

false

MASKABLE

storage.hbase.snapshot-name

The name of an exising HBase snapshot to be used by HBaseSnapshotInputFormat

String

janusgraph-snapshot

LOCAL

storage.hbase.snapshot-restore-dir

The tempoary directory to be used by HBaseSnapshotInputFormat to restore a snapshot. This directory should be on the same File System as the HBase root dir.

String

/tmp

LOCAL

storage.hbase.table

The name of the table JanusGraph will use. When storage.hbase.skip-schema-check is false, JanusGraph will automatically create this table if it does not already exist. If this configuration option is not provided but graph.graphname is, the table will be set to that value.

String

janusgraph

LOCAL

15.3.40. storage.lock

Options for locking on eventually-consistent stores

NameDescriptionDatatypeDefault ValueMutability

storage.lock.backend

Locker type to use

String

consistentkey

GLOBAL_OFFLINE

storage.lock.clean-expired

Whether to delete expired locks from the storage backend

Boolean

false

MASKABLE

storage.lock.expiry-time

Number of milliseconds after which a lock is considered to have expired. Lock applications that were not released are considered expired after this time and released. This value should be larger than the maximum time a transaction can take in order to guarantee that no correctly held applications are expired pre-maturely and as small as possible to avoid dead lock.

Duration

300000 ms

GLOBAL_OFFLINE

storage.lock.local-mediator-group

This option determines the LocalLockMediator instance used for early detection of lock contention between concurrent JanusGraph graph instances within the same process which are connected to the same storage backend. JanusGraph instances that have the same value for this variable will attempt to discover lock contention among themselves in memory before proceeding with the general-case distributed locking code. JanusGraph generates an appropriate default value for this option at startup. Overridding the default is generally only useful in testing.

String

(no default value)

LOCAL

storage.lock.retries

Number of times the system attempts to acquire a lock before giving up and throwing an exception

Integer

3

MASKABLE

storage.lock.wait-time

Number of milliseconds the system waits for a lock application to be acknowledged by the storage backend. Also, the time waited at the end of all lock applications before verifying that the applications were successful. This value should be a small multiple of the average consistent write time.

Duration

100 ms

GLOBAL_OFFLINE

15.3.41. storage.meta *

Meta data to include in storage backend retrievals

NameDescriptionDatatypeDefault ValueMutability

storage.meta.[X].timestamps

Whether to include timestamps in retrieved entries for storage backends that automatically annotated entries with timestamps

Boolean

false

GLOBAL

storage.meta.[X].ttl

Whether to include ttl in retrieved entries for storage backends that support storage and retrieval of cell level TTL

Boolean

false

GLOBAL

storage.meta.[X].visibility

Whether to include visibility in retrieved entries for storage backends that support cell level visibility

Boolean

true

GLOBAL

15.3.42. tx

Configuration options for transaction handling

NameDescriptionDatatypeDefault ValueMutability

tx.log-tx

Whether transaction mutations should be logged to JanusGraph’s write-ahead transaction log which can be used for recovery of partially failed transactions

Boolean

false

GLOBAL

tx.max-commit-time

Maximum time (in ms) that a transaction might take to commit against all backends. This is used by the distributed write-ahead log processing to determine when a transaction can be considered failed (i.e. after this time has elapsed).Must be longer than the maximum allowed write time.

Duration

10000 ms

GLOBAL

15.3.43. tx.recovery

Configuration options for transaction recovery processes

NameDescriptionDatatypeDefault ValueMutability

tx.recovery.verbose

Whether the transaction recovery system should print recovered transactions and other activity to standard output

Boolean

false

MASKABLE