# This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the 
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before 
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The maximum number of journal log entries to batch on recovery for a shard before committing to the data store.
#shard-journal-recovery-log-batch-size=1000

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-data-threshold-percentage=12

# The interval at which the leader of the shard will check if its majority followers are active and 
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the 
# shard transaction actor. Batching improves performance as less modifications messages are sent to the 
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# The initial number of transactions per second that are allowed before the data store should begin 
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore 
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# The maximum thread pool size for each shard's data store data change notification executor.
#max-shard-data-change-executor-pool-size=20

# The maximum queue size for each shard's data store data change notification executor.
#max-shard-data-change-executor-queue-size=1000

# The maximum queue size for each shard's data store data change listener.
#max-shard-data-change-listener-queue-size=1000

# The maximum queue size for each shard's data store executor.
#max-shard-data-store-executor-queue-size=5000

