Table of Contents
- 12.1. Mutability Levels
- 12.2. Umbrella Namespace
- 12.3. Configuration Namespaces and Options
- 12.3.1. attributes.custom *
- 12.3.2. cache
- 12.3.3. cluster
- 12.3.4. computer
- 12.3.5. graph
- 12.3.6. gremlin
- 12.3.7. ids
- 12.3.8. ids.authority
- 12.3.9. index *
- 12.3.10. index.[X].elasticsearch
- 12.3.11. index.[X].elasticsearch.create
- 12.3.12. index.[X].solr
- 12.3.13. log *
- 12.3.14. metrics
- 12.3.15. metrics.console
- 12.3.16. metrics.csv
- 12.3.17. metrics.ganglia
- 12.3.18. metrics.graphite
- 12.3.19. metrics.jmx
- 12.3.20. metrics.slf4j
- 12.3.21. query
- 12.3.22. schema
- 12.3.23. storage
- 12.3.24. storage.berkeleyje
- 12.3.25. storage.cassandra
- 12.3.26. storage.cassandra.astyanax
- 12.3.27. storage.cassandra.ssl
- 12.3.28. storage.cassandra.ssl.truststore
- 12.3.29. storage.cassandra.thrift.cpool
- 12.3.30. storage.hbase
- 12.3.31. storage.lock
- 12.3.32. storage.meta *
- 12.3.33. tx
- 12.3.34. tx.recovery
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.
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.
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
Custom attribute serialization and handling
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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 |
Configuration options that modify JanusGraph’s caching behavior
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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 |
Configuration options for multi-machine deployments
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
cluster.max-partitions | The number of virtual partition blocks created in the partitioned graph. This should be larger than the maximum expected number of nodesin the JanusGraph graph cluster. Must be bigger than 1 and a power of 2. | Integer | 32 | FIXED |
GraphComputer related configuration
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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 |
General configuration options
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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.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.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 hostname to the provided number. This is a legacy option which is currently only useful if the JVM’s ManagementFactory.getRuntimeMXBean().getName() is not unique between processes. | Short | (no default value) | LOCAL |
Gremlin configuration options
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
gremlin.graph | The implementation of graph factory that will be used by gremlin server | String | org.janusgraph.core.JanusGraphFactory | LOCAL |
General configuration options for graph element IDs
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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. Must be disabled for graph partitioning to work. | 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 |
Configuration options for graph element ID reservation/allocation
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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 |
Configuration options for the individual indexing backends
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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 | Maxium number of results to return if no limit is specified | Integer | 100000 | MASKABLE |
index.[X].port | The port on which to connect to index backend servers | Integer | (no default value) | MASKABLE |
Elasticsearch index configuration
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
index.[X].elasticsearch.client-only | The Elasticsearch node.client option is set to this boolean value, and the Elasticsearch node.data option is set to the negation of this value. True creates a thin client which holds no data. False creates a regular Elasticsearch cluster node that may store data. | Boolean | true | GLOBAL_OFFLINE |
index.[X].elasticsearch.cluster-name | The name of the Elasticsearch cluster. This should match the "cluster.name" setting in the Elasticsearch nodes' configuration. | String | elasticsearch | GLOBAL_OFFLINE |
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.ignore-cluster-name | Whether to bypass validation of the cluster name of connected nodes. This option is only used on the interface configuration track (see manual for information about ES config tracks). | Boolean | true | MASKABLE |
index.[X].elasticsearch.interface | Whether to connect to ES using the Node or Transport client (see the "Talking to Elasticsearch" section of the ES manual for discussion of the difference). Setting this option enables the interface config track (see manual for more information about ES config tracks). | String | TRANSPORT_CLIENT | MASKABLE |
index.[X].elasticsearch.load-default-node-settings | Whether ES’s Node client will internally attempt to load default configuration settings from system properties/process environment variables. Only meaningful when using the Node client (has no effect with TransportClient). | Boolean | true | MASKABLE |
index.[X].elasticsearch.local-mode | On the legacy config track, this option chooses between starting a TransportClient (false) or a Node with JVM-local transport and local data (true). On the interface config track, this option is considered by (but optional for) the Node client and ignored by the TransportClient. See the manual for more information about ES config tracks. | Boolean | false | GLOBAL_OFFLINE |
index.[X].elasticsearch.sniff | Whether to enable cluster sniffing. This option only applies to the TransportClient. Enabling this option makes the TransportClient attempt to discover other cluster nodes besides those in the initial host list provided at startup. | Boolean | true | MASKABLE |
index.[X].elasticsearch.ttl-interval | The period of time between runs of ES’s bulit-in expired document deleter. This string will become the value of ES’s indices.ttl.interval setting and should be formatted accordingly, e.g. 5s or 60s. | String | 5s | MASKABLE |
index.[X].elasticsearch.use-deprecated-ignore-unmapped-option | Elasticsearch versions before 1.4.0 supported the "ignore_unmapped" sort option. In 1.4.0, it was deprecated by the new "unmapped_type" sort option. This configurationsetting controls which ES option JanusGraph uses: false for the newer "unmapped_type",true for the older "ignore_unmapped". | Boolean | false | MASKABLE |
Settings related to index creation
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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 |
Solr index configuration
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
index.[X].solr.configset | If specified, the same solr configSet can be resued 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[] | MASKABLE | |
index.[X].solr.key-field-names | Field name that uniquely identifies each document in Solr. Must be specified as a list of | 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 ( | 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 |
Configuration options for JanusGraph’s logging system
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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 |
Configuration options for metrics reporting
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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 |
Configuration options for metrics reporting to console
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
metrics.console.interval | Time between Metrics reports printing to the console, in milliseconds | Duration | (no default value) | MASKABLE |
Configuration options for metrics reporting to CSV file
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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 |
Configuration options for metrics reporting through Ganglia
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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 http://sourceforge.net/apps/trac/ganglia/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 |
Configuration options for metrics reporting through Graphite
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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 |
Configuration options for metrics reporting through JMX
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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 |
Configuration options for metrics reporting through slf4j
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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 |
Configuration options for query processing
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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.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 | false | 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 |
Schema related configuration options
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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 |
Configuration options for the storage backend. Some options are applicable only for certain backends.
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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, 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.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. | 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.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 |
BerkeleyDB JE configuration options
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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 |
Cassandra storage backend options
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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. | 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 |
Astyanax-specific Cassandra options
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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.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 |
Configuration options for SSL
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
storage.cassandra.ssl.enabled | Controls use of the SSL connection to Cassandra | Boolean | false | LOCAL |
Configuration options for SSL Truststore.
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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 |
Options for the Apache commons-pool connection manager
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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 |
HBase storage options
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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.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. | String | janusgraph | LOCAL |
Options for locking on eventually-consistent stores
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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 |
Meta data to include in storage backend retrievals
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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 automatically annotated entries with timestamps | Boolean | false | GLOBAL |
storage.meta.[X].visibility | Whether to include visibility in retrieved entries for storage backends that automatically annotated entries with timestamps | Boolean | true | GLOBAL |
Configuration options for transaction handling
Name | Description | Datatype | Default Value | Mutability |
---|---|---|---|---|
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 |