# Cookbook:: irrigate-neo4j
# Attributes:: default

# v5
default['neo4j']['config']['server.directories.data']                       = "#{node['neo4j']['config']['neo4j_home']}/data"
default['neo4j']['config']['server.directories.plugins']                    = "#{node['neo4j']['config']['neo4j_home']}/plugins"
default['neo4j']['config']['server.directories.logs']                       = '/var/log/neo4j'
default['neo4j']['config']['server.directories.lib']                        = '/usr/share/neo4j/lib'
default['neo4j']['config']['server.directories.run']                        = '/var/run/neo4j'
default['neo4j']['config']['server.directories.import']                     = "#{node['neo4j']['config']['neo4j_home']}/import"
default['neo4j']['config']['server.directories.metrics']                    = "#{node['neo4j']['config']['neo4j_home']}/metrics"
default['neo4j']['config']['db.transaction.timeout']                        = '300s'
default['neo4j']['config']['db.transaction.bookmark_ready_timeout']         = '90s'

# Memory settings. Leave these blank to allow the OS and/or Neo4j to set these values
default['neo4j']['config']['server.memory.heap.initial_size']   = '128M'
default['neo4j']['config']['server.memory.heap.max_size']       = '128M'
default['neo4j']['config']['dbms.memory.transaction.total.max'] = ''
default['neo4j']['config']['db.memory.transaction.max']         = '2147483648'
default['neo4j']['config']['db.tx_state.memory_allocation']     = 'ON_HEAP'
default['neo4j']['config']['server.memory.pagecache.size']      = '128M'
default['neo4j']['config']['server.memory.pagecache.directio']  = 'false'
default['neo4j']['config']['server.threads.worker_count']       = ''

# Backup and restore settings
default['neo4j']['config']['server.backup.enabled']        = 'true'
default['neo4j']['config']['server.backup.listen_address'] = node['ipaddress']

# Connector settings
default['neo4j']['config']['server.default_listen_address']                 = node['ipaddress']
default['neo4j']['config']['server.default_advertised_address']             = node['ipaddress']
default['neo4j']['config']['server.bolt.enabled']                           = 'true'
default['neo4j']['config']['server.bolt.tls_level']                         = 'REQUIRED'
default['neo4j']['config']['server.bolt.listen_address']                    = node['ipaddress']
default['neo4j']['config']['server.bolt.advertised_address']                = node['ipaddress']
default['neo4j']['config']['server.http.listen_address']                    = '127.0.0.1'
default['neo4j']['config']['server.https.enabled']                          = 'false'

# Logging settings
default['neo4j']['config']['server.logs.config']                            = "#{node['neo4j']['config']['neo4j_conf']}/server-logs.xml"
default['neo4j']['config']['server.logs.user.config']                       = "#{node['neo4j']['config']['neo4j_conf']}/user-logs.xml"
default['neo4j']['config']['server.logs.gc.enabled']                        = 'true'
default['neo4j']['config']['server.logs.gc.options']                        = '-Xlog:gc*,safepoint,age*=trace'
default['neo4j']['config']['server.logs.gc.rotation.keep_number']           = '5'
default['neo4j']['config']['server.logs.gc.rotation.size']                  = '20m'
default['neo4j']['config']['db.logs.query.enabled']                         = 'OFF'
default['neo4j']['config']['db.logs.query.threshold']                       = '0s'
default['neo4j']['config']['db.logs.query.transaction.enabled']             = 'OFF'
default['neo4j']['config']['db.logs.query.transaction.threshold']           = '0s'
default['neo4j']['config']['db.logs.query.parameter_logging_enabled']       = 'true'
default['neo4j']['config']['db.logs.query.annotation_data_format']          = 'JSON'

# Causal clustering settings
default['neo4j']['config']['server.cluster.listen_address']                       = node['ipaddress']
default['neo4j']['config']['server.cluster.raft.listen_address']                  = node['ipaddress']
default['neo4j']['config']['dbms.cluster.minimum_initial_system_primaries_count'] = '3'
default['neo4j']['config']['internal.db.cluster.raft.minimum_voting_members']     = '3'
default['neo4j']['config']['dbms.cluster.store_copy.max_retry_time_per_request']  = '60m'
default['neo4j']['config']['dbms.routing.load_balancing.plugin']                  = ''
default['neo4j']['config']['dbms.routing.load_balancing.shuffle_enabled']         = 'true'
default['neo4j']['config']['dbms.cluster.raft.leader_failure_detection_window']   = '10s'
default['neo4j']['config']['dbms.cluster.raft.membership.join_timeout']           = '10m'
default['neo4j']['config']['internal.dbms.cluster.raft.log_shipping.batch_size']  = '64'
default['neo4j']['config']['internal.db.cluster.raft.log_shipping.max_lag']       = '256'
default['neo4j']['config']['dbms.cluster.raft.log.pruning_frequency']             = '10m'
default['neo4j']['config']['dbms.cluster.raft.log.rotation_size']                 = '250m'
default['neo4j']['config']['dbms.cluster.discovery.log_level']                    = 'INFO'
default['neo4j']['config']['dbms.cluster.discovery.resolver_type']                = 'DNS'

default['neo4j']['config']['db.index.fulltext.default_analyzer'] = 'simple'
default['neo4j']['config']['server.jvm.additional'] = [
  "-XX:ParallelGCThreads=#{node['cpu']['cores']}",
  '--add-opens=java.base/java.nio=ALL-UNNAMED',
  '--add-opens=java.base/java.io=ALL-UNNAMED',
  '--add-opens=java.base/sun.nio.ch=ALL-UNNAMED',
]
default['neo4j']['config']['initial.server.tags']                                 = 'neo4j_orchard'
default['neo4j']['config']['server.routing.listen_address']                       = node['ipaddress']
default['neo4j']['config']['server.cluster.system_database_mode']                 = 'PRIMARY'
default['neo4j']['config']['initial.server.mode_constraint']                      = 'PRIMARY'
default['neo4j']['config']['causal_clustering.v2.discovery_port']                 = 6000
default['neo4j']['config']['dbms.cluster.discovery.version']                      = 'V2_ONLY'
default['neo4j']['config']['initial.dbms.default_primaries_count']                = 3
default['neo4j']['config']['dbms.routing_ttl']                                    = '30s'
default['neo4j']['config']['dbms.security.procedures.allowlist']                  = 'apoc.*'

default['neo4j']['config']['internal.dbms.cluster.raft.async_acquisition_of_raft_sender_channels'] = 'true'

# Transaction log settings
default['neo4j']['config']['db.tx_log.buffer.size']               = '4194304'
default['neo4j']['config']['db.recovery.fail_on_missing_files']   = 'true'
default['neo4j']['config']['db.tx_log.preallocate']               = 'true'
default['neo4j']['config']['db.tx_log.rotation.retention_policy'] = '7 days'
default['neo4j']['config']['db.tx_log.rotation.size']             = '256.00MiB'
