#
# 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
####################


# could set ip or hostname
# Datatype: String
rpc_address=0.0.0.0


# Used for cluster internal RPC communication
# Datatype: int
rpc_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_rpc_address,
# and the port should be consistent with the target ConfigNode's confignode_rpc_port.
# For the first ConfigNode to start, target_config_nodes points to its own ip:port.
# For other ConfigNodes that are started or restarted, target_config_nodes points to any running ConfigNode's ip:port.
# Datatype: String
target_config_nodes=0.0.0.0: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 it's 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 SchemaRegion expected to be managed by each processor.
# Notice: Since each StorageGroup requires at least two DataRegions to manage it's data,
# this parameter doesn't limit the number of DataRegions when there are too many StorageGroups.
# Datatype: Double
# data_region_per_processor=0.5

####################
### 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
# Datatype: long
# time_partition_interval=604800


# 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
