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

####################
### RPC Configuration
####################

# could set 0.0.0.0, 127.0.0.1(for local test) or ipv4 address
# Datatype: String
rpc_address=0.0.0.0

# Datatype: int
rpc_port=6667

####################
### Shuffle Configuration
####################
# Datatype: int
mpp_data_exchange_port=8777

# Datatype: int
# mpp_data_exchange_core_pool_size=10

# Datatype: int
# mpp_data_exchange_max_pool_size=10

# Datatype: int
# mpp_data_exchange_keep_alive_time_in_ms=1000

# Datatype: String
# used for communication between cluster nodes.
# could set 0.0.0.0, 127.0.0.1(for local test) or ipv4 address.
internal_address=0.0.0.0

# Datatype: int
# port for coordinator's communication between cluster nodes.
internal_port=9003

# Datatype: int
# port for consensus's communication for data region between cluster nodes.
data_region_consensus_port=40010

# Datatype: int
# port for consensus's communication for schema region between cluster nodes.
schema_region_consensus_port=50010

# 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.
# When successfully connecting to the ConfigNodeGroup, DataNode will get all online
# config nodes and store them in memory.
# Datatype: String
# Notice: The ip for any target_config_node should never be 0.0.0.0
target_config_nodes=127.0.0.1:22277

# 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_selector_thread_num=1

# Datatype: int
# rpc_min_concurrent_client_num=1

# 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

# max plan node size, note that thrift max frame size must be larger than max plan node size.
# Datatype: int
# max_plan_node_size=536870912

# The maximum number of clients that can be idle for a node's InternalService.
# When the number of idle clients on a node exceeds this number, newly returned clients will be released
# Datatype: int
# core_connection_for_internal_service=100

# The maximum number of clients that can be applied for a node's InternalService
# Datatype: int
# max_connection_for_internal_service=100

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

####################
### Write Ahead Log Configuration
####################

# Write mode of wal
# The details of these three modes are as follows:
# 1. DISABLE: the system will disable wal.
# 2. SYNC: the system will submit wal synchronously, write request will not return until its wal is fsynced to the disk successfully.
# 3. ASYNC: the system will submit wal asynchronously, write request will return immediately no matter its wal is fsynced to the disk successfully.
# The write performance order is DISABLE > ASYNC > SYNC, but only SYNC mode can ensure data durability.
# wal_mode=ASYNC

# wal dirs
# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data).
# If it is absolute, system will save the data in the exact location it points to.
# If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
# If there are more than one directory, please separate them by commas ",".
# Note: If wal_dirs 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.
# wal_dirs=data\\wal
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# wal_dirs=data/wal

# Max number of wal nodes, each node corresponds to one wal directory
# The default value 0 means twice the number of wal dirs.
# Notice: this value affects write performance significantly.
# For non-SSD disks, values between one third and half of storage groups number are recommended.
# Datatype: int
# max_wal_nodes_num=0

# Duration a wal flush operation will wait before calling fsync
# A duration greater than 0 batches multiple wal fsync calls into one. This is useful when disks are slow or WAL write contention exists.
# Notice: this value affects write performance significantly, values in the range of 0ms-10ms are recommended.
# Datatype: long
# fsync_wal_delay_in_ms=3

# Buffer size of each wal node
# If it's a value smaller than 0, use the default value 16 * 1024 * 1024 bytes (16MB).
# Datatype: int
# wal_buffer_size_in_byte=16777216

# Blocking queue capacity of each wal buffer, restricts maximum number of WALEdits cached in the blocking queue.
# Datatype: int
# wal_buffer_queue_capacity=50

# Size threshold of each wal file
# When a wal file's size exceeds this, the wal file will be closed and a new wal file will be created.
# If it's a value smaller than 0, use the default value 10 * 1024 * 1024 (10MB).
# Datatype: long
# wal_file_size_threshold_in_byte=10485760

# Minimum ratio of effective information in wal files
# This value should be between 0.0 and 1.0
# If effective information ratio is below this value, MemTable snapshot or flush will be triggered.
# Increase this value when wal occupies too much disk space. But, if this parameter is too large, the write performance may decline.
# Datatype: double
# wal_min_effective_info_ratio=0.1

# MemTable size threshold for triggering MemTable snapshot in wal
# When a memTable's size (in byte) exceeds this, wal can flush this memtable to disk, otherwise wal will snapshot this memtable in wal.
# If it's a value smaller than 0, use the default value 8 * 1024 * 1024 bytes (8MB).
# Datatype: long
# wal_memtable_snapshot_threshold_in_byte=8388608

# MemTable's max snapshot number in wal
# If one memTable's snapshot number in wal exceeds this value, it will be flushed to disk.
# Datatype: int
# max_wal_memtable_snapshot_num=1

# The period when outdated wal files are periodically deleted
# If this value is too large, outdated wal files may not able to be deleted in time.
# If it's a value smaller than 0, use the default value 20 * 1000 ms (20 seconds).
# Datatype: long
# delete_wal_files_period_in_ms=20000

# The minimum size of wal files when throttle down in MultiLeader consensus
# If it's a value smaller than 0, use the default value 50 * 1024 * 1024 * 1024 bytes (50GB).
# Datatype: long
# multi_leader_throttle_threshold_in_byte=53687091200

# Maximum wait time of write cache in MultiLeader consensus
# If this value is less than or equal to 0, use the default value Long.MAX_VALUE.
# Datatype: long
# multi_leader_cache_window_time_in_ms=-1

####################
### Directory Configuration
####################

# system dir
# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_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 IoTDB 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


# data dirs
# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data/data).
# 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 IoTDB folder.
# If there are more than one directory, please separate them by commas ",".
# Note: If data_dirs 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.
# data_dirs=data\\data
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# data_dirs=data/data


# mult_dir_strategy
# The strategy is used to choose a directory from data_dirs for the system to store a new tsfile.
# System provides four strategies to choose from, or user can create his own strategy by extending org.apache.iotdb.db.conf.directories.strategy.DirectoryStrategy.
# The info of the four strategies are as follows:
# 1. SequenceStrategy: the system will choose the directory in sequence.
# 2. MaxDiskUsableSpaceFirstStrategy: the system will choose the directory whose disk has the maximum space.
# 3. MinFolderOccupiedSpaceFirstStrategy: the system will choose the directory whose folder has the minimum occupied space.
# 4. RandomOnDiskUsableSpaceStrategy: the system will randomly choose the directory based on usable space of disks. The more usable space, the greater the chance of being chosen;
# Set SequenceStrategy,MaxDiskUsableSpaceFirstStrategy and MinFolderOccupiedSpaceFirstStrategy to apply the corresponding strategy.
# If this property is unset, system will use MaxDiskUsableSpaceFirstStrategy as default strategy.
# For this property, fully-qualified class name (include package name) and simple class name are both acceptable.
# multi_dir_strategy=MaxDiskUsableSpaceFirstStrategy

# consensus dir
# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data).
# If it is absolute, system will save the data in the exact location it points to.
# If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
# Note: If consensus_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


# TSFile storage file system. Currently, TsFiles are supported to be stored in LOCAL file system or HDFS.
# Datatype: FSType
# tsfile_storage_fs=LOCAL

# If using HDFS, the absolute file path of Hadoop core-site.xml should be configured
# Datatype: String
# core_site_path=/etc/hadoop/conf/core-site.xml

# If using HDFS, the absolute file path of Hadoop hdfs-site.xml should be configured
# Datatype: String
# hdfs_site_path=/etc/hadoop/conf/hdfs-site.xml

# If using HDFS, hadoop ip can be configured. If there are more than one hdfs_ip, Hadoop HA is used
# Datatype: String
# hdfs_ip=localhost

# If using HDFS, hadoop port can be configured
# Datatype: String
# hdfs_port=9000

# If there are more than one hdfs_ip, Hadoop HA is used. Below are configuration for HA
# If using Hadoop HA, nameservices of hdfs can be configured
# Datatype: String
# dfs_nameservices=hdfsnamespace

# If using Hadoop HA, namenodes under dfs nameservices can be configured
# Datatype: String
# dfs_ha_namenodes=nn1,nn2

# If using Hadoop HA, automatic failover can be enabled or disabled
# Datatype: boolean
# dfs_ha_automatic_failover_enabled=true

# If using Hadoop HA and enabling automatic failover, the proxy provider can be configured
# Datatype: String
# dfs_client_failover_proxy_provider=org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

# If using kerberos to authenticate hdfs, this should be true
# Datatype: boolean
# hdfs_use_kerberos=false

# Full path of kerberos keytab file
# Datatype: String
# kerberos_keytab_file_path=/path

# Kerberos pricipal
# Datatype: String
# kerberos_principal=your principal


####################
### Storage Engine Configuration
####################

# Use this value to set timestamp precision as "ms", "us" or "ns".
# Once the precision is been set, it can not be changed.
# Datatype: String
timestamp_precision=ms

# Default TTL for storage groups that are not set TTL by statements, 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
# Unit: ms
# default_ttl=36000000

# What will the system do when unrecoverable error occurs.
# Datatype: String
# Optional strategies are as follows:
# 1. CHANGE_TO_READ_ONLY: set system status to read-only and the system only accepts query operations.
# 2. SHUTDOWN: the system will be shutdown.
# handle_system_error=CHANGE_TO_READ_ONLY

# Size of log buffer in each metadata operation plan(in byte).
# If the size of a metadata operation plan is larger than this parameter, then it will be rejected by SchemaRegion
# If it sets a value smaller than 0, use the default value 1024*1024
# Datatype: int
# mlog_buffer_size=1048576

# The cycle when metadata log is periodically forced to be written to disk(in milliseconds)
# If sync_mlog_period_in_ms = 0 it means force metadata log to be written to disk after each refreshment
# Set this parameter to 0 may slow down the operation on slow disk.
# sync_mlog_period_in_ms=100

# When a memTable's size (in byte) exceeds this, the memtable is flushed to disk. The default threshold is 1 GB.
# Datatype: long
# memtable_size_threshold=1073741824

# Whether to timed flush sequence tsfiles' memtables.
# Datatype: boolean
# enable_timed_flush_seq_memtable=false

# If a memTable's created time is older than current time minus this, the memtable will be flushed to disk.
# Only check sequence tsfiles' memtables.
# The default flush interval is 60 * 60 * 1000. (unit: ms)
# Datatype: long
# seq_memtable_flush_interval_in_ms=3600000

# The interval to check whether sequence memtables need flushing.
# The default flush check interval is 10 * 60 * 1000. (unit: ms)
# Datatype: long
# seq_memtable_flush_check_interval_in_ms=600000

# Whether to timed flush unsequence tsfiles' memtables.
# Datatype: boolean
# enable_timed_flush_unseq_memtable=true

# If a memTable's created time is older than current time minus this, the memtable will be flushed to disk.
# Only check unsequence tsfiles' memtables.
# The default flush interval is 60 * 60 * 1000. (unit: ms)
# Datatype: long
# unseq_memtable_flush_interval_in_ms=3600000

# The interval to check whether unsequence memtables need flushing.
# The default flush check interval is 10 * 60 * 1000. (unit: ms)
# Datatype: long
# unseq_memtable_flush_check_interval_in_ms=600000

# The sort algorithms used in the memtable's TVList
# TIM: default tim sort,
# QUICK: quick sort,
# BACKWARD: backward sort
# tvlist_sort_algorithm=TIM

# When the average point number of timeseries in memtable exceeds this, the memtable is flushed to disk. The default threshold is 100000.
# Datatype: int
# avg_series_point_number_threshold=100000

# How many threads can concurrently flush. When <= 0, use CPU core number.
# Datatype: int
# concurrent_flush_thread=0

# How many threads can concurrently execute query statement. When <= 0, use CPU core number.
# Datatype: int
# concurrent_query_thread=0

# How many threads can concurrently read data for raw data query. When <= 0, use CPU core number.
# Datatype: int
# concurrent_sub_rawQuery_thread=8

# Blocking queue size for read task in raw data query. Must >= 1.
# Datatype: int
# raw_query_blocking_queue_capacity=5

# whether take over the memory management by IoTDB rather than JVM when serializing memtable as bytes in memory
# (i.e., whether use ChunkBufferPool), value true, false
# Datatype: boolean
# chunk_buffer_pool_enable=false

# The amount of data iterate each time in server (the number of data strips, that is, the number of different timestamps.)
# Datatype: int
# batch_size=100000

# max size for tag and attribute of one time series
# the unit is byte
# Datatype: int
# tag_attribute_total_size=700

# interval num for tag and attribute records when force flushing to disk
# When a certain amount of tag and attribute records is reached, they will be force flushed to disk
# It is possible to lose at most tag_attribute_flush_interval records
# tag_attribute_flush_interval=1000

# In one insert (one device, one timestamp, multiple measurements),
# if enable partial insert, one measurement failure will not impact other measurements
# Datatype: boolean
# enable_partial_insert=true

# the interval to log recover progress of each vsg when starting iotdb
# Datatype: int
# recovery_log_interval_in_ms=5000

# Add a switch to drop ouf-of-order data
# Out-of-order data will impact the aggregation query a lot. Users may not care about discarding some out-of-order data.
# Datatype: boolean
# enable_discard_out_of_order_data=false

####################
### Memory Control Configuration
####################

# Whether to enable memory control
# Datatype: boolean
# enable_mem_control=true

# Memory Allocation Ratio: Write, Read, Schema and Free Memory.
# The parameter form is a:b:c:d, where a, b, c and d are integers. for example: 1:1:1:1 , 6:2:1:1
# If you have high level of writing pressure and low level of reading pressure, please adjust it to for example 6:1:1:2
# write_read_schema_free_memory_proportion=4:3:1:2

# Schema Memory Allocation Ratio: SchemaRegion, SchemaCache, PartitionCache and LastCache.
# The parameter form is a:b:c:d, where a, b, c and d are integers. for example: 1:1:1:1 , 6:2:1:1
# In cluster mode, we recommend 5:3:1:1. In standalone mode, we recommend 8:1:0:1
# schema_memory_allocate_proportion=5:3:1:1

# Memory allocation ratio in StorageEngine: MemTable, Compaction
# The parameter form is a:b:c:d, where a, b, c and d are integers. for example: 8:2 , 7:3
# storage_engine_memory_proportion=8:2

# Max number of concurrent writing time partitions in one storage group
# This parameter is used to control total memTable number when memory control is disabled
# The max number of memTable is 4 * concurrent_writing_time_partition * storage group number
# Datatype: long
# concurrent_writing_time_partition=1

# primitive array size (length of each array) in array pool
# Datatype: int
# primitive_array_size=32

# Ratio of write memory for invoking flush disk, 0.4 by default
# If you have extremely high write load (like batch=1000), it can be set lower than the default value like 0.2
# Datatype: double
# flush_proportion=0.4

# Ratio of write memory allocated for buffered arrays, 0.6 by default
# Datatype: double
# buffered_arrays_memory_proportion=0.6

# Ratio of write memory for rejecting insertion, 0.8 by default
# If you have extremely high write load (like batch=1000) and the physical memory size is large enough,
# it can be set higher than the default value like 0.9
# Datatype: double
# reject_proportion=0.8

# If memory (in byte) of storage group increased more than this threshold, report to system. The default value is 16MB
# Datatype: long
# storage_group_report_threshold=16777216

# allowed max numbers of deduplicated path in one query
# it's just an advised value, the real limitation will be the smaller one between this and the one we calculated
# Datatype: int
# max_deduplicated_path_num=1000

# When an inserting is rejected, waiting period (in ms) to check system again, 50 by default.
# If the insertion has been rejected and the read load is low, it can be set larger.
# Datatype: int
# check_period_when_insert_blocked=50

# When the waiting time (in ms) of an inserting exceeds this, throw an exception. 10000 by default.
# If the insertion has been rejected and the read load is low, it can be set larger
# Datatype: int
# max_waiting_time_when_insert_blocked=10000

# size of ioTaskQueue. The default value is 10
# Datatype: int
# io_task_queue_size_for_flushing=10

# If true, we will estimate each query's possible memory footprint before executing it and deny it if its estimated memory exceeds current free memory
# Datatype: bool
# enable_query_memory_estimation=true

####################
### Upgrade Configurations
####################

# When there exists old version(0.9.x/v1) data, how many thread will be set up to perform upgrade tasks, 1 by default.
# Set to 1 when less than or equal to 0.
# Datatype: int
# upgrade_thread_num=1

####################
### Query Configurations
####################

# the default time period that used in fill query, -1 by default means infinite past time
# Datatype: int, Unit: ms
# default_fill_interval=-1

# the max execution time of a DriverTask
# Datatype: int, Unit: ms
# driver_task_execution_time_slice_in_ms=100

# the max capacity of a TsBlock
# Datatype: int, Unit: byte
# max_tsblock_size_in_bytes=1048576

# the max number of lines in a single TsBlock
# Datatype: int
# max_tsblock_line_numbers=1000

####################
### Compaction Configurations
####################
# sequence space compaction: only compact the sequence files
# Datatype: boolean
# enable_seq_space_compaction=true

# unsequence space compaction: only compact the unsequence files
# Datatype: boolean
# enable_unseq_space_compaction=true

# cross space compaction: compact the unsequence files into the overlapped sequence files
# Datatype: boolean
# enable_cross_space_compaction=true

# the selector of cross space compaction task
# Options: rewrite
# cross_selector=rewrite

# the compaction performer of cross space compaction task
# Options: read_point
# cross_performer=read_point

# the selector of inner sequence space compaction task
# Options: size_tiered
# inner_seq_selector=size_tiered

# the performer of inner sequence space compaction task
# Options: read_chunk
# inner_seq_performer=read_chunk

# the selector of inner unsequence space compaction task
# Options: size_tiered
# inner_unseq_selector=size_tiered

# the performer of inner unsequence space compaction task
# Options: read_point
# inner_unseq_performer=read_point

# The priority of compaction execution
# INNER_CROSS: prioritize inner space compaction, reduce the number of files first
# CROSS_INNER: prioritize cross space compaction, eliminate the unsequence files first
# BALANCE: alternate two compaction types
# compaction_priority=BALANCE

# The target tsfile size in compaction
# Datatype: long, Unit: byte
# target_compaction_file_size=1073741824

# The target chunk size in compaction, default is 1MB
# Datatype: long, Unit: byte
# target_chunk_size=1048576

# The target point nums in one chunk in compaction
# Datatype: long
# target_chunk_point_num=100000

# If the chunk size is lower than this threshold, it will be deserialize into points, default is 128 byte
# Datatype: long, Unit:byte
# chunk_size_lower_bound_in_compaction=128

# If the chunk size is lower than this threshold, it will be deserialize into points
# Datatype: long
# chunk_point_num_lower_bound_in_compaction=100

# The max file when selecting inner space compaction candidate files
# Datatype: int
# max_inner_compaction_candidate_file_num=30

# The max file when selecting cross space compaction candidate files
# At least one unseq file with it's overlapped seq files will be selected even exceeded this number
# Datatype: int
# max_cross_compaction_candidate_file_num=1000

# If one merge file selection runs for more than this time, it will be ended and its current
# selection will be used as final selection.
# When < 0, it means time is unbounded.
# Datatype: long, Unit: ms
# cross_compaction_file_selection_time_budget=30000

# How many threads will be set up to perform compaction, 10 by default.
# Set to 1 when less than or equal to 0.
# Datatype: int
# concurrent_compaction_thread=10

# The interval of compaction task schedule
# Datatype: long, Unit: ms
# compaction_schedule_interval_in_ms=60000

# The interval of compaction task submission
# Datatype: long, Unit: ms
# compaction_submission_interval_in_ms=60000

# The limit of write throughput merge can reach per second
# Datatype: int
# compaction_write_throughput_mb_per_sec=16

# The maximum session idle time. unit: ms
# Idle sessions are the ones that performs neither query or non-query operations for a period of time
# Set to 0 to disable session timeout
# Datatype: int
# session_timeout_threshold=0

# The max executing time of query. unit: ms
# Datatype: int
# query_timeout_threshold=60000

# The maximum allowed concurrently executing queries
# Datatype: int
# max_allowed_concurrent_queries=1000

# The number of sub compaction threads to be set up to perform compaction.
# Currently only works for nonAligned data in cross space compaction and unseq inner space compaction.
# Set to 1 when less than or equal to 0.
# Datatype: int
# sub_compaction_thread_num=4

####################
### Metadata Cache Configuration
####################

# whether to cache meta data(BloomFilter, ChunkMetadata and TimeSeriesMetadata) or not.
# Datatype: boolean
# meta_data_cache_enable=true

# Read memory Allocation Ratio: BloomFilterCache : ChunkCache : TimeSeriesMetadataCache : Coordinator : Operators : DataExchange : timeIndex in TsFileResourceList : others.
# The parameter form is a:b:c:d:e:f:g:h, where a, b, c, d, e, f, g and h are integers. for example: 1:1:1:1:1:1:1:1 , 1:100:200:50:200:200:200:50
# chunk_timeseriesmeta_free_memory_proportion=1:100:200:50:200:200:200:50

####################
### LAST Cache Configuration
####################

# Whether to enable LAST cache
# Datatype: boolean
# enable_last_cache=true

####################
### External sort Configuration
####################
# Is external sort enable
# Datatype: boolean
# enable_external_sort=true

# The maximum number of simultaneous chunk reading for a single time series.
# If the num of simultaneous chunk reading is greater than external_sort_threshold, external sorting is used.
# When external_sort_threshold increases, the number of chunks sorted at the same time in memory may increase and this will occupy more memory.
# When external_sort_threshold decreases, triggering external sorting will increase the time-consuming.
# Datatype: int
# external_sort_threshold=1000

####################
### PIPE Server Configuration
####################
# White IP list of Sync client.
# Please use the form of network segment to present the range of IP, for example: 192.168.0.0/16
# If there are more than one IP segment, please separate them by commas
# The default is to allow all IP to sync
# Datatype: String
# ip_white_list=0.0.0.0/0

####################
### PIPE Sender Configuration
####################
# The maximum number of retry when syncing a file to receiver fails.
# max_number_of_sync_file_retry=5


####################
### performance statistic configuration
####################

# Uncomment following fields to configure the tracing root directory.
# For Window platform, the index is as follows:
# tracing_dir=data\\tracing
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# tracing_dir=data/tracing

####################
### Configurations for watermark module
####################
# Datatype: boolean
# watermark_module_opened=false
# Datatype: String
# watermark_secret_key=IoTDB*2019@Beijing
# Datatype: String
# watermark_bit_string=100101110100
# Datatype: String
# watermark_method=GroupBasedLSBMethod(embed_row_cycle=2,embed_lsb_num=5)


####################
### Configurations for creating schema automatically
####################

# Whether creating schema automatically is enabled
# Datatype: boolean
# enable_auto_create_schema=true

# Storage group level when creating schema automatically is enabled
# e.g. root.sg0.d1.s2
#      we will set root.sg0 as the storage group if storage group level is 1
# Datatype: int
# default_storage_group_level=1

# ALL data types: BOOLEAN, INT32, INT64, FLOAT, DOUBLE, TEXT

# register time series as which type when receiving boolean string "true" or "false"
# Datatype: TSDataType
# boolean_string_infer_type=BOOLEAN

# register time series as which type when receiving an integer string "67"
# Datatype: TSDataType
# integer_string_infer_type=FLOAT

# register time series as which type when receiving an integer string and using float may lose precision
# num > 2 ^ 24
# Datatype: TSDataType
# long_string_infer_type=DOUBLE

# register time series as which type when receiving a floating number string "6.7"
# Datatype: TSDataType
# floating_string_infer_type=FLOAT

# register time series as which type when receiving the Literal NaN. Values can be DOUBLE, FLOAT or TEXT
# Datatype: TSDataType
# nan_string_infer_type=DOUBLE


# BOOLEAN encoding when creating schema automatically is enabled
# Datatype: TSEncoding
# default_boolean_encoding=RLE

# INT32 encoding when creating schema automatically is enabled
# Datatype: TSEncoding
# default_int32_encoding=RLE

# INT64 encoding when creating schema automatically is enabled
# Datatype: TSEncoding
# default_int64_encoding=RLE

# FLOAT encoding when creating schema automatically is enabled
# Datatype: TSEncoding
# default_float_encoding=GORILLA

# DOUBLE encoding when creating schema automatically is enabled
# Datatype: TSEncoding
# default_double_encoding=GORILLA

# TEXT encoding when creating schema automatically is enabled
# Datatype: TSEncoding
# default_text_encoding=PLAIN

####################
### Configurations for tsfile-format
####################

# Datatype: int
# group_size_in_byte=134217728

# The memory size for each series writer to pack page, default value is 64KB
# Datatype: int
# page_size_in_byte=65536

# The maximum number of data points in a page, default 1024*1024
# Datatype: int
# max_number_of_points_in_page=1048576

# Max size limitation of input string
# Datatype: int
# max_string_length=128

# Floating-point precision
# Datatype: int
# float_precision=2

# Encoder configuration
# Encoder of time series, supports TS_2DIFF, PLAIN and RLE(run-length encoding), REGULAR and default value is TS_2DIFF
# time_encoder=TS_2DIFF

# Encoder of value series. default value is PLAIN.
# For int, long data type, also supports TS_2DIFF and RLE(run-length encoding), GORILLA and ZIGZAG.
# value_encoder=PLAIN

# Compression configuration
# Data compression method, supports UNCOMPRESSED, SNAPPY or LZ4. Default value is SNAPPY
# compressor=SNAPPY

# Maximum degree of a metadataIndex node, default value is 256
# Datatype: int
# max_degree_of_index_node=256

# time interval in minute for calculating query frequency
# Datatype: int
# frequency_interval_in_minute=1

# time cost(ms) threshold for slow query
# Datatype: long
# slow_query_threshold=5000

# Signal-noise-ratio (SNR) of FREQ encoding
# Datatype: double
# freq_snr=40.0

# Block size of FREQ encoding
# Datatype: integer
# freq_block_size=1024

####################
### MQTT Broker Configuration
####################

# whether to enable the mqtt service.
# Datatype: boolean
# enable_mqtt_service=false

# the mqtt service binding host.
# Datatype: String
# mqtt_host=0.0.0.0

# the mqtt service binding port.
# Datatype: int
# mqtt_port=1883

# the handler pool size for handing the mqtt messages.
# Datatype: int
# mqtt_handler_pool_size=1

# the mqtt message payload formatter.
# Datatype: String
# mqtt_payload_formatter=json

# max length of mqtt message in byte
# Datatype: int
# mqtt_max_message_size=1048576

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

# Cache size of user and role
# Datatype: int
# author_cache_size=1000

# Cache expire time of user and role
# Datatype: int
# author_cache_expire_time=30

####################
### UDF Configuration
####################

# Used to estimate the memory usage of text fields in a UDF query.
# It is recommended to set this value to be slightly larger than the average length of all text
# records.
# Datatype: int
# udf_initial_byte_array_length_for_memory_control=48

# How much memory may be used in ONE UDF query (in MB).
# The upper limit is 20% of allocated memory for read.
# Datatype: float
# udf_memory_budget_in_mb=30.0

# UDF memory allocation ratio.
# The parameter form is a:b:c, where a, b, and c are integers.
# udf_reader_transformer_collector_memory_proportion=1:1:1

# Uncomment the following field to configure the udf root directory.
# 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_root_dir=ext\\udf
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# udf_root_dir=ext/udf

####################
### Trigger Configuration
####################

# The size of log buffer for every trigger management operation plan. If the size of a trigger
# management operation plan is larger than this parameter, the trigger management operation plan
# will be rejected by TriggerManager.
# Datatype: int
# tlog_buffer_size=1048576

# Uncomment the following field to configure the trigger root directory.
# 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.
# trigger_root_dir=ext\\trigger
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# trigger_root_dir=ext/trigger

# How many threads can be used for evaluating sliding windows. When <= 0, use CPU core number.
# Datatype: int
# concurrent_window_evaluation_thread=0

# Max number of window evaluation tasks that can be pending for execution. When <= 0, the value is
# 64 by default.
# Datatype: int
# max_pending_window_evaluation_tasks=64

####################
### Continuous Query Configuration
####################

# How many thread will be set up to perform continuous queries. When <= 0, use max(1, CPU core number / 2).
# Datatype: int
# continuous_query_execution_thread=2

# Maximum number of continuous query tasks that can be pending for execution. When <= 0, the value is
# 64 by default.
# Datatype: int
# max_pending_continuous_query_tasks=64

# Minimum every interval to perform continuous query.
# The every interval of continuous query instances should not be lower than this limit.
# Datatype: duration
# continuous_query_min_every_interval=1s

# The size of log buffer for every CQ management operation plan. If the size of a CQ
# management operation plan is larger than this parameter, the CQ management operation plan
# will be rejected by CQManager.
# Datatype: int
# cqlog_buffer_size=1048576

####################
### Select-Into Configuration
####################

# The maximum number of rows can be processed in insert-tablet-plan when executing select-into statements.
# When <= 0, use 10000.
# Datatype: int
# select_into_insert_tablet_plan_row_limit=10000


####################
### Insert-Tablets Configuration
####################

# When the insert plan column count reaches the specified threshold, which means that the plan is relatively large. At this time, may be enabled multithreading.
# If the tablet is small, the time of each insertion is short.
# If we enable multithreading, we also need to consider the switching loss between threads,
# so we need to judge the size of the tablet.
# Datatype: int
# insert_multi_tablet_enable_multithreading_column_threshold=10

####################
### Index Configuration
####################

# Uncomment following fields to configure the index root directory.
# For Window platform, the index is as follows:
# index_root_dir=data\\index
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# index_root_dir=data/index

# Is index enable
# Datatype: boolean
# enable_index=false

# How many threads can concurrently build index. When <= 0, use CPU core number.
# Datatype: int
# concurrent_index_build_thread=0

# the default size of sliding window used for the subsequence matching in index framework
# Datatype: int
# default_index_window_range=10

# buffer parameter for index processor.
# Datatype: long
# index_buffer_size=134217728

# whether enable data partition. If disabled, all data belongs to partition 0
# Datatype: boolean
# enable_partition=false

# time range for partitioning data inside each storage group, the unit is second
# Datatype: long
# partition_interval=86400

####################
### Influx DB RPC Service Configuration
####################
# Datatype: boolean
# enable_influxdb_rpc_service=false

# Datatype: int
# influxdb_rpc_port=8086

####################
### Group By Fill Configuration
####################
# Datatype: float
# group_by_fill_cache_size_in_mb=1.0

####################
### Schema Engine Configuration
####################
# Choose the mode of schema engine. The value could be Memory,Schema_File and Rocksdb_based. If the provided value doesn't match any pre-defined value, Memory mode will be used as default.
# Datatype: string
# schema_engine_mode=Memory

# cache size for SchemaRegion.
# This cache is used to improve insert speed where all path check and TSDataType will be cached in SchemaRegion with corresponding Path.
# Datatype: int
# schema_region_device_node_cache_size=10000

# thread pool size for read operation in DataNode's coordinator.
# Datatype: int
# coordinator_read_executor_size=20

# thread pool size for write operation in DataNode's coordinator.
# Datatype: int
# coordinator_write_executor_size=50

# cache size for partition.
# This cache is used to improve partition fetch from config node.
# Datatype: int
# partition_cache_size=1000

####################
### Schema File Configuration
####################
# The minimum size (in bytes) allocated for a node in schema file
# A large number for this will make it faster while occupying more space, or otherwise
# The default 0 means if a flushed internal(entity) had less than 20 children, it will get a segment with the size calculated from total size of its children
# If no child, it would get a segment of 25 bytes, which is the size of segment header
# Datatype: short
# minimum_schema_file_segment_in_bytes=0

# The cache size for schema page in one schema file
# A bigger cache makes it faster but costs more space and more volatile when evicts item from cache
# Datatype: int
# page_cache_in_schema_file=1024

####################
### Trigger Forward
####################
# Number of queues per forwarding trigger
trigger_forward_max_queue_number=8
# The length of one of the queues per forwarding trigger
trigger_forward_max_size_per_queue=2000
# Trigger forwarding data size per batch
trigger_forward_batch_size=50
# Trigger HTTP forward pool size
trigger_forward_http_pool_size=200
# Trigger HTTP forward pool max connection for per route
trigger_forward_http_pool_max_per_route=20
# Trigger MQTT forward pool size
trigger_forward_mqtt_pool_size=4



#######################
### LocalConfigNode ###
#######################

# number of data regions per user-defined storage group
# a data region is the unit of parallelism in memory as all ingestions in one data region are serialized
# recommended value is [data region number] = [CPU core number] / [user-defined storage group number]
# Datatype: int
# data_region_num=1

####################
### External Lib Configuration
####################

# external lib directory for properties loader
# 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.
# external_properties_loader_dir=ext\\loader
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# external_properties_loader_dir=ext/loader

# external lib directory for limiter
# 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.
# external_limiter_dir=ext\\limiter
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# external_limiter_dir=ext/limiter

