<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
   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.
-->
<!-- Do not modify this file directly.  Instead, copy entries that you -->
<!-- wish to modify from this file into ozone-site.xml and change them -->
<!-- there.  If ozone-site.xml does not already exist, create it.      -->

<!--Tags supported are OZONE, CBLOCK, MANAGEMENT, SECURITY, PERFORMANCE,   -->
<!--DEBUG, CLIENT, SERVER, OM, SCM, CRITICAL, RATIS, CONTAINER, REQUIRED, -->
<!--REST, STORAGE, PIPELINE, STANDALONE                                    -->

<configuration>

  <!--Container Settings used by Datanode-->
  <property>
    <name>ozone.container.cache.size</name>
    <value>1024</value>
    <tag>PERFORMANCE, CONTAINER, STORAGE</tag>
    <description>The open container is cached on the data node side. We maintain
      an LRU
      cache for caching the recently used containers. This setting controls the
      size of that cache.
    </description>
  </property>
  <property>
    <name>dfs.container.ipc</name>
    <value>9859</value>
    <tag>OZONE, CONTAINER, MANAGEMENT</tag>
    <description>The ipc port number of container.</description>
  </property>
  <property>
    <name>dfs.container.ipc.random.port</name>
    <value>false</value>
    <tag>OZONE, DEBUG, CONTAINER</tag>
    <description>Allocates a random free port for ozone container. This is used
      only while
      running unit tests.
    </description>
  </property>
  <property>
    <name>dfs.container.chunk.write.sync</name>
    <value>false</value>
    <tag>OZONE, CONTAINER, MANAGEMENT</tag>
    <description>Determines whether the chunk writes in the container happen as
      sync I/0 or buffered I/O operation.
    </description>
  </property>
  <property>
    <name>dfs.container.ratis.statemachinedata.sync.timeout</name>
    <value>10s</value>
    <tag>OZONE, DEBUG, CONTAINER, RATIS</tag>
    <description>Timeout for StateMachine data writes by Ratis.
    </description>
  </property>
  <property>
    <name>dfs.container.ratis.statemachinedata.sync.retries</name>
    <value>-1</value>
    <tag>OZONE, DEBUG, CONTAINER, RATIS</tag>
    <description>Number of times the WriteStateMachineData op will be tried
      before failing, if this value is -1, then this retries indefinitely.
    </description>
  </property>
  <property>
    <name>dfs.container.ratis.log.queue.num-elements</name>
    <value>1024</value>
    <tag>OZONE, DEBUG, CONTAINER, RATIS</tag>
    <description>Limit for the number of operations in Ratis Log Worker.
    </description>
  </property>
  <property>
    <name>dfs.container.ratis.log.queue.byte-limit</name>
    <value>4GB</value>
    <tag>OZONE, DEBUG, CONTAINER, RATIS</tag>
    <description>Byte limit for Ratis Log Worker queue.
    </description>
  </property>
  <property>
    <name>dfs.container.ratis.log.appender.queue.num-elements</name>
    <value>1</value>
    <tag>OZONE, DEBUG, CONTAINER, RATIS</tag>
    <description>Limit for number of append entries in ratis leader's
      log appender queue.
    </description>
  </property>
  <property>
    <name>dfs.container.ratis.log.appender.queue.byte-limit</name>
    <value>32MB</value>
    <tag>OZONE, DEBUG, CONTAINER, RATIS</tag>
    <description>Byte limit for ratis leader's log appender queue.
    </description>
  </property>
  <property>
    <name>dfs.container.ratis.log.purge.gap</name>
    <value>1000000</value>
    <tag>OZONE, DEBUG, CONTAINER, RATIS</tag>
    <description>Purge gap between the last purged commit index
      and the current index, when the leader decides to purge its log.
    </description>
  </property>
  <property>
    <name>dfs.container.ratis.datanode.storage.dir</name>
    <value/>
    <tag>OZONE, CONTAINER, STORAGE, MANAGEMENT, RATIS</tag>
    <description>This directory is used for storing Ratis metadata like logs. If
      this is
      not set then default metadata dirs is used. A warning will be logged if
      this not set. Ideally, this should be mapped to a fast disk like an SSD.
    </description>
  </property>
  <property>
    <name>hdds.datanode.dir</name>
    <value/>
    <tag>OZONE, CONTAINER, STORAGE, MANAGEMENT</tag>
    <description>Determines where on the local filesystem HDDS data will be
      stored. Defaults to dfs.datanode.data.dir if not specified.
      The directories should be tagged with corresponding storage types
      ([SSD]/[DISK]/[ARCHIVE]/[RAM_DISK]) for storage policies. The default
      storage type will be DISK if the directory does not have a storage type
      tagged explicitly.
    </description>
  </property>
  <property>
    <name>hdds.datanode.volume.choosing.policy</name>
    <value/>
    <tag>OZONE, CONTAINER, STORAGE, MANAGEMENT</tag>
    <description>
      The class name of the policy for choosing volumes in the list of
      directories.  Defaults to
      org.apache.hadoop.ozone.container.common.volume.RoundRobinVolumeChoosingPolicy.
      This volume choosing policy selects volumes in a round-robin order.
    </description>
  </property>
  <property>
    <name>dfs.container.ratis.enabled</name>
    <value>false</value>
    <tag>OZONE, MANAGEMENT, PIPELINE, RATIS</tag>
    <description>Ozone supports different kinds of replication pipelines. Ratis
      is one of
      the replication pipeline supported by ozone.
    </description>
  </property>
  <property>
    <name>dfs.container.ratis.ipc</name>
    <value>9858</value>
    <tag>OZONE, CONTAINER, PIPELINE, RATIS, MANAGEMENT</tag>
    <description>The ipc port number of container.</description>
  </property>
  <property>
    <name>dfs.container.ratis.ipc.random.port</name>
    <value>false</value>
    <tag>OZONE,DEBUG</tag>
    <description>Allocates a random free port for ozone ratis port for the
      container. This
      is used only while running unit tests.
    </description>
  </property>
  <property>
    <name>dfs.container.ratis.rpc.type</name>
    <value>GRPC</value>
    <tag>OZONE, RATIS, MANAGEMENT</tag>
    <description>Ratis supports different kinds of transports like netty, GRPC,
      Hadoop RPC
      etc. This picks one of those for this cluster.
    </description>
  </property>
  <property>
    <name>dfs.ratis.snapshot.threshold</name>
    <value>10000</value>
    <tag>OZONE, RATIS</tag>
    <description>Number of transactions after which a ratis snapshot should be
      taken.
    </description>
  </property>
  <property>
    <name>dfs.container.ratis.statemachine.max.pending.apply-transactions</name>
    <value>10000</value>
    <tag>OZONE, RATIS</tag>
    <description>Maximum number of pending apply transactions in a data
      pipeline. The default value is kept same as default snapshot threshold
      dfs.ratis.snapshot.threshold.
    </description>
  </property>
  <property>
    <name>dfs.container.ratis.num.write.chunk.threads</name>
    <value>60</value>
    <tag>OZONE, RATIS, PERFORMANCE</tag>
    <description>Maximum number of threads in the thread pool that Ratis
      will use for writing chunks (60 by default).
    </description>
  </property>
  <property>
    <name>dfs.container.ratis.leader.pending.bytes.limit</name>
    <value>1GB</value>
    <tag>OZONE, RATIS, PERFORMANCE</tag>
    <description>Limit on the total bytes of pending requests after which
      leader starts rejecting requests from client.
    </description>
  </property>
  <property>
    <name>dfs.container.ratis.replication.level</name>
    <value>MAJORITY</value>
    <tag>OZONE, RATIS</tag>
    <description>Replication level to be used by datanode for submitting a
      container command to ratis. Available replication levels are ALL and
      MAJORTIY, MAJORITY is used as the default replication level.
    </description>
  </property>
  <property>
    <name>dfs.container.ratis.num.container.op.executors</name>
    <value>10</value>
    <tag>OZONE, RATIS, PERFORMANCE</tag>
    <description>Number of executors that will be used by Ratis to execute
      container ops.(10 by default).
    </description>
  </property>
  <property>
    <name>dfs.container.ratis.segment.size</name>
    <value>1MB</value>
    <tag>OZONE, RATIS, PERFORMANCE</tag>
    <description>The size of the raft segment used by Apache Ratis on datanodes.
      (1 MB by default)
    </description>
  </property>
  <property>
    <name>dfs.container.ratis.segment.preallocated.size</name>
    <value>16KB</value>
    <tag>OZONE, RATIS, PERFORMANCE</tag>
    <description>The size of the buffer which is preallocated for raft segment
      used by Apache Ratis on datanodes.(16 KB by default)
    </description>
  </property>
  <property>
    <name>dfs.ratis.client.request.max.retries</name>
    <value>180</value>
    <tag>OZONE, RATIS, MANAGEMENT</tag>
    <description>Number of retries for ratis client request.</description>
  </property>
  <property>
    <name>dfs.ratis.client.request.retry.interval</name>
    <value>1000ms</value>
    <tag>OZONE, RATIS, MANAGEMENT</tag>
    <description>Interval between successive retries for a ratis client request.
    </description>
  </property>
  <property>
    <name>dfs.ratis.server.retry-cache.timeout.duration</name>
    <value>600000ms</value>
    <tag>OZONE, RATIS, MANAGEMENT</tag>
    <description>Retry Cache entry timeout for ratis server.</description>
  </property>
  <property>
    <name>dfs.ratis.leader.election.minimum.timeout.duration</name>
    <value>5s</value>
    <tag>OZONE, RATIS, MANAGEMENT</tag>
    <description>The minimum timeout duration for ratis leader election.
        Default is 5s.
    </description>
  </property>
  <property>
    <name>hdds.node.report.interval</name>
    <value>60000ms</value>
    <tag>OZONE, CONTAINER, MANAGEMENT</tag>
    <description>Time interval of the datanode to send node report. Each
      datanode periodically send node report to SCM. Unit could be
      defined with postfix (ns,ms,s,m,h,d)</description>
  </property>
  <property>
    <name>hdds.container.report.interval</name>
    <value>60000ms</value>
    <tag>OZONE, CONTAINER, MANAGEMENT</tag>
    <description>Time interval of the datanode to send container report. Each
      datanode periodically send container report to SCM. Unit could be
      defined with postfix (ns,ms,s,m,h,d)</description>
  </property>
  <property>
    <name>hdds.pipeline.report.interval</name>
    <value>60000ms</value>
    <tag>OZONE, PIPELINE, MANAGEMENT</tag>
    <description>Time interval of the datanode to send pipeline report. Each
      datanode periodically send pipeline report to SCM. Unit could be
      defined with postfix (ns,ms,s,m,h,d)</description>
  </property>


  <property>
    <name>hdds.prometheus.endpoint.enabled</name>
    <value>true</value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>Enable prometheus compatible metric page on the HTTP
      servers.
    </description>
  </property>

  <property>
    <name>hdds.profiler.endpoint.enabled</name>
    <value>false</value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>Enable /prof java profiler servlet page on HTTP server.
    </description>
  </property>

  <!--Ozone Settings-->
  <property>
    <name>ozone.administrators</name>
    <value/>
    <tag>OZONE, SECURITY</tag>
    <description>Ozone administrator users delimited by the comma.
      If not set, only the user who launches an ozone service will be the admin
      user. This property must be set if ozone services are started by different
      users. Otherwise, the RPC layer will reject calls from other servers which
      are started by users not in the list.
    </description>
  </property>
  <property>
    <name>ozone.block.deleting.container.limit.per.interval</name>
    <value>10</value>
    <tag>OZONE, PERFORMANCE, SCM</tag>
    <description>A maximum number of containers to be scanned by block deleting
      service per
      time interval. The block deleting service spawns a thread to handle block
      deletions in a container. This property is used to throttle the number of
      threads spawned for block deletions.
    </description>
  </property>
  <property>
    <name>ozone.block.deleting.limit.per.task</name>
    <value>1000</value>
    <tag>OZONE, PERFORMANCE, SCM</tag>
    <description>A maximum number of blocks to be deleted by block deleting
      service per
      time interval. This property is used to throttle the actual number of
      block deletions on a data node per container.
    </description>
  </property>
  <property>
    <name>ozone.block.deleting.service.interval</name>
    <value>1m</value>
    <tag>OZONE, PERFORMANCE, SCM</tag>
    <description>Time interval of the block deleting service.
      The block deleting service runs on each datanode periodically and
      deletes blocks queued for deletion. Unit could be defined with
      postfix (ns,ms,s,m,h,d)
    </description>
  </property>
  <property>
    <name>ozone.block.deleting.service.timeout</name>
    <value>300000ms</value>
    <tag>OZONE, PERFORMANCE, SCM</tag>
    <description>A timeout value of block deletion service. If this is set
      greater than 0,
      the service will stop waiting for the block deleting completion after this
      time. If timeout happens to a large proportion of block deletion, this
      needs to be increased with ozone.block.deleting.limit.per.task. This
      setting supports multiple time unit suffixes as described in
      dfs.heartbeat.interval. If no suffix is specified, then milliseconds is
      assumed.
    </description>
  </property>
  <property>
    <name>ozone.UnsafeByteOperations.enabled</name>
    <value>true</value>
    <tag>OZONE, PERFORMANCE, CLIENT</tag>
    <description>It specifies whether to use unsafe or safe buffer to byteString
      copy.
    </description>
  </property>
  <property>
    <name>ozone.client.connection.timeout</name>
    <value>5000ms</value>
    <tag>OZONE, PERFORMANCE, CLIENT</tag>
    <description>Connection timeout for Ozone client in milliseconds.
    </description>
  </property>
  <property>
    <name>ozone.client.stream.buffer.flush.size</name>
    <value>16MB</value>
    <tag>OZONE, CLIENT</tag>
    <description>Size which determines at what buffer position , a partial
      flush will be initiated during write. It should be ideally a multiple
      of chunkSize.
    </description>
  </property>
  <property>
    <name>ozone.client.stream.buffer.max.size</name>
    <value>32MB</value>
    <tag>OZONE, CLIENT</tag>
    <description>Size which determines at what buffer position,
      write call be blocked till acknowledgement of the first partial flush
      happens by all servers.
    </description>
  </property>
  <property>
    <name>ozone.client.max.retries</name>
    <value>100</value>
    <tag>OZONE, CLIENT</tag>
    <description>Maximum number of retries by Ozone Client on encountering
      exception while writing a key.
    </description>
  </property>
  <property>
    <name>ozone.client.retry.interval</name>
    <value>0ms</value>
    <tag>OZONE, CLIENT</tag>
    <description>Indicates the time duration a client will wait before
      retrying a write key request on encountering an exception. By default
      there is no wait.
    </description>
  </property>
  <property>
    <name>ozone.client.socket.timeout</name>
    <value>5000ms</value>
    <tag>OZONE, CLIENT</tag>
    <description>Socket timeout for Ozone client. Unit could be defined with
      postfix (ns,ms,s,m,h,d)</description>
  </property>
  <property>
    <name>ozone.key.deleting.limit.per.task</name>
    <value>1000</value>
    <tag>OM, PERFORMANCE</tag>
    <description>
      A maximum number of keys to be scanned by key deleting service
      per time interval in OM. Those keys are sent to delete metadata and
      generate transactions in SCM for next async deletion between SCM
      and DataNode.
    </description>
  </property>
  <property>
    <name>ozone.om.service.ids</name>
    <value></value>
    <tag>OM, HA</tag>
    <description>
      Comma-separated list of OM service Ids. This property allows the client
      to figure out quorum of OzoneManager address.
    </description>
  </property>
  <property>
    <name>ozone.om.internal.service.id</name>
    <value></value>
    <tag>OM, HA</tag>
    <description>
      Service ID of the Ozone Manager. If this is not set fall back to
      ozone.om.service.ids to find the service ID it belongs to.
    </description>
  </property>
  <property>
    <name>ozone.om.nodes.EXAMPLEOMSERVICEID</name>
    <value></value>
    <tag>OM, HA</tag>
    <description>
      Comma-separated list of OM node Ids for a given OM service ID (eg.
      EXAMPLEOMSERVICEID). The OM service ID should be the value (one of the
      values if there are multiple) set for the parameter ozone.om.service.ids.

      Unique identifiers for each OM Node, delimited by commas. This will be
      used by OzoneManagers in HA setup to determine all the OzoneManagers
      belonging to the same OMservice in the cluster. For example, if you
      used “omService1” as the OM service ID previously, and you wanted to
      use “om1”, “om2” and "om3" as the individual IDs of the OzoneManagers,
      you would configure a property ozone.om.nodes.omService1, and its value
      "om1,om2,om3".
    </description>
  </property>
  <property>
    <name>ozone.om.node.id</name>
    <value></value>
    <tag>OM, HA</tag>
    <description>
      The ID of this OM node. If the OM node ID is not configured it
      is determined automatically by matching the local node's address
      with the configured address.

      If node ID is not deterministic from the configuration, then it is set
      to the OmId from the OM version file.
    </description>
  </property>
  <property>
    <name>ozone.om.address</name>
    <value>0.0.0.0:9862</value>
    <tag>OM, REQUIRED</tag>
    <description>
      The address of the Ozone OM service. This allows clients to discover
      the address of the OM.
    </description>
  </property>
  <property>
    <name>ozone.om.handler.count.key</name>
    <value>20</value>
    <tag>OM, PERFORMANCE</tag>
    <description>
      The number of RPC handler threads for OM service endpoints.
    </description>
  </property>
  <property>
    <name>ozone.om.http-address</name>
    <value>0.0.0.0:9874</value>
    <tag>OM, MANAGEMENT</tag>
    <description>
      The address and the base port where the OM web UI will listen on.

      If the port is 0, then the server will start on a free port. However, it
      is best to specify a well-known port, so it is easy to connect and see
      the OM management UI.
    </description>
  </property>
  <property>
    <name>ozone.om.http-bind-host</name>
    <value>0.0.0.0</value>
    <tag>OM, MANAGEMENT</tag>
    <description>
      The actual address the OM web server will bind to. If this optional
      the address is set, it overrides only the hostname portion of
      ozone.om.http-address.
    </description>
  </property>
  <property>
    <name>ozone.om.http.enabled</name>
    <value>true</value>
    <tag>OM, MANAGEMENT</tag>
    <description>
      Property to enable or disable OM web user interface.
    </description>
  </property>
  <property>
    <name>ozone.om.https-address</name>
    <value>0.0.0.0:9875</value>
    <tag>OM, MANAGEMENT, SECURITY</tag>
    <description>
      The address and the base port where the OM web UI will listen
      on using HTTPS.
      If the port is 0 then the server will start on a free port.
    </description>
  </property>
  <property>
    <name>ozone.om.https-bind-host</name>
    <value>0.0.0.0</value>
    <tag>OM, MANAGEMENT, SECURITY</tag>
    <description>
      The actual address the OM web server will bind to using HTTPS.
      If this optional address is set, it overrides only the hostname portion of
      ozone.om.https-address.
    </description>
  </property>
  <property>
    <name>ozone.om.keytab.file</name>
    <value/>
    <tag>OM, SECURITY</tag>
    <description>
      The keytab file for Kerberos authentication in OM.
    </description>
  </property>
  <property>
    <name>ozone.om.db.cache.size.mb</name>
    <value>128</value>
    <tag>OM, PERFORMANCE</tag>
    <description>
      The size of OM DB cache in MB that used for caching files.
      This value is set to an abnormally low value in the default configuration.
      That is to make unit testing easy. Generally, this value should be set to
      something like 16GB or more, if you intend to use Ozone at scale.

      A large value for this key allows a proportionally larger amount of OM
      metadata to be cached in memory. This makes OM operations faster.
    </description>
  </property>
  <property>
    <name>ozone.om.user.max.volume</name>
    <value>1024</value>
    <tag>OM, MANAGEMENT</tag>
    <description>
      The maximum number of volumes a user can have on a cluster.Increasing or
      decreasing this number has no real impact on ozone cluster. This is
      defined only for operational purposes. Only an administrator can create a
      volume, once a volume is created there are no restrictions on the number
      of buckets or keys inside each bucket a user can create.
    </description>
  </property>
  <property>
    <name>ozone.om.db.dirs</name>
    <value/>
    <tag>OZONE, OM, STORAGE, PERFORMANCE</tag>
    <description>
      Directory where the OzoneManager stores its metadata. This should
      be specified as a single directory. If the directory does not
      exist then the OM will attempt to create it.

      If undefined, then the OM will log a warning and fallback to
      ozone.metadata.dirs. This fallback approach is not recommended for
      production environments.
    </description>
  </property>
  <property>
    <name>ozone.metadata.dirs</name>
    <value/>
    <tag>OZONE, OM, SCM, CONTAINER, STORAGE, REQUIRED</tag>
    <description>
      This setting is the fallback location for SCM, OM, Recon and DataNodes
      to store their metadata. This setting may be used only in test/PoC
      clusters to simplify configuration.

      For production clusters or any time you care about performance, it is
      recommended that ozone.om.db.dirs, ozone.scm.db.dirs and
      dfs.container.ratis.datanode.storage.dir be configured separately.
    </description>
  </property>
  <property>
    <name>ozone.metastore.impl</name>
    <value>RocksDB</value>
    <tag>OZONE, OM, SCM, CONTAINER, STORAGE</tag>
    <description>
      Ozone metadata store implementation. Ozone metadata are well
      distributed to multiple services such as ozoneManager, scm. They are stored in
      some local key-value databases. This property determines which database
      library to use. Supported value is either LevelDB or RocksDB.
    </description>
  </property>

  <property>
    <name>ozone.metastore.rocksdb.statistics</name>
    <value>OFF</value>
    <tag>OZONE, OM, SCM, STORAGE, PERFORMANCE</tag>
    <description>
      The statistics level of the rocksdb store. If you use any value from
      org.rocksdb.StatsLevel (eg. ALL or EXCEPT_DETAILED_TIMERS), the rocksdb
      statistics will be exposed over JMX bean with the choosed setting. Set
      it to OFF to not initialize rocksdb statistics at all. Please note that
      collection of statistics could have 5-10% performance penalty.
      Check the rocksdb documentation for more details.
    </description>
  </property>
  <property>
    <name>ozone.scm.db.dirs</name>
    <value/>
    <tag>OZONE, SCM, STORAGE, PERFORMANCE</tag>
    <description>
      Directory where the StorageContainerManager stores its metadata.
      This should be specified as a single directory. If the directory
      does not exist then the SCM will attempt to create it.

      If undefined, then the SCM will log a warning and fallback to
      ozone.metadata.dirs. This fallback approach is not recommended for
      production environments.
    </description>
  </property>
  <property>
    <name>ozone.scm.block.client.address</name>
    <value/>
    <tag>OZONE, SCM</tag>
    <description>The address of the Ozone SCM block client service. If not
      defined value of ozone.scm.client.address is used.
    </description>
  </property>
  <property>
    <name>ozone.scm.block.client.bind.host</name>
    <value>0.0.0.0</value>
    <tag>OZONE, SCM</tag>
    <description>
      The hostname or IP address used by the SCM block client
      endpoint to bind.
    </description>
  </property>
  <property>
    <name>ozone.scm.block.client.port</name>
    <value>9863</value>
    <tag>OZONE, SCM</tag>
    <description>
      The port number of the Ozone SCM block client service.
    </description>
  </property>
  <property>
    <name>ozone.scm.block.deletion.max.retry</name>
    <value>4096</value>
    <tag>OZONE, SCM</tag>
    <description>
      SCM wraps up many blocks in a deletion transaction and sends that to data
      node for physical deletion periodically. This property determines how many
      times SCM is going to retry sending a deletion operation to the data node.
    </description>
  </property>
  <property>
    <name>ozone.scm.block.size</name>
    <value>256MB</value>
    <tag>OZONE, SCM</tag>
    <description>
      The default size of a scm block. This is maps to the default
      Ozone block size.
    </description>
  </property>
  <property>
    <name>ozone.scm.chunk.size</name>
    <value>4MB</value>
    <tag>OZONE, SCM, CONTAINER, PERFORMANCE</tag>
    <description>
      The chunk size for reading/writing chunk operations in bytes.

      The chunk size defaults to 4MB. If the value configured is more than the
      maximum size (32MB), it will be reset to the maximum size (32MB). This
      maps to the network packet sizes and file write operations in the
      client to datanode protocol.

      When tuning this parameter, flow control window parameter should be
      tuned accordingly. Refer to
      hdds.ratis.raft.grpc.flow.control.window for more information.
    </description>
  </property>
  <property>
    <name>ozone.scm.client.address</name>
    <value/>
    <tag>OZONE, SCM, REQUIRED</tag>
    <description>
      The address of the Ozone SCM client service. This is a required setting.

      It is a string in the host:port format. The port number is optional
      and defaults to 9860.
    </description>
  </property>
  <property>
    <name>ozone.scm.client.bind.host</name>
    <value>0.0.0.0</value>
    <tag>OZONE, SCM, MANAGEMENT</tag>
    <description>The hostname or IP address used by the SCM client endpoint to
      bind.
      This setting is used by the SCM only and never used by clients.

      The setting can be useful in multi-homed setups to restrict the
      availability of the SCM client service to a specific interface.

      The default is appropriate for most clusters.
    </description>
  </property>
  <property>
    <name>ozone.scm.client.port</name>
    <value>9860</value>
    <tag>OZONE, SCM, MANAGEMENT</tag>
    <description>The port number of the Ozone SCM client service.</description>
  </property>
  <property>
    <name>ozone.scm.keyvalue.container.deletion-choosing.policy</name>
    <value>
      org.apache.hadoop.ozone.container.common.impl.TopNOrderedContainerDeletionChoosingPolicy
    </value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      The policy used for choosing desired keyvalue containers for block deletion.
      Datanode selects some containers to process block deletion
      in a certain interval defined by ozone.block.deleting.service.interval.
      The number of containers to process in each interval is defined
      by ozone.block.deleting.container.limit.per.interval. This property is
      used to configure the policy applied while selecting containers.
      There are two policies supporting now:
      RandomContainerDeletionChoosingPolicy and
      TopNOrderedContainerDeletionChoosingPolicy.
      org.apache.hadoop.ozone.container.common.impl.RandomContainerDeletionChoosingPolicy
      implements a simply random policy that to return a random list of
      containers.
      org.apache.hadoop.ozone.container.common.impl.TopNOrderedContainerDeletionChoosingPolicy
      implements a policy that choosing top count number of containers in a
      pending-deletion-blocks's num
      based descending order.
    </description>
  </property>
  <property>
    <name>ozone.scm.container.placement.impl</name>
    <value>
      org.apache.hadoop.hdds.scm.container.placement.algorithms.SCMContainerPlacementRandom
    </value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      The full name of class which implements
      org.apache.hadoop.hdds.scm.PlacementPolicy.
      The class decides which datanode will be used to host the container replica. If not set,
      org.apache.hadoop.hdds.scm.container.placement.algorithms.SCMContainerPlacementRandom will be used as default
      value.
    </description>
  </property>
  <property>
    <name>ozone.scm.pipeline.owner.container.count</name>
    <value>3</value>
    <tag>OZONE, SCM, PIPELINE</tag>
    <description>Number of containers per owner in a pipeline.
    </description>
  </property>
  <property>
  <name>ozone.datanode.pipeline.limit</name>
  <value>2</value>
  <tag>OZONE, SCM, PIPELINE</tag>
  <description>Max number of pipelines per datanode can be engaged in.
  </description>
  </property>
  <property>
    <name>ozone.scm.ratis.pipeline.limit</name>
    <value>0</value>
    <tag>OZONE, SCM, PIPELINE</tag>
    <description>Upper limit for how many pipelines can be OPEN in SCM.
      0 as default means there is no limit. Otherwise, the number is the limit
      of max amount of pipelines which are OPEN.
    </description>
  </property>
  <property>
    <name>ozone.scm.pipeline.allocated.timeout</name>
    <value>5m</value>
    <tag>OZONE, SCM, PIPELINE</tag>
    <description>
      Timeout for every pipeline to stay in ALLOCATED stage. When pipeline is created,
      it should be at OPEN stage once pipeline report is successfully received by SCM.
      If a pipeline stays at ALLOCATED longer than the specified period of time,
      it should be scrubbed so that new pipeline can be created.
      This timeout is for how long pipeline can stay at ALLOCATED
      stage until it gets scrubbed.
    </description>
  </property>
  <property>
    <name>ozone.scm.container.size</name>
    <value>5GB</value>
    <tag>OZONE, PERFORMANCE, MANAGEMENT</tag>
    <description>
      Default container size used by Ozone.
      There are two considerations while picking this number. The speed at which
      a container can be replicated, determined by the network speed and the
      metadata that each container generates. So selecting a large number
      creates less SCM metadata, but recovery time will be more. 5GB is a number
      that maps to quick replication times in gigabit networks, but still
      balances the amount of metadata.
    </description>
  </property>
  <property>
    <name>ozone.scm.datanode.address</name>
    <value/>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      The address of the Ozone SCM service used for internal
      communication between the DataNodes and the SCM.

      It is a string in the host:port format. The port number is optional
      and defaults to 9861.

      This setting is optional. If unspecified then the hostname portion
      is picked from the ozone.scm.client.address setting and the
      default service port of 9861 is chosen.
    </description>
  </property>
  <property>
    <name>ozone.scm.datanode.bind.host</name>
    <value/>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      The hostname or IP address used by the SCM service endpoint to
      bind.
    </description>
  </property>
  <property>
    <name>ozone.scm.datanode.id.dir</name>
    <value/>
    <tag>OZONE, MANAGEMENT</tag>
    <description>The path that datanodes will use to store the datanode ID.
      If this value is not set, then datanode ID is created under the
      metadata directory.
    </description>
  </property>
  <property>
    <name>ozone.scm.datanode.port</name>
    <value>9861</value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      The port number of the Ozone SCM service.
    </description>
  </property>
  <property>
    <name>ozone.scm.db.cache.size.mb</name>
    <value>128</value>
    <tag>OZONE, PERFORMANCE</tag>
    <description>SCM keeps track of the Containers in the cluster. This DB holds
      the container metadata. This value is set to a small value to make the
      unit
      testing runs smooth. In production, we recommend a value of 16GB or
      higher. This allows SCM to avoid disk I/O's while looking up the container
      location.
    </description>
  </property>
  <property>
    <name>ozone.scm.dead.node.interval</name>
    <value>10m</value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      The interval between heartbeats before a node is tagged as dead.
    </description>
  </property>
  <property>
    <name>ozone.scm.handler.count.key</name>
    <value>10</value>
    <tag>OZONE, MANAGEMENT, PERFORMANCE</tag>
    <description>
      The number of RPC handler threads for each SCM service
      endpoint.

      The default is appropriate for small clusters (tens of nodes).

      Set a value that is appropriate for the cluster size. Generally, HDFS
      recommends RPC handler count is set to 20 * log2(Cluster Size) with an
      upper limit of 200. However, SCM will not have the same amount of
      traffic as Namenode, so a value much smaller than that will work well too.
    </description>
  </property>
  <property>
    <name>hdds.heartbeat.interval</name>
    <value>30s</value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      The heartbeat interval from a data node to SCM. Yes,
      it is not three but 30, since most data nodes will heart beating via Ratis
      heartbeats. If a client is not able to talk to a data node, it will notify
      OM/SCM eventually. So a 30 second HB seems to work. This assumes that
      replication strategy used is Ratis if not, this value should be set to
      something smaller like 3 seconds.
      ozone.scm.pipeline.close.timeout should also be adjusted accordingly,
      if the default value for this config is not used.
    </description>
  </property>
  <property>
    <name>ozone.scm.heartbeat.log.warn.interval.count</name>
    <value>10</value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      Defines how frequently we will log the missing of a heartbeat to SCM.
      For example in the default case, we will write a warning message for each
      ten consecutive heartbeats that we miss to SCM. This helps in reducing
      clutter in a data node log, but trade off is that logs will have less of
      this statement.
    </description>
  </property>
  <property>
    <name>ozone.scm.heartbeat.rpc-timeout</name>
    <value>1s</value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      Timeout value for the RPC from Datanode to SCM.
    </description>
  </property>
  <property>
    <name>ozone.scm.heartbeat.thread.interval</name>
    <value>3s</value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      When a heartbeat from the data node arrives on SCM, It is queued for
      processing with the time stamp of when the heartbeat arrived. There is a
      heartbeat processing thread inside SCM that runs at a specified interval.
      This value controls how frequently this thread is run.

      There are some assumptions build into SCM such as this value should allow
      the heartbeat processing thread to run at least three times more
      frequently than heartbeats and at least five times more than stale node
      detection time. If you specify a wrong value, SCM will gracefully refuse
      to run. For more info look at the node manager tests in SCM.

      In short, you don't need to change this.
    </description>
  </property>
  <property>
    <name>ozone.scm.http-address</name>
    <value>0.0.0.0:9876</value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      The address and the base port where the SCM web ui will listen on.

      If the port is 0 then the server will start on a free port.
    </description>
  </property>
  <property>
    <name>ozone.scm.http-bind-host</name>
    <value>0.0.0.0</value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      The actual address the SCM web server will bind to. If this
      optional address is set, it overrides only the hostname portion of
      ozone.scm.http-address.
    </description>
  </property>
  <property>
    <name>ozone.scm.http.enabled</name>
    <value>true</value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      Property to enable or disable SCM web ui.
    </description>
  </property>
  <property>
    <name>ozone.scm.https-address</name>
    <value>0.0.0.0:9877</value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      The address and the base port where the SCM web UI will listen
      on using HTTPS.

      If the port is 0 then the server will start on a free port.
    </description>
  </property>
  <property>
    <name>ozone.scm.https-bind-host</name>
    <value>0.0.0.0</value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      The actual address the SCM web server will bind to using HTTPS.
      If this optional address is set, it overrides only the hostname portion of
      ozone.scm.https-address.
    </description>
  </property>
  <property>
    <name>ozone.scm.names</name>
    <value/>
    <tag>OZONE, REQUIRED</tag>
    <description>
      The value of this property is a set of DNS | DNS:PORT | IP
      Address | IP:PORT. Written as a comma separated string. e.g. scm1,
      scm2:8020, 7.7.7.7:7777.
      This property allows datanodes to discover where SCM is, so that
      datanodes can send heartbeat to SCM.
    </description>
  </property>
  <property>
    <name>ozone.scm.stale.node.interval</name>
    <value>5m</value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      The interval for stale node flagging. Please
      see ozone.scm.heartbeat.thread.interval before changing this value.
    </description>
  </property>
  <property>
    <name>ozone.trace.enabled</name>
    <value>false</value>
    <tag>OZONE, DEBUG</tag>
    <description>
      Setting this flag to true dumps the HTTP request/ response in
      the logs. Very useful when debugging REST protocol.
    </description>
  </property>

  <property>
    <name>ozone.scm.container.creation.lease.timeout</name>
    <value>60s</value>
    <tag>OZONE, SCM</tag>
    <description>
      Container creation timeout in milliseconds to be used by SCM. When
      BEGIN_CREATE event happens the container is moved from ALLOCATED to
      CREATING state, SCM will now wait for the configured amount of time
      to get COMPLETE_CREATE event if it doesn't receive it will move the
      container to DELETING.
    </description>
  </property>

  <property>
    <name>ozone.key.preallocation.max.blocks</name>
    <value>64</value>
    <tag>OZONE, OM, PERFORMANCE</tag>
    <description>
      While allocating blocks from OM, this configuration limits the maximum
      number of blocks being allocated. This configuration ensures that the
      allocated block response do not exceed rpc payload limit. If client needs
      more space for the write, separate block allocation requests will be made.
    </description>
  </property>

  <property>
    <name>ozone.client.list.cache</name>
    <value>1000</value>
    <tag>OZONE, PERFORMANCE</tag>
    <description>
      Configuration property to configure the cache size of client list calls.
    </description>
  </property>

  <property>
    <name>ozone.replication</name>
    <value>3</value>
    <tag>OZONE, CLIENT</tag>
    <description>
      Default replication value. The actual number of replications can be
      specified when writing the key. The default is used if replication
      is not specified. Supported values: 1 and 3.
    </description>
  </property>

  <property>
    <name>ozone.replication.type</name>
    <value>RATIS</value>
    <tag>OZONE, CLIENT</tag>
    <description>
      Default replication type to be used while writing key into ozone. The
      value can be specified when writing the key, default is used when
      nothing is specified. Supported values: RATIS, STAND_ALONE and CHAINED.
    </description>
  </property>
  <property>
    <name>hdds.container.close.threshold</name>
    <value>0.9f</value>
    <tag>OZONE, DATANODE</tag>
    <description>
      This determines the threshold to be used for closing a container.
      When the container used percentage reaches this threshold,
      the container will be closed. Value should be a positive, non-zero
      percentage in float notation (X.Yf), with 1.0f meaning 100%.
    </description>
  </property>
  <property>
    <name>ozone.rest.client.http.connection.max</name>
    <value>100</value>
    <tag>OZONE, CLIENT</tag>
    <description>
      This defines the overall connection limit for the connection pool used in
      RestClient.
    </description>
  </property>
  <property>
    <name>ozone.rest.client.http.connection.per-route.max</name>
    <value>20</value>
    <tag>OZONE, CLIENT</tag>
    <description>
      This defines the connection limit per one HTTP route/host. Total max
      connection is limited by ozone.rest.client.http.connection.max property.
    </description>
  </property>

  <property>
    <name>ozone.open.key.cleanup.service.interval.seconds</name>
    <value>86400</value>
    <tag>OZONE, OM, PERFORMANCE</tag>
    <description>
      A background job periodically checks open key entries and delete the expired ones. This entry controls the
      interval of this cleanup check.
    </description>
  </property>

  <property>
    <name>ozone.open.key.expire.threshold</name>
    <value>86400</value>
    <tag>OZONE, OM, PERFORMANCE</tag>
    <description>
      Controls how long an open key operation is considered active. Specifically, if a key
      has been open longer than the value of this config entry, that open key is considered as
      expired (e.g. due to client crash). Default to 24 hours.
    </description>
  </property>

  <property>
    <name>hadoop.tags.custom</name>
    <value>OZONE,MANAGEMENT,SECURITY,PERFORMANCE,DEBUG,CLIENT,SERVER,OM,SCM,
      CRITICAL,RATIS,CONTAINER,REQUIRED,REST,STORAGE,PIPELINE,STANDALONE,S3GATEWAY,RECON</value>
  </property>

  <property>
    <name>ozone.tags.system</name>
    <value>OZONE,MANAGEMENT,SECURITY,PERFORMANCE,DEBUG,CLIENT,SERVER,OM,SCM,
      CRITICAL,RATIS,CONTAINER,REQUIRED,REST,STORAGE,PIPELINE,STANDALONE,S3GATEWAY,TOKEN,TLS,RECON</value>
  </property>


  <property>
    <name>hdds.rest.rest-csrf.enabled</name>
    <value>false</value>
    <description>
      If true, then enables Object Store REST server protection against
      cross-site request forgery (CSRF).
    </description>
  </property>

  <property>
    <name>hdds.rest.http-address</name>
    <value>0.0.0.0:9880</value>
    <description>The http address of Object Store REST server inside the
      datanode.</description>
  </property>


  <property>
    <name>hdds.rest.netty.high.watermark</name>
    <value>65535</value>
    <description>
      High watermark configuration to Netty for Object Store REST server.
    </description>
  </property>

  <property>
    <name>hdds.rest.netty.low.watermark</name>
    <value>32768</value>
    <description>
      Low watermark configuration to Netty for Object Store REST server.
    </description>
  </property>

  <property>
    <name>hdds.datanode.plugins</name>
    <value></value>
    <description>
      Comma-separated list of HDDS datanode plug-ins to be activated when
      HDDS service starts as part of datanode.
    </description>
  </property>
  <property>
    <name>hdds.datanode.storage.utilization.warning.threshold</name>
    <value>0.75</value>
    <tag>OZONE, SCM, MANAGEMENT</tag>
    <description>
      If a datanode overall storage utilization exceeds more than this
      value, a warning will be logged while processing the nodeReport in SCM.
    </description>
  </property>

  <property>
    <name>hdds.datanode.storage.utilization.critical.threshold</name>
    <value>0.95</value>
    <tag>OZONE, SCM, MANAGEMENT</tag>
    <description>
      If a datanode overall storage utilization exceeds more than this
      value, the datanode will be marked out of space.
    </description>
  </property>

  <property>
    <name>hdds.command.status.report.interval</name>
    <value>30s</value>
    <tag>OZONE, DATANODE, MANAGEMENT</tag>
    <description>Time interval of the datanode to send status of commands
      executed since last report. Unit could be defined with
      postfix (ns,ms,s,m,h,d)</description>
  </property>
  <property>
    <name>ozone.scm.pipeline.destroy.timeout</name>
    <value>66s</value>
    <tag>OZONE, SCM, PIPELINE</tag>
    <description>
      Once a pipeline is closed, SCM should wait for the above configured time
      before destroying a pipeline.
    </description>
  </property>
  <property>
    <name>ozone.scm.pipeline.creation.interval</name>
    <value>120s</value>
    <tag>OZONE, SCM, PIPELINE</tag>
    <description>
      SCM schedules a fixed interval job using the configured interval to
      create pipelines.
    </description>
  </property>
  <property>
    <name>ozone.scm.pipeline.creation.auto.factor.one</name>
    <value>true</value>
    <tag>OZONE, SCM, PIPELINE</tag>
    <description>
      If enabled, SCM will auto create RATIS factor ONE pipeline.
    </description>
  </property>
  <property>
    <name>hdds.scm.safemode.threshold.pct</name>
    <value>0.99</value>
    <tag>HDDS,SCM,OPERATION</tag>
    <description> % of containers which should have at least one
      reported replica before SCM comes out of safe mode.
    </description>
  </property>

  <property>
    <name>hdds.scm.wait.time.after.safemode.exit</name>
    <value>5m</value>
    <tag>HDDS,SCM,OPERATION</tag>
    <description> After exiting safemode, wait for configured interval of
      time to start replication monitor and cleanup activities of unhealthy
      pipelines.
    </description>
  </property>

  <property>
    <name>hdds.scm.safemode.enabled</name>
    <value>true</value>
    <tag>HDDS,SCM,OPERATION</tag>
    <description>Boolean value to enable or disable SCM safe mode.
    </description>
  </property>

  <property>
    <name>hdds.scm.safemode.min.datanode</name>
    <value>1</value>
    <tag>HDDS,SCM,OPERATION</tag>
    <description>Minimum DataNodes which should be registered to get SCM out of
      safe mode.
    </description>
  </property>

  <property>
    <name>hdds.scm.safemode.pipeline-availability.check</name>
    <value>true</value>
    <tag>HDDS,SCM,OPERATION</tag>
    <description>
      Boolean value to enable pipeline availability check during SCM safe mode.
    </description>
  </property>

  <property>
    <name>hdds.scm.safemode.healthy.pipeline.pct</name>
    <value>0.10</value>
    <tag>HDDS,SCM,OPERATION</tag>
    <description>
      Percentage of healthy pipelines, where all 3 datanodes are reported in the
      pipeline.
    </description>
  </property>

  <property>
    <name>hdds.scm.safemode.atleast.one.node.reported.pipeline.pct</name>
    <value>0.90</value>
    <tag>HDDS,SCM,OPERATION</tag>
    <description>
      Percentage of pipelines, where at least one datanode is reported in the
      pipeline.
    </description>
  </property>

  <property>
    <name>hdds.container.scrub.enabled</name>
    <value>false</value>
    <tag>DATANODE</tag>
    <description>
      Boolean value to enable data and metadata scrubbing in the containers
      running on each datanode.
    </description>
  </property>

  <property>
    <name>hdds.container.action.max.limit</name>
    <value>20</value>
    <tag>DATANODE</tag>
    <description>
      Maximum number of Container Actions sent by the datanode to SCM in a
      single heartbeat.
    </description>
  </property>

  <property>
    <name>hdds.pipeline.action.max.limit</name>
    <value>20</value>
    <tag>DATANODE</tag>
    <description>
      Maximum number of Pipeline Actions sent by the datanode to SCM in a
      single heartbeat.
    </description>
  </property>
  <property>
    <name>hdds.scm.watcher.timeout</name>
    <value>10m</value>
    <tag>OZONE, SCM, MANAGEMENT</tag>
    <description>
      Timeout for the watchers of the HDDS SCM CommandWatchers. After this
      duration the Copy/Delete container commands will be sent again to the
      datanode unless the datanode confirms the completion.
    </description>
  </property>

  <property>
    <name>hdds.db.profile</name>
    <value>DISK</value>
    <tag>OZONE, OM, PERFORMANCE</tag>
    <description>This property allows user to pick a configuration
    that tunes the RocksDB settings for the hardware it is running
    on. Right now, we have SSD and DISK as profile options.</description>
  </property>

  <property>
    <name>hdds.datanode.replication.work.dir</name>
    <tag>DATANODE</tag>
    <description>Temporary which is used during the container replication
      betweeen datanodes. Should have enough space to store multiple container
      (in compressed format), but doesn't require fast io access such as SSD.
    </description>
  </property>

  <property>
    <name>hdds.scm.safemode.pipeline.creation</name>
    <value>true</value>
    <tag>HDDS,SCM,OPERATION</tag>
    <description>
      Boolean value to enable background pipeline creation in SCM safe mode.
    </description>
  </property>

  <property>
    <name>ozone.s3g.authentication.kerberos.principal</name>
    <value/>
    <tag>OZONE, S3GATEWAY</tag>
    <description>The server principal used by Ozone S3Gateway server. This is
      typically set to
      HTTP/_HOST@REALM.TLD The SPNEGO server principal begins with the prefix
      HTTP/ by convention.</description>
  </property>

  <property>
    <name>ozone.s3g.domain.name</name>
    <value/>
    <tag>OZONE, S3GATEWAY</tag>
    <description>List of Ozone S3Gateway domain names. If multiple
      domain names to be provided, they should be a "," seperated.
      This parameter is only required when virtual host style pattern is
      followed.</description>
  </property>

  <property>
    <name>ozone.s3g.http-address</name>
    <value>0.0.0.0:9878</value>
    <tag>OZONE, S3GATEWAY</tag>
    <description>The address and the base port where the Ozone S3Gateway
      Server will
      listen on.</description>
  </property>

  <property>
    <name>ozone.s3g.http-bind-host</name>
    <value>0.0.0.0</value>
    <tag>OZONE, S3GATEWAY</tag>
    <description>The actual address the HTTP server will bind to. If this optional address
      is set, it overrides only the hostname portion of ozone.s3g.http-address.
      This is useful for making the Ozone S3Gateway HTTP server listen on all
      interfaces by setting it to 0.0.0.0.</description>
  </property>

  <property>
    <name>ozone.s3g.http.enabled</name>
    <value>true</value>
    <tag>OZONE, S3GATEWAY</tag>
    <description>The boolean which enables the Ozone S3Gateway server
      .</description>
  </property>

  <property>
    <name>ozone.s3g.https-address</name>
    <value/>
    <tag>OZONE, S3GATEWAY</tag>
    <description>Ozone S3Gateway serverHTTPS server address and port
      .</description>
  </property>

  <property>
    <name>ozone.s3g.https-bind-host</name>
    <value/>
    <tag>OZONE, S3GATEWAY</tag>
    <description>The actual address the HTTPS server will bind to. If this optional address
      is set, it overrides only the hostname portion of ozone.s3g.https-address.
      This is useful for making the Ozone S3Gateway HTTPS server listen on all
      interfaces by setting it to 0.0.0.0.</description>
  </property>

  <property>
    <name>ozone.s3g.keytab.file</name>
    <value/>
    <tag>OZONE, S3GATEWAY</tag>
    <description>The keytab file used by the S3Gateway server to login as its
      service principal. </description>
  </property>

  <property>
    <name>ozone.om.save.metrics.interval</name>
    <value>5m</value>
    <tag>OZONE, OM</tag>
    <description>Time interval used to store the omMetrics in to a
      file. Background thread periodically stores the OM metrics in to a
      file. Unit could be defined with postfix (ns,ms,s,m,h,d)
    </description>
  </property>
  <property>
    <name>ozone.security.enabled</name>
    <value>false</value>
    <tag> OZONE, SECURITY</tag>
    <description>True if security is enabled for ozone. When this property is
     true, hadoop.security.authentication should be Kerberos.
    </description>
  </property>

  <property>
    <name>ozone.client.checksum.type</name>
    <value>CRC32</value>
    <tag>OZONE, CLIENT, MANAGEMENT</tag>
    <description>The checksum type [NONE/ CRC32/ CRC32C/ SHA256/ MD5] determines
      which algorithm would be used to compute checksum for chunk data.
      Default checksum type is CRC32.
    </description>
  </property>

  <property>
    <name>ozone.client.bytes.per.checksum</name>
    <value>1MB</value>
    <tag>OZONE, CLIENT, MANAGEMENT</tag>
    <description>Checksum will be computed for every bytes per checksum number
      of bytes and stored sequentially. The minimum value for this config is
      256KB.
    </description>
  </property>

  <property>
    <name>ozone.client.verify.checksum</name>
    <value>true</value>
    <tag>OZONE, CLIENT, MANAGEMENT</tag>
    <description>
      Ozone client to verify checksum of the checksum blocksize data.
    </description>
  </property>

  <property>
    <name>ozone.om.lock.fair</name>
    <value>false</value>
    <description>If this is true, the Ozone Manager lock will be used in Fair
      mode, which will schedule threads in the order received/queued. If this is
      false, uses non-fair ordering. See
      java.util.concurrent.locks.ReentrantReadWriteLock
      for more information on fair/non-fair locks.
    </description>
  </property>

  <property>
    <name>ozone.om.ratis.enable</name>
    <value>false</value>
    <tag>OZONE, OM, RATIS, MANAGEMENT</tag>
    <description>Property to enable or disable Ratis server on OM.
    Please note - this is a temporary property to disable OM Ratis server.
    </description>
  </property>

  <property>
    <name>ozone.om.ratis.port</name>
    <value>9872</value>
    <tag>OZONE, OM, RATIS</tag>
    <description>
      The port number of the OzoneManager's Ratis server.
    </description>
  </property>

  <property>
    <name>ozone.om.ratis.rpc.type</name>
    <value>GRPC</value>
    <tag>OZONE, OM, RATIS, MANAGEMENT</tag>
    <description>Ratis supports different kinds of transports like netty, GRPC,
      Hadoop RPC etc. This picks one of those for this cluster.
    </description>
  </property>

  <property>
    <name>ozone.om.ratis.storage.dir</name>
    <value/>
    <tag>OZONE, OM, STORAGE, MANAGEMENT, RATIS</tag>
    <description>This directory is used for storing OM's Ratis metadata like
      logs. If this is not set then default metadata dirs is used. A warning
      will be logged if this not set. Ideally, this should be mapped to a
      fast disk like an SSD.
      If undefined, OM ratis storage dir will fallback to ozone.metadata.dirs.
      This fallback approach is not recommended for production environments.
    </description>
  </property>

  <property>
    <name>ozone.om.ratis.segment.size</name>
    <value>16KB</value>
    <tag>OZONE, OM, RATIS, PERFORMANCE</tag>
    <description>The size of the raft segment used by Apache Ratis on OM.
      (16 KB by default)
    </description>
  </property>

  <property>
    <name>ozone.om.ratis.segment.preallocated.size</name>
    <value>16KB</value>
    <tag>OZONE, OM, RATIS, PERFORMANCE</tag>
    <description>The size of the buffer which is preallocated for raft segment
      used by Apache Ratis on OM.(16 KB by default)
    </description>
  </property>

  <property>
    <name>ozone.om.ratis.log.appender.queue.num-elements</name>
    <value>1024</value>
    <tag>OZONE, DEBUG, OM, RATIS</tag>
    <description>Number of operation pending with Raft's Log Worker.
    </description>
  </property>
  <property>
    <name>ozone.om.ratis.log.appender.queue.byte-limit</name>
    <value>32MB</value>
    <tag>OZONE, DEBUG, OM, RATIS</tag>
    <description>Byte limit for Raft's Log Worker queue.
    </description>
  </property>
  <property>
    <name>ozone.om.ratis.log.purge.gap</name>
    <value>1000000</value>
    <tag>OZONE, OM, RATIS</tag>
    <description>The minimum gap between log indices for Raft server to purge
      its log segments after taking snapshot.
    </description>
  </property>

  <property>
    <name>ozone.om.ratis.snapshot.auto.trigger.threshold</name>
    <value>400000</value>
    <tag>OZONE, DEBUG, OM, RATIS</tag>
    <description>The log index threshold after ratis will auto trigger
      snapshot on the OM state machine.
    </description>
  </property>

  <property>
    <name>ozone.om.ratis.server.request.timeout</name>
    <value>3s</value>
    <tag>OZONE, OM, RATIS, MANAGEMENT</tag>
    <description>The timeout duration for OM's ratis server request .</description>
  </property>

  <property>
    <name>ozone.om.ratis.server.retry.cache.timeout</name>
    <value>600000ms</value>
    <tag>OZONE, OM, RATIS, MANAGEMENT</tag>
    <description>Retry Cache entry timeout for OM's ratis server.</description>
  </property>

  <property>
    <name>ozone.om.ratis.minimum.timeout</name>
    <value>1s</value>
    <tag>OZONE, OM, RATIS, MANAGEMENT</tag>
    <description>The minimum timeout duration for OM's Ratis server rpc.
    </description>
  </property>

  <property>
    <name>ozone.om.leader.election.minimum.timeout.duration</name>
    <value>1s</value>
    <tag>OZONE, OM, RATIS, MANAGEMENT</tag>
    <description>The minimum timeout duration for OM ratis leader election.
      Default is 1s.
    </description>
  </property>

  <property>
    <name>ozone.om.ratis.server.failure.timeout.duration</name>
    <value>120s</value>
    <tag>OZONE, OM, RATIS, MANAGEMENT</tag>
    <description>The timeout duration for ratis server failure detection,
      once the threshold has reached, the ratis state machine will be informed
      about the failure in the ratis ring.
    </description>
  </property>

  <property>
    <name>ozone.om.ratis.server.role.check.interval</name>
    <value>15s</value>
    <tag>OZONE, OM, RATIS, MANAGEMENT</tag>
    <description>The interval between OM leader performing a role
      check on its ratis server. Ratis server informs OM if it
      loses the leader role. The scheduled check is an secondary
      check to ensure that the leader role is updated periodically
      .</description>
  </property>

  <property>
    <name>ozone.om.ratis.snapshot.dir</name>
    <value/>
    <tag>OZONE, OM, STORAGE, MANAGEMENT, RATIS</tag>
    <description>This directory is used for storing OM's snapshot
      related files like the ratisSnapshotIndex and DB checkpoint from leader
      OM.
      If undefined, OM snapshot dir will fallback to ozone.om.ratis.storage.dir.
      This fallback approach is not recommended for production environments.
    </description>
  </property>
  <property>
    <name>ozone.om.snapshot.provider.socket.timeout</name>
    <value>5000s</value>
    <tag>OZONE, OM, HA, MANAGEMENT</tag>
    <description>
      Socket timeout for HTTP call made by OM Snapshot Provider to request
      OM snapshot from OM Leader.
    </description>
  </property>
  <property>
    <name>ozone.om.snapshot.provider.connection.timeout</name>
    <value>5000s</value>
    <tag>OZONE, OM, HA, MANAGEMENT</tag>
    <description>
      Connection timeout for HTTP call made by OM Snapshot Provider to request
      OM snapshot from OM Leader.
    </description>
  </property>
  <property>
    <name>ozone.om.snapshot.provider.request.timeout</name>
    <value>5000ms</value>
    <tag>OZONE, OM, HA, MANAGEMENT</tag>
    <description>
      Connection request timeout for HTTP call made by OM Snapshot Provider to
      request OM snapshot from OM Leader.
    </description>
  </property>

  <property>
    <name>ozone.acl.authorizer.class</name>
    <value>org.apache.hadoop.ozone.security.acl.OzoneAccessAuthorizer</value>
    <tag>OZONE, SECURITY, ACL</tag>
    <description>Acl authorizer for Ozone.
    </description>
  </property>
  <property>
    <name>ozone.acl.enabled</name>
    <value>false</value>
    <tag>OZONE, SECURITY, ACL</tag>
    <description>Key to enable/disable ozone acls.</description>
  </property>
  <property>
    <name>ozone.om.kerberos.keytab.file</name>
    <value></value>
    <tag> OZONE, SECURITY</tag>
    <description> The keytab file used by OzoneManager daemon to login as its
      service principal. The principal name is configured with
      ozone.om.kerberos.principal.
    </description>
  </property>
  <property>
    <name>ozone.om.kerberos.principal</name>
    <value></value>
    <tag> OZONE, SECURITY</tag>
    <description>The OzoneManager service principal. Ex om/_HOST@REALM.COM</description>
  </property>
  <property>
    <name>ozone.om.http.kerberos.principal</name>
    <value>HTTP/_HOST@EXAMPLE.COM</value>
    <description>
      OzoneManager http server kerberos principal.
    </description>
  </property>
  <property>
    <name>ozone.om.http.kerberos.keytab</name>
    <value>/etc/security/keytabs/HTTP.keytab</value>
    <description>
      OzoneManager http server kerberos keytab.
    </description>
  </property>
  <property>
    <name>hdds.key.len</name>
    <value>2048</value>
    <tag>SCM, HDDS, X509, SECURITY</tag>
    <description>
      SCM CA key length.  This is an algorithm-specific metric, such as modulus length, specified in number of bits.
    </description>
  </property>
  <property>
    <name>hdds.key.dir.name</name>
    <value>keys</value>
    <tag>SCM, HDDS, X509, SECURITY</tag>
    <description>
      Directory to store public/private key for SCM CA. This is relative to ozone/hdds meteadata dir.
    </description>
  </property>
  <property>
    <name>hdds.block.token.expiry.time</name>
    <value>1d</value>
    <tag>OZONE, HDDS, SECURITY, TOKEN</tag>
    <description>
      Default value for expiry time of block token. This
      setting supports multiple time unit suffixes as described in
      dfs.heartbeat.interval. If no suffix is specified, then milliseconds is
      assumed.
    </description>
  </property>

  <property>
    <name>hdds.block.token.enabled</name>
    <value>false</value>
    <tag>OZONE, HDDS, SECURITY, TOKEN</tag>
    <description>True if block tokens are enabled, else false.</description>
  </property>
  <property>
    <name>hdds.x509.file.name</name>
    <value>certificate.crt</value>
    <tag>OZONE, HDDS, SECURITY</tag>
    <description>Certificate file name.</description>
  </property>
  <property>
    <name>hdds.grpc.tls.provider</name>
    <value>OPENSSL</value>
    <tag>OZONE, HDDS, SECURITY, TLS</tag>
    <description>HDDS GRPC server TLS provider.</description>
  </property>
  <property>
    <name>hdds.grpc.tls.enabled</name>
    <value>false</value>
    <tag>OZONE, HDDS, SECURITY, TLS</tag>
    <description>If HDDS GRPC server TLS is enabled.</description>
  </property>
  <property>
    <name>hdds.x509.default.duration</name>
    <value>P365D</value>
    <tag>OZONE, HDDS, SECURITY</tag>
    <description>Default duration for which x509 certificates issued by SCM are
      valid. The formats accepted are based on the ISO-8601 duration format
      PnDTnHnMn.nS</description>
  </property>
  <property>
    <name>hdds.x509.dir.name</name>
    <value>certs</value>
    <tag>OZONE, HDDS, SECURITY</tag>
    <description>X509 certificate directory name.</description>
  </property>
  <property>
    <name>hdds.x509.max.duration</name>
    <value>P1865D</value>
    <tag>OZONE, HDDS, SECURITY</tag>
    <description>Max time for which certificate issued by SCM CA are valid.
      . The formats accepted are based on the ISO-8601 duration format
      PnDTnHnMn.nS</description>
  </property>
  <property>
    <name>hdds.x509.signature.algorithm</name>
    <value>SHA256withRSA</value>
    <tag>OZONE, HDDS, SECURITY</tag>
    <description>X509 signature certificate.</description>
  </property>
  <property>
    <name>ozone.scm.security.handler.count.key</name>
    <value>2</value>
    <tag>OZONE, HDDS, SECURITY</tag>
    <description>Threads configured for SCMSecurityProtocolServer.</description>
  </property>
  <property>
    <name>ozone.scm.security.service.address</name>
    <value/>
    <tag>OZONE, HDDS, SECURITY</tag>
    <description>Address of SCMSecurityProtocolServer.</description>
  </property>
  <property>
    <name>ozone.scm.security.service.bind.host</name>
    <value>0.0.0.0</value>
    <tag>OZONE, HDDS, SECURITY</tag>
    <description>SCM security server host.</description>
  </property>
  <property>
    <name>ozone.scm.security.service.port</name>
    <value>9961</value>
    <tag>OZONE, HDDS, SECURITY</tag>
    <description>SCM security server port.</description>
  </property>

  <property>
    <name>hdds.metadata.dir</name>
    <value/>
    <tag>X509, SECURITY</tag>
    <description>
      Absolute path to HDDS metadata dir.
    </description>
  </property>
  <property>
    <name>hdds.priv.key.file.name</name>
    <value>private.pem</value>
    <tag>X509, SECURITY</tag>
    <description>
      Name of file which stores private key generated for SCM CA.
    </description>
  </property>
  <property>
    <name>hdds.public.key.file.name</name>
    <value>public.pem</value>
    <tag>X509, SECURITY</tag>
    <description>
      Name of file which stores public key generated for SCM CA.
    </description>
  </property>
  <property>
    <name>ozone.manager.delegation.remover.scan.interval</name>
    <value>3600000</value>
    <description>
      Time interval after which ozone secret manger scans for expired
      delegation token.
    </description>
  </property>
  <property>
    <name>ozone.manager.delegation.token.renew-interval</name>
    <value>1d</value>
    <description>
      Default time interval after which ozone delegation token will
      require renewal before any further use.
    </description>
  </property>
  <property>
    <name>ozone.manager.delegation.token.max-lifetime</name>
    <value>7d</value>
    <description>
      Default max time interval after which ozone delegation token will
      not be renewed.
    </description>
  </property>

  <property>
    <name>ozone.fs.isolated-classloader</name>
    <value></value>
    <tag>OZONE, OZONEFS</tag>
    <description>
      Enable it for older hadoops to separate the classloading of all the
      Ozone classes. With 'true' value, ozonefs can be used with older
      hadoop versions as the hadoop3/ozone related classes are loaded by
      an isolated classloader.

      Default depends from the used jar. true for ozone-filesystem-lib-legacy
      jar and false for the ozone-filesystem-lib-current.jar
    </description>
  </property>
  <property>
    <name>ozone.manager.db.checkpoint.transfer.bandwidthPerSec</name>
    <value>0</value>
    <tag>OZONE</tag>
    <description>
      Maximum bandwidth used for Ozone Manager DB checkpoint download through
      the servlet.
    </description>
  </property>

  <property>
    <name>ozone.freon.http-address</name>
    <value>0.0.0.0:9884</value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      The address and the base port where the FREON web ui will listen on.
      If the port is 0 then the server will start on a free port.
    </description>
  </property>
  <property>
    <name>ozone.freon.http-bind-host</name>
    <value>0.0.0.0</value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      The actual address the Freon web server will bind to. If this
      optional address is set, it overrides only the hostname portion of
      ozone.freon.http-address.
    </description>
  </property>
  <property>
    <name>ozone.freon.http.enabled</name>
    <value>true</value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      Property to enable or disable FREON web ui.
    </description>
  </property>
  <property>
    <name>ozone.freon.https-address</name>
    <value>0.0.0.0:9885</value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      The address and the base port where the Freon web server will listen
      on using HTTPS.
      If the port is 0 then the server will start on a free port.
    </description>
  </property>
  <property>
    <name>ozone.freon.https-bind-host</name>
    <value>0.0.0.0</value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      The actual address the Freon web server will bind to using HTTPS.
      If this optional address is set, it overrides only the hostname portion of
      ozone.freon.http-address.
    </description>
  </property>
  <property>
    <name>ozone.freon.http.kerberos.principal</name>
    <value>HTTP/_HOST@EXAMPLE.COM</value>
    <tag>SECURITY</tag>
    <description>
     Security principal used by freon.
    </description>
  </property>
  <property>
    <name>ozone.freon.http.kerberos.keytab</name>
    <value>/etc/security/keytabs/HTTP.keytab</value>
    <tag>SECURITY</tag>
    <description>
       Keytab used by Freon.
    </description>
  </property>
  <property>
    <name>hdds.security.client.datanode.container.protocol.acl</name>
    <value>*</value>
    <tag>SECURITY</tag>
    <description>
      Comma separated list of users and groups allowed to access
      client datanode container protocol.
    </description>
  </property>
  <property>
    <name>hdds.security.client.scm.block.protocol.acl</name>
    <value>*</value>
    <tag>SECURITY</tag>
    <description>
      Comma separated list of users and groups allowed to access
      client scm block protocol.
    </description>
  </property>
  <property>
    <name>hdds.security.client.scm.certificate.protocol.acl</name>
    <value>*</value>
    <tag>SECURITY</tag>
    <description>
      Comma separated list of users and groups allowed to access
      client scm certificate protocol.
    </description>
  </property>
  <property>
    <name>hdds.security.client.scm.container.protocol.acl</name>
    <value>*</value>
    <tag>SECURITY</tag>
    <description>
      Comma separated list of users and groups allowed to access
      client scm container protocol.
    </description>
  </property>
  <property>
    <name>ozone.om.security.client.protocol.acl</name>
    <value>*</value>
    <tag>SECURITY</tag>
    <description>
      Comma separated list of users and groups allowed to access
      client ozone manager protocol.
    </description>
  </property>

  <property>
    <name>hdds.datanode.http.kerberos.principal</name>
    <value>HTTP/_HOST@EXAMPLE.COM</value>
    <tag>HDDS, SECURITY, MANAGEMENT</tag>
    <description>
      The kerberos principal for the datanode http server.
    </description>
  </property>
  <property>
    <name>hdds.datanode.http.kerberos.keytab</name>
    <value>/etc/security/keytabs/HTTP.keytab</value>
    <tag>HDDS, SECURITY, MANAGEMENT</tag>
    <description>
      The kerberos keytab file for datanode http server
    </description>
  </property>
  <property>
    <name>hdds.datanode.http-address</name>
    <value>0.0.0.0:9882</value>
    <tag>HDDS, MANAGEMENT</tag>
    <description>
      The address and the base port where the Datanode web ui will listen on.
      If the port is 0 then the server will start on a free port.
    </description>
  </property>
  <property>
    <name>hdds.datanode.http-bind-host</name>
    <value>0.0.0.0</value>
    <tag>HDDS, MANAGEMENT</tag>
    <description>
      The actual address the Datanode web server will bind to. If this
      optional address is set, it overrides only the hostname portion of
      hdds.datanode.http-address.
    </description>
  </property>
  <property>
    <name>hdds.datanode.http.enabled</name>
    <value>true</value>
    <tag>HDDS, MANAGEMENT</tag>
    <description>
      Property to enable or disable Datanode web ui.
    </description>
  </property>
  <property>
    <name>hdds.datanode.https-address</name>
    <value>0.0.0.0:9883</value>
    <tag>HDDS, MANAGEMENT, SECURITY</tag>
    <description>
      The address and the base port where the Datanode web UI will listen
      on using HTTPS.

      If the port is 0 then the server will start on a free port.
    </description>
  </property>
  <property>
    <name>hdds.datanode.https-bind-host</name>
    <value>0.0.0.0</value>
    <tag>HDDS, MANAGEMENT, SECURITY</tag>
    <description>
      The actual address the Datanode web server will bind to using HTTPS.
      If this optional address is set, it overrides only the hostname portion of
      hdds.datanode.http-address.
    </description>
  </property>
  <property>
    <name>ozone.client.failover.max.attempts</name>
    <value>15</value>
    <description>
      Expert only. Ozone RpcClient attempts talking to each OzoneManager
      ipc.client.connect.max.retries (default = 10) number of times before
      failing over to another OzoneManager, if available. This parameter
      represents the number of times the client will failover before giving up.
    </description>
  </property>
  <property>
    <name>ozone.client.failover.sleep.base.millis</name>
    <value>500</value>
    <description>
      Expert only. The time to wait, in milliseconds, between failover
      attempts increases exponentially as a function of the number of
      attempts made so far, with a random factor of +/- 50%. This option
      specifies the base value used in the failover calculation. The
      first failover will retry immediately. The 2nd failover attempt
      will delay at least ozone.client.failover.sleep.base.millis
      milliseconds. And so on.
    </description>
  </property>
  <property>
    <name>ozone.client.failover.sleep.max.millis</name>
    <value>15000</value>
    <description>
      Expert only. The time to wait, in milliseconds, between failover
      attempts increases exponentially as a function of the number of
      attempts made so far, with a random factor of +/- 50%. This option
      specifies the maximum value to wait between failovers.
      Specifically, the time between two failover attempts will not
      exceed +/- 50% of ozone.client.failover.sleep.max.millis
      milliseconds.
    </description>
  </property>
  <property>
    <name>ozone.recon.http.enabled</name>
    <value>true</value>
    <tag>RECON, MANAGEMENT</tag>
    <description>
      Property to enable or disable Recon web user interface.
    </description>
  </property>
  <property>
    <name>ozone.recon.http-address</name>
    <value>0.0.0.0:9888</value>
    <tag>RECON, MANAGEMENT</tag>
    <description>
      The address and the base port where the Recon web UI will listen on.

      If the port is 0, then the server will start on a free port. However, it
      is best to specify a well-known port, so it is easy to connect and see
      the Recon management UI.
    </description>
  </property>
  <property>
    <name>ozone.recon.http-bind-host</name>
    <value>0.0.0.0</value>
    <tag>RECON, MANAGEMENT</tag>
    <description>
      The actual address the Recon server will bind to. If this optional
      the address is set, it overrides only the hostname portion of
      ozone.recon.http-address.
    </description>
  </property>
  <property>
    <name>ozone.recon.https-bind-host</name>
    <value>0.0.0.0</value>
    <tag>RECON, MANAGEMENT, SECURITY</tag>
    <description>
      The actual address the Recon web server will bind to using HTTPS.
      If this optional address is set, it overrides only the hostname portion of
      ozone.recon.https-address.
    </description>
  </property>
  <property>
    <name>ozone.recon.https-address</name>
    <value>0.0.0.0:9889</value>
    <tag>RECON, MANAGEMENT, SECURITY</tag>
    <description>
      The address and the base port where the Recon web UI will listen
      on using HTTPS. If the port is 0 then the server will start on a free
      port.
    </description>
  </property>
  <property>
    <name>ozone.recon.keytab.file</name>
    <value/>
    <tag>RECON, SECURITY</tag>
    <description>
      The keytab file for Kerberos authentication in Recon.
    </description>
  </property>
  <property>
    <name>ozone.recon.authentication.kerberos.principal</name>
    <value/>
    <tag>RECON</tag>
    <description>The server principal used by Ozone Recon server. This is
      typically set to HTTP/_HOST@REALM.TLD The SPNEGO server principal
      begins with the prefix HTTP/ by convention.
    </description>
  </property>
  <property>
    <name>ozone.recon.container.db.cache.size.mb</name>
    <value>128</value>
    <tag>RECON, PERFORMANCE</tag>
    <description>
      The size of Recon DB cache in MB that used for caching files.
      This value is set to an abnormally low value in the default configuration.
      That is to make unit testing easy. Generally, this value should be set to
      something like 16GB or more, if you intend to use Recon at scale.

      A large value for this key allows a proportionally larger amount of Recon
      container DB to be cached in memory. This makes Recon Container-Key
      operations faster.
    </description>
  </property>
  <property>
    <name>ozone.recon.db.dir</name>
    <value/>
    <tag>OZONE, RECON, STORAGE, PERFORMANCE</tag>
    <description>
      Directory where the Recon Server stores its metadata. This should
      be specified as a single directory. If the directory does not
      exist then the Recon will attempt to create it.

      If undefined, then the Recon will log a warning and fallback to
      ozone.metadata.dirs. This fallback approach is not recommended for
      production environments.
    </description>
  </property>
  <property>
    <name>ozone.scm.network.topology.schema.file</name>
    <value>network-topology-default.xml</value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      The schema file defines the ozone network topology. We currently support
      xml(default) and yaml format. Refer to the samples in the topology
      awareness document for xml and yaml topology definition samples.
    </description>
  </property>
  <property>
    <name>ozone.network.topology.aware.read</name>
    <value>false</value>
    <tag>OZONE, PERFORMANCE</tag>
    <description>
      Whether to enable topology aware read to improve the read performance.
    </description>
  </property>
  <property>
    <name>ozone.recon.container.db.impl</name>
    <value>RocksDB</value>
    <tag>OZONE, RECON, STORAGE</tag>
    <description>
      Ozone Recon container DB store implementation.Supported value is either
      LevelDB or RocksDB.
    </description>
  </property>
  <property>
    <name>ozone.recon.om.db.dir</name>
  <value/>
  <tag>OZONE, RECON, STORAGE</tag>
  <description>
    Directory where the Recon Server stores its OM snapshot DB. This should
    be specified as a single directory. If the directory does not
    exist then the Recon will attempt to create it.

    If undefined, then the Recon will log a warning and fallback to
    ozone.metadata.dirs. This fallback approach is not recommended for
    production environments.
  </description>
</property>
  <property>
    <name>recon.om.connection.request.timeout</name>
    <value>5000</value>
    <tag>OZONE, RECON, OM</tag>
    <description>
      Connection request timeout in milliseconds for HTTP call made by Recon to
      request OM DB snapshot.
    </description>
  </property>
  <property>
    <name>recon.om.connection.timeout</name>
    <value>5s</value>
    <tag>OZONE, RECON, OM</tag>
    <description>
      Connection timeout for HTTP call in milliseconds made by Recon to request
      OM snapshot.
    </description>
  </property>
  <property>
    <name>recon.om.socket.timeout</name>
    <value>5s</value>
    <tag>OZONE, RECON, OM</tag>
    <description>
      Socket timeout in milliseconds for HTTP call made by Recon to request
      OM snapshot.
    </description>
  </property>
  <property>
    <name>recon.om.snapshot.task.initial.delay</name>
    <value>1m</value>
    <tag>OZONE, RECON, OM</tag>
    <description>
      Initial delay in MINUTES by Recon to request OM DB Snapshot.
    </description>
  </property>
  <property>
    <name>recon.om.snapshot.task.interval.delay</name>
    <value>10m</value>
    <tag>OZONE, RECON, OM</tag>
    <description>
      Interval in MINUTES by Recon to request OM DB Snapshot.
    </description>
  </property>
  <property>
    <name>recon.om.snapshot.task.flush.param</name>
    <value>false</value>
    <tag>OZONE, RECON, OM</tag>
    <description>
      Request to flush the OM DB before taking checkpoint snapshot.
    </description>
  </property>
  <property>
    <name>hdds.tracing.enabled</name>
    <value>true</value>
    <tag>OZONE, HDDS</tag>
    <description>
      If enabled, tracing information is sent to tracing server.
    </description>
  </property>
  <property>
    <name>ozone.recon.sql.db.driver</name>
    <value>org.sqlite.JDBC</value>
    <tag>OZONE, RECON</tag>
    <description>
      Database driver class name available on the
      Ozone Recon classpath.
    </description>
  </property>
  <property>
    <name>ozone.recon.sql.db.jdbc.url</name>
    <value>jdbc:sqlite:${ozone.recon.db.dir}/ozone_recon_sqlite.db</value>
    <tag>OZONE, RECON</tag>
    <description>
      Ozone Recon SQL database jdbc url.
    </description>
  </property>
  <property>
    <name>ozone.recon.sql.db.username</name>
    <value/>
    <tag>OZONE, RECON</tag>
    <description>
      Ozone Recon SQL database username.
    </description>
  </property>
  <property>
    <name>ozone.recon.sql.db.password</name>
    <value/>
    <tag>OZONE, RECON</tag>
    <description>
      Ozone Recon database password.
    </description>
  </property>
  <property>
    <name>ozone.recon.sql.db.auto.commit</name>
    <value>false</value>
    <tag>OZONE, RECON</tag>
    <description>
      Sets the Ozone Recon database connection property of auto-commit to
      true/false.
    </description>
  </property>
  <property>
    <name>ozone.recon.sql.db.conn.timeout</name>
    <value>30000</value>
    <tag>OZONE, RECON</tag>
    <description>
      Sets time in milliseconds before call to getConnection is timed out.
    </description>
  </property>
  <property>
    <name>ozone.recon.sql.db.conn.max.active</name>
    <value>1</value>
    <tag>OZONE, RECON</tag>
    <description>
      The max active connections to the SQL database. The default SQLite
      database only allows single active connection, set this to a
      reasonable value like 10, for external production database.
    </description>
  </property>
  <property>
    <name>ozone.recon.sql.db.conn.max.age</name>
    <value>1800</value>
    <tag>OZONE, RECON</tag>
    <description>
      Sets maximum time a connection can be active in seconds.
    </description>
  </property>
  <property>
    <name>ozone.recon.sql.db.conn.idle.max.age</name>
    <value>3600</value>
    <tag>OZONE, RECON</tag>
    <description>
      Sets maximum time to live for idle connection in seconds.
    </description>
  </property>
  <property>
    <name>ozone.recon.sql.db.conn.idle.test.period</name>
    <value>60</value>
    <tag>OZONE, RECON</tag>
    <description>
      This sets the time (in seconds), for a connection to remain idle before
      sending a test query to the DB. This is useful to prevent a DB from
      timing out connections on its end.
    </description>
  </property>
  <property>
    <name>ozone.recon.sql.db.conn.idle.test</name>
    <value>SELECT 1</value>
    <tag>OZONE, RECON</tag>
    <description>
      The query to send to the DB to maintain keep-alives and test for dead
      connections.
    </description>
  </property>
  <property>
    <name>ozone.recon.task.thread.count</name>
    <value>1</value>
    <tag>OZONE, RECON</tag>
    <description>
      The number of Recon Tasks that are waiting on updates from OM.
    </description>
  </property>
  <property>
    <name>ozone.client.list.trash.keys.max</name>
    <value>1000</value>
    <tag>OZONE, CLIENT</tag>
    <description>
      The maximum number of keys to return for a list trash request.
    </description>
  </property>
  <property>
    <name>ozone.http.basedir</name>
    <value></value>
    <tag>OZONE, OM, SCM, MANAGEMENT</tag>
    <description>
      The base dir for HTTP Jetty server to extract contents. If this property
      is not configured, by default, Jetty will create a directory inside the
      directory named by the java.io.tmpdir System property（/tmp by default）.
      While in production environment, it's strongly suggested to instruct Jetty
      to use a different parent directory by setting this property to the name
      of the desired parent directory. The value of the property will be used to
      set Jetty context attribute 'org.eclipse.jetty.webapp.basetempdir'.
      The directory named by this property must exist and be writeable.
    </description>
  </property>
  <property>
    <name>ozone.http.policy</name>
    <value>HTTP_ONLY</value>
    <tag>OZONE, SECURITY, MANAGEMENT</tag>
    <description>Decide if HTTPS(SSL) is supported on Ozone
      This configures the HTTP endpoint for Ozone daemons:
      The following values are supported:
      - HTTP_ONLY : Service is provided only on http
      - HTTPS_ONLY : Service is provided only on https
      - HTTP_AND_HTTPS : Service is provided both on http and https
    </description>
  </property>
  <property>
    <name>ozone.https.client.need-auth</name>
    <tag>OZONE, SECURITY, MANAGEMENT</tag>
    <value>false</value>
    <description>
      Whether SSL client certificate authentication is required
    </description>
  </property>
  <property>
    <name>ozone.https.client.keystore.resource</name>
    <tag>OZONE, SECURITY, MANAGEMENT</tag>
    <value>ssl-client.xml</value>
    <description>
      Resource file from which ssl client keystore
      information will be extracted
    </description>
  </property>
  <property>
    <name>ozone.https.server.keystore.resource</name>
    <tag>OZONE, SECURITY, MANAGEMENT</tag>
    <value>ssl-server.xml</value>
    <description>Resource file from which ssl server keystore
      information will be extracted
    </description>
  </property>
  <property>
    <name>ssl.server.keystore.keypassword</name>
    <tag>OZONE, SECURITY, MANAGEMENT</tag>
    <value></value>
    <description>Keystore key password for HTTPS SSL configuration
    </description>
  </property>
  <property>
    <name>ssl.server.keystore.location</name>
    <tag>OZONE, SECURITY, MANAGEMENT</tag>
    <value></value>
    <description>
      Keystore location for HTTPS SSL configuration
    </description>
  </property>
  <property>
    <name>ssl.server.keystore.password</name>
    <tag>OZONE, SECURITY, MANAGEMENT</tag>
    <value></value>
    <description>
      Keystore password for HTTPS SSL configuration
    </description>
  </property>
  <property>
    <name>ssl.server.truststore.location</name>
    <tag>OZONE, SECURITY, MANAGEMENT</tag>
    <value></value>
    <description>
      Truststore location for HTTPS SSL configuration
    </description>
  </property>
  <property>
    <name>ssl.server.truststore.password</name>
    <tag>OZONE, SECURITY, MANAGEMENT</tag>
    <value></value>
    <description>
      Truststore password for HTTPS SSL configuration
    </description>
  </property>
</configuration>
