#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

####################
### Startup configuration
####################


# Used for cluster internal RPC communication.
# Could set 0.0.0.0, 127.0.0.1(for local test) or ipv4 address.
# Datatype: String
internal_address=0.0.0.0


# Used for cluster internal RPC communication
# Datatype: int
internal_port=22277


# Used for ConfigNodeGroup's ConsensusLayer interior communication
# Datatype: int
consensus_port=22278


# At least one running ConfigNode should be set for joining the cluster
# Format: ip:port
# where the ip should be consistent with the target ConfigNode's confignode_internal_address,
# and the port should be consistent with the target ConfigNode's confignode_internal_port.
# For the first ConfigNode to start, target_config_nodes points to its own internal_address:internal_port.
# For other ConfigNodes that are started or restarted, target_config_nodes points to any running ConfigNode's internal_address:internal_port.
# Notice: The ip for any target_config_node should never be 0.0.0.0
# Datatype: String
target_config_nodes=127.0.0.1:22277


####################
### Region configuration
####################


# SchemaRegion consensus protocol type.
# This parameter is unmodifiable after ConfigNode starts for the first time.
# These consensus protocols are currently supported:
# 1. org.apache.iotdb.consensus.standalone.StandAloneConsensus(Consensus patterns optimized specifically for single replica)
# 2. org.apache.iotdb.consensus.ratis.RatisConsensus(Raft protocol)
# Datatype: String
# schema_region_consensus_protocol_class=org.apache.iotdb.consensus.standalone.StandAloneConsensus

# The maximum number of SchemaRegion expected to be managed by each DataNode.
# Notice: Since each StorageGroup requires at least one SchemaRegion to manage its schema,
# this parameter doesn't limit the number of SchemaRegions when there are too many StorageGroups.
# Datatype: Double
# schema_region_per_data_node=1.0

# DataRegion consensus protocol type.
# This parameter is unmodifiable after ConfigNode starts for the first time.
# These consensus protocols are currently supported:
# 1. org.apache.iotdb.consensus.standalone.StandAloneConsensus(Consensus patterns optimized specifically for single replica)
# 2. org.apache.iotdb.consensus.multileader.MultiLeaderConsensus(weak consistency, high performance)
# 3. org.apache.iotdb.consensus.ratis.RatisConsensus(Raft protocol)
# Datatype: String
# data_region_consensus_protocol_class=org.apache.iotdb.consensus.standalone.StandAloneConsensus

# The maximum number of DataRegion expected to be managed by each processor.
# Notice: Since each StorageGroup requires at least two DataRegions to manage its data,
# this parameter doesn't limit the number of DataRegions when there are too many StorageGroups.
# Datatype: Double
# data_region_per_processor=0.5

# Region allocate strategy
# These allocate strategies are currently supported:
# 1. GREEDY(Default, when region is allocated, always choose the dataNode that has bean allocated the least regions)
# 2. COPY_SET(Random replication according to wight calculated from number of regions on all online dataNodes, suitable for large clusters)
# Datatype: String
# region_allocate_strategy=GREEDY

####################
### PartitionSlot configuration
####################

# All parameters in PartitionSlot configuration is unmodifiable after ConfigNode starts for the first time.
# And these parameters should be consistent within the ConfigNodeGroup.


# Number of SeriesPartitionSlots per StorageGroup
# Datatype: int
# series_partition_slot_num=10000


# SeriesPartitionSlot executor class
# These hashing algorithms are currently supported:
# 1. BKDRHashExecutor(Default)
# 2. APHashExecutor
# 3. JSHashExecutor
# 4. SDBMHashExecutor
# Also, if you want to implement your own SeriesPartition executor, you can inherit the SeriesPartitionExecutor class and
# modify this parameter to correspond to your Java class
# Datatype: String
# series_partition_executor_class=org.apache.iotdb.commons.partition.executor.hash.BKDRHashExecutor


####################
### StorageGroup configuration
####################

# All parameters in StorageGroup configuration is unmodifiable after ConfigNode starts for the first time.
# And these parameters should be consistent within the ConfigNodeGroup.


# Default TTL for storage groups that are not set TTL by statements, in ms. If not set (default),
# the TTL will be unlimited.
# Notice: if this property is changed, previous created storage group which are not set TTL will
# also be affected. And negative values are accepted, which means you can only insert future data.
# Datatype: long
# default_ttl=36000000


# Time partition interval in seconds, default is equal to one day
# Datatype: long
# time_partition_interval_for_routing=86400


# Default number of SchemaRegion replicas
# Datatype: int
# schema_replication_factor=1


# Default number of DataRegion replicas
# Datatype: int
# data_replication_factor=1


####################
### thrift rpc configuration
####################


# this feature is under development, set this as false before it is done.
# Datatype: boolean
# rpc_thrift_compression_enable=false


# if true, a snappy based compression method will be called before sending data by the network
# Datatype: boolean
# this feature is under development, set this as false before it is done.
# rpc_advanced_compression_enable=false


# Datatype: int
# rpc_max_concurrent_client_num=65535


# thrift max frame size, 512MB by default
# Datatype: int
# thrift_max_frame_size=536870912


# thrift init buffer size
# Datatype: int
# thrift_init_buffer_size=1024


# Thrift socket and connection timeout between raft nodes, in milliseconds.
# Datatype: int
# connection_timeout_ms=20000


# selector thread (TAsyncClientManager) nums for async thread in a clientManager
# Datatype: int
# selector_thread_nums_of_client_manager=1


####################
### Directory configuration
####################


# system dir
# If this property is unset, system will save the data in the default relative path directory under the confignode folder(i.e., %CONFIGNODE_HOME%/data/system).
# If it is absolute, system will save the data in exact location it points to.
# If it is relative, system will save the data in the relative path directory it indicates under the confignode folder.
# For windows platform
# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
# system_dir=data\\system
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# system_dir=data/system


# consensus dir
# If this property is unset, system will save the data in the default relative path directory under the confignode folder(i.e., %CONFIGNODE_HOME%/data/consensus).
# If it is absolute, system will save the data in exact location it points to.
# If it is relative, system will save the data in the relative path directory it indicates under the confignode folder.
# Note: If data_dir is assigned an empty string(i.e.,zero-size), it will be handled as a relative path.
# For windows platform
# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
# consensus_dir=data\\consensus
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# consensus_dir=data/consensus

# UDF lib dir
# If this property is unset, system will save the data in the default relative path directory under
# the UDF folder(i.e., %CONFIGNODE_HOME%/ext/udf).
#
# If it is absolute, system will save the data in exact location it points to.
# If it is relative, system will save the data in the relative path directory it indicates under the
# UDF folder.
# Note: If data_dir is assigned an empty string(i.e.,zero-size), it will be handled as a relative
# path.
#
# For Window platform
# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is
# absolute. Otherwise, it is relative.
# udf_lib_dir=ext\\udf
#
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# udf_lib_dir=ext/udf


# temporary lib dir
# If this property is unset, system will save the data in the default relative path directory under
# the UDF folder(i.e., %CONFIGNODE_HOME%/ext/temporary).
#
# If it is absolute, system will save the data in exact location it points to.
# If it is relative, system will save the data in the relative path directory it indicates under the
# UDF folder.
# Note: If data_dir is assigned an empty string(i.e.,zero-size), it will be handled as a relative
# path.
#
# For Window platform
# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is
# absolute. Otherwise, it is relative.
# temporary_lib_dir=ext\\temporary
#
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# temporary_lib_dir=ext/temporary


####################
### Procedure Configuration
####################


# Default number of worker thread count
# Datatype: int
#procedure_core_worker_thread_size=4


# Default time interval of completed procedure cleaner work in, time unit is second
# Datatype: int
#procedure_completed_clean_interval=30


# Default ttl of completed procedure, time unit is second
# Datatype: int
#procedure_completed_evict_ttl=800

####################
### Heartbeat configuration
####################


# The heartbeat interval in milliseconds, default is 1000ms
# Datatype: long
# heartbeat_interval=1000


####################
### Routing policy
####################


# The routing policy of read/write requests
# These routing policy are currently supported:
# 1. leader(Default, routing to leader replica)
# 2. greedy(Routing to replica with the lowest load, might cause read un-consistent)
# Datatype: string
# routing_policy=leader


####################
### Read configuration
####################


# The read consistency level
# These consistency levels are currently supported:
# 1. strong(Default, read from the leader replica)
# 2. weak(Read from a random replica)
# Datatype: string
# read_consistency_level=strong


####################
### Authorization Configuration
####################


# which class to serve for authorization. By default, it is LocalFileAuthorizer.
# Another choice is org.apache.iotdb.db.auth.authorizer.OpenIdAuthorizer
# authorizer_provider_class=org.apache.iotdb.commons.auth.authorizer.LocalFileAuthorizer

# If OpenIdAuthorizer is enabled, then openID_url must be set.
# openID_url=

# admin username, default is root
# Datatype: string
# admin_name=root

# encryption provider class
# iotdb_server_encrypt_decrypt_provider=org.apache.iotdb.commons.security.encrypt.MessageDigestEncrypt

# encryption provided class parameter
# iotdb_server_encrypt_decrypt_provider_parameter=

# admin password, default is root
# Datatype: string
# admin_password=root


####################
### RatisConsensus Configuration
####################

# max payload size for a single log-sync-RPC from leader to follower
# partition_region_ratis_log_appender_buffer_size_max = 4194304
# schema_region_ratis_log_appender_buffer_size_max = 4194304
# data_region_ratis_log_appender_buffer_size_max = 4194304

# trigger a snapshot when ratis_snapshot_trigger_threshold logs are written
# partition_region_ratis_snapshot_trigger_threshold = 400000
# schema_region_ratis_snapshot_trigger_threshold = 400000
# data_region_ratis_snapshot_trigger_threshold = 400000

# allow flushing Raft Log asynchronously
# partition_region_ratis_log_unsafe_flush_enable = false
# schema_region_ratis_log_unsafe_flush_enable = false
# data_region_ratis_log_unsafe_flush_enable = false

# max capacity of a single Raft Log segment (by default 24MB)
# partition_region_ratis_log_segment_size_max = 25165824
# schema_region_ratis_log_segment_size_max = 25165824
# data_region_ratis_log_segment_size_max = 25165824

# flow control window for ratis grpc log appender
# partition_region_ratis_grpc_flow_control_window = 4194304
# schema_region_ratis_grpc_flow_control_window = 4194304
# data_region_ratis_grpc_flow_control_window = 4194304

# min election timeout for leader election
# partition_region_ratis_rpc_leader_election_timeout_min_ms = 2000
# schema_region_ratis_rpc_leader_election_timeout_min_ms = 2000
# data_region_ratis_rpc_leader_election_timeout_min_ms = 2000

# max election timeout for leader election
# partition_region_ratis_rpc_leader_election_timeout_max_ms = 4000
# schema_region_ratis_rpc_leader_election_timeout_max_ms = 4000
# data_region_ratis_rpc_leader_election_timeout_max_ms = 4000

####################
### Disk Monitor
####################


# Disk remaining threshold at which DataNode is set to ReadOnly status
# Datatype: double(percentage)
# disk_space_warning_threshold=5.0

