<?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>ozone.container.cache.lock.stripes</name>
    <value>1024</value>
    <tag>PERFORMANCE, CONTAINER, STORAGE</tag>
    <description>Container DB open is an exclusive operation. We use a stripe
      lock to guarantee that different threads can open different container DBs
      concurrently, while for one container DB, only one thread can open it at
      the same time. This setting controls the lock stripes.
    </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.upgrade.layout.inline</name>
    <value>true</value>
    <tag>OZONE, CONTAINER, STORAGE, MANAGEMENT</tag>
    <description>Determines whether to upgrade the DN layout on restart
      automatically. If set of false, the tool verifies that the current
      disk format is correct.
    </description>
  </property>
  <property>
    <name>hdds.datanode.dir.du.reserved</name>
    <value/>
    <tag>OZONE, CONTAINER, STORAGE, MANAGEMENT</tag>
    <description>Reserved space in bytes per volume. Always leave this much space free for non dfs use.
       Such as /dir1:100B, /dir2:200MB, means dir1 reserves 100 bytes and dir2 reserves 200 MB.
    </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</tag>
    <description>The ipc port number of container for clients.</description>
  </property>
  <property>
    <name>dfs.container.ratis.admin.port</name>
    <value>9857</value>
    <tag>OZONE, CONTAINER, PIPELINE, RATIS, MANAGEMENT</tag>
    <description>The ipc port number of container for admin requests.</description>
  </property>
  <property>
    <name>dfs.container.ratis.server.port</name>
    <value>9856</value>
    <tag>OZONE, CONTAINER, PIPELINE, RATIS, MANAGEMENT</tag>
    <description>The ipc port number of container for server-server communication.</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.per.volume</name>
    <value>10</value>
    <tag>OZONE, RATIS, PERFORMANCE</tag>
    <description>Maximum number of threads in the thread pool that Datanode
      will use for writing replicated chunks.
      This is a per configured locations!
      (10 thread per disk 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.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.crl.status.report.interval</name>
    <value>60000ms</value>
    <tag>OZONE, SECURITY, MANAGEMENT</tag>
    <description>Time interval of the datanode to send CRL status report. Each
      datanode periodically sends CRL status 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.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>20000</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/>
    <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/>
    <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/>
    <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/>
    <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 default node id - om1.
    </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>100</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.volume.listall.allowed</name>
    <value>true</value>
    <tag>OM, MANAGEMENT</tag>
    <description>
      Allows everyone to list all volumes when set to true. Defaults to true.
      When set to false, non-admin users can only list the volumes they have
      access to. Admins can always list all volumes.
    </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.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.sequence.id.batch.size</name>
    <value>1000</value>
    <tag>OZONE, SCM</tag>
    <description>
      SCM allocates sequence id in a batch way. This property determines how many
      ids will be allocated in a single batch.
    </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.chunk.read.buffer.default.size</name>
    <value>64KB</value>
    <tag>OZONE, SCM, CONTAINER, PERFORMANCE</tag>
    <description>
      The default read buffer size during read chunk operations when checksum
      is disabled. Chunk data will be cached in buffers of this capacity.

      For chunk data with checksum, the read buffer size will be the
      same as the number of bytes per checksum
      (ozone.client.bytes.per.checksum) corresponding to the chunk.
    </description>
  </property>
  <property>
    <name>ozone.scm.chunk.layout</name>
    <value>FILE_PER_BLOCK</value>
    <tag>OZONE, SCM, CONTAINER, PERFORMANCE</tag>
    <description>
      Chunk layout defines how chunks, blocks and containers are stored on disk.
      Each chunk is stored separately with FILE_PER_CHUNK.  All chunks of a
      block are stored in the same file with FILE_PER_BLOCK.  The default is
      FILE_PER_BLOCK.
    </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 per disk in a pipeline.
    </description>
  </property>
  <property>
    <name>ozone.scm.pipeline.per.metadata.disk</name>
    <value>2</value>
    <tag>OZONE, SCM, PIPELINE</tag>
    <description>Number of pipelines to be created per raft log disk.
    </description>
  </property>
  <property>
  <name>ozone.scm.datanode.pipeline.limit</name>
  <value>2</value>
  <tag>OZONE, SCM, PIPELINE</tag>
  <description>Max number of pipelines per datanode can be engaged in.
    Setting the value to 0 means the pipeline limit per dn will be determined
    by the no of metadata volumes reported per dn.
  </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.pipeline.leader-choose.policy</name>
    <value>
      org.apache.hadoop.hdds.scm.pipeline.leader.choose.algorithms.MinLeaderCountChoosePolicy
    </value>
    <tag>OZONE, SCM, PIPELINE</tag>
    <description>
      The policy used for choosing desired leader for pipeline creation.
      There are two policies supporting now: DefaultLeaderChoosePolicy, MinLeaderCountChoosePolicy.
      org.apache.hadoop.hdds.scm.pipeline.leader.choose.algorithms.DefaultLeaderChoosePolicy
      implements a policy that choose leader without depending on priority.
      org.apache.hadoop.hdds.scm.pipeline.leader.choose.algorithms.MinLeaderCountChoosePolicy
      implements a policy that choose leader which has the minimum exist leader count.
      In the future, we need to add policies which consider:
      1. resource, the datanode with the most abundant cpu and memory can be made the leader
      2. topology, the datanode nearest to the client can be made the leader
    </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>100</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>5s</value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      Timeout value for the RPC from Datanode to SCM.
    </description>
  </property>
  <property>
    <name>ozone.scm.heartbeat.rpc-retry-count</name>
    <value>15</value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      Retry count for the RPC from Datanode to SCM. The rpc-retry-interval
      is 1s by default. Make sure rpc-retry-count * (rpc-timeout +
      rpc-retry-interval) is less than hdds.heartbeat.interval.
    </description>
  </property>
  <property>
    <name>ozone.scm.heartbeat.rpc-retry-interval</name>
    <value>1s</value>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      Retry interval for the RPC from Datanode to SCM.
      Make sure rpc-retry-count * (rpc-timeout + rpc-retry-interval)
      is less than hdds.heartbeat.interval.
    </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.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/>
    <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.datanode.metadata.rocksdb.cache.size</name>
    <value>64MB</value>
    <tag>OZONE, DATANODE, MANAGEMENT</tag>
    <description>
        Size of the block metadata cache shared among RocksDB instances on each
        datanode. All containers on a datanode will share this cache.
    </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.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>hdds.scm.kerberos.keytab.file</name>
    <value>/etc/security/keytabs/SCM.keytab</value>
    <tag>SCM, SECURITY, KERBEROS</tag>
    <description> The keytab file used by SCM daemon to login as its service principal.
    </description>
  </property>
  <property>
    <name>hdds.scm.kerberos.principal</name>
    <value>SCM/_HOST@REALM</value>
    <tag>SCM, SECURITY, KERBEROS</tag>
    <description>The SCM service principal. e.g. scm/_HOST@REALM.COM</description>
  </property>
  <property>
    <name>hdds.scm.http.auth.kerberos.principal</name>
    <value>HTTP/_HOST@REALM</value>
    <tag>SCM, SECURITY, KERBEROS</tag>
    <description>
      SCM http server service principal if SPNEGO is enabled for SCM http server.
    </description>
  </property>
  <property>
    <name>hdds.scm.http.auth.kerberos.keytab</name>
    <value>/etc/security/keytabs/HTTP.keytab</value>
    <tag>SCM, SECURITY, KERBEROS</tag>
    <description>
      The keytab file used by SCM http server to login as its service
      principal if SPNEGO is enabled for SCM http server.
    </description>
  </property>

  <property>
    <name>ozone.s3g.volume.name</name>
    <value>s3v</value>
    <tag>OZONE, S3GATEWAY</tag>
    <description>
      The volume name to access through the s3gateway.
    </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 "," separated.
      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.http.auth.kerberos.principal</name>
    <value>HTTP/_HOST@REALM</value>
    <tag>OZONE, S3GATEWAY, SECURITY, KERBEROS</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.http.auth.kerberos.keytab</name>
    <value>/etc/security/keytabs/HTTP.keytab</value>
    <tag>OZONE, S3GATEWAY, SECURITY, KERBEROS</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, KERBEROS</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.security.http.kerberos.enabled</name>
    <value>false</value>
    <tag>OZONE, SECURITY, KERBEROS</tag>
    <description>True if Kerberos authentication for Ozone HTTP web consoles
      is enabled using the SPNEGO protocol. When this property is
      true, hadoop.security.authentication should be Kerberos and
      ozone.security.enabled should be set to true.
    </description>
  </property>
  <property>
    <name>ozone.http.filter.initializers</name>
    <value/>
    <tag>OZONE, SECURITY, KERBEROS</tag>
    <description>Set to org.apache.hadoop.security.AuthenticationFilterInitializer
      to enable Kerberos authentication for Ozone HTTP web consoles
      is enabled using the SPNEGO protocol. When this property is
      set, ozone.security.http.kerberos.enabled should be set to true.
    </description>
  </property>


  <property>
    <name>ozone.client.read.timeout</name>
    <value>30s</value>
    <tag>OZONE, CLIENT, MANAGEMENT</tag>
    <description>
      Timeout for ozone grpc client during read.
    </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>true</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>4MB</value>
    <tag>OZONE, OM, RATIS, PERFORMANCE</tag>
    <description>The size of the raft segment used by Apache Ratis on OM.
      (4 MB by default)
    </description>
  </property>

  <property>
    <name>ozone.om.ratis.segment.preallocated.size</name>
    <value>4MB</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.(4 MB 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.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>5s</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>5s</value>
    <tag>OZONE, OM, RATIS, MANAGEMENT, DEPRECATED</tag>
    <description>DEPRECATED. Leader election timeout uses ratis
      rpc timeout which can be set via ozone.om.ratis.minimum.timeout.
    </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.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.metadata.dirs.
      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>/etc/security/keytabs/OM.keytab</value>
    <tag>OZONE, SECURITY, KERBEROS</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>OM/_HOST@REALM</value>
    <tag>OZONE, SECURITY, KERBEROS</tag>
    <description>The OzoneManager service principal. Ex om/_HOST@REALM.COM</description>
  </property>
  <property>
    <name>ozone.om.http.auth.kerberos.principal</name>
    <value>HTTP/_HOST@REALM</value>
    <tag>OZONE, SECURITY, KERBEROS</tag>
    <description>
      Ozone Manager http server service principal if SPNEGO is enabled for om http server.
    </description>
  </property>
  <property>
    <name>ozone.om.http.auth.kerberos.keytab</name>
    <value>/etc/security/keytabs/HTTP.keytab</value>
    <tag>OZONE, SECURITY, KERBEROS</tag>
    <description>
      The keytab file used by OM http server to login as its service
      principal if SPNEGO is enabled for om http server.
    </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.container.token.enabled</name>
    <value>false</value>
    <tag>OZONE, HDDS, SECURITY, TOKEN</tag>
    <description>True if container 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.
      This duration is used for self-signed root cert and scm sub-ca certs
      issued by root ca. 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>ozone.scm.service.ids</name>
    <value></value>
    <tag>OZONE, SCM, HA</tag>
    <description>
      Comma-separated list of SCM service Ids. This property allows the client
      to figure out quorum of OzoneManager address.
    </description>
  </property>
  <property>
    <name>ozone.scm.default.service.id</name>
    <value></value>
    <tag>OZONE, SCM, HA</tag>
    <description>
      Service ID of the SCM. If this is not set fall back to
      ozone.scm.service.ids to find the service ID it belongs to.
    </description>
  </property>
  <property>
    <name>ozone.scm.nodes.EXAMPLESCMSERVICEID</name>
    <value></value>
    <tag>OZONE, SCM, HA</tag>
    <description>
      Comma-separated list of SCM node Ids for a given SCM service ID (eg.
      EXAMPLESCMSERVICEID). The SCM service ID should be the value (one of the
      values if there are multiple) set for the parameter ozone.scm.service.ids.

      Unique identifiers for each SCM Node, delimited by commas. This will be
      used by SCMs in HA setup to determine all the SCMs
      belonging to the same SCM in the cluster. For example, if you
      used “scmService1” as the SCM service ID previously, and you wanted to
      use “scm1”, “scm2” and "scm3" as the individual IDs of the SCMs,
      you would configure a property ozone.scm.nodes.scmService1, and its value
      "scm1,scm2,scm3".
    </description>
  </property>
  <property>
    <name>ozone.scm.node.id</name>
    <value></value>
    <tag>OZONE, SCM, HA</tag>
    <description>
      The ID of this SCM node. If the SCM 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 scmId from the SCM version file.
    </description>
  </property>
  <property>
    <name>ozone.scm.primordial.node.id</name>
    <value></value>
    <tag>OZONE, SCM, HA</tag>
    <description>
      optional config, if being set will cause scm --init to only take effect on
      the specific node and ignore scm --bootstrap cmd.
      Similarly, scm --init will be ignored on the non-primordial scm nodes.
      The config can either be set equal to the hostname or the node id of any
      of the scm nodes.
      With the config set, applications/admins can safely execute init and
      bootstrap commands safely on all scm instances.

      If a cluster is upgraded from non-ratis to ratis based SCM, scm --init
      needs to re-run for switching from
      non-ratis based SCM to ratis-based SCM on the primary node.
    </description>
  </property>
  <property>
    <name>ozone.scm.skip.bootstrap.validation</name>
    <value>false</value>
    <tag>OZONE, SCM, HA</tag>
    <description>
      optional config, the config when set to true skips the clusterId
      validation from leader scm during bootstrap
    </description>
  </property>
  <property>
    <name>ozone.scm.ratis.enable</name>
    <value>false</value>
    <tag>OZONE, SCM, HA, RATIS</tag>
    <description>Property to enable or disable Ratis server on SCM.
      Please note - this is a temporary property to disable SCM Ratis server.
    </description>
  </property>

  <property>
    <name>ozone.scm.ratis.port</name>
    <value>9894</value>
    <tag>OZONE, SCM, HA, RATIS</tag>
    <description>
      The port number of the SCM's Ratis server.
    </description>
  </property>

  <property>
    <name>ozone.scm.grpc.port</name>
    <value>9895</value>
    <tag>OZONE, SCM, HA, RATIS</tag>
    <description>
      The port number of the SCM's grpc server.
    </description>
  </property>

  <property>
    <name>ozone.scm.ratis.rpc.type</name>
    <value>GRPC</value>
    <tag>OZONE, SCM, HA, RATIS</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.scm.ratis.storage.dir</name>
    <value/>
    <tag>OZONE, SCM, HA, RATIS, STORAGE</tag>
    <description>This directory is used for storing SCM'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, SCM ratis storage dir will fallback to ozone.metadata.dirs.
      This fallback approach is not recommended for production environments.
    </description>
  </property>

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

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

  <property>
    <name>ozone.scm.ratis.log.appender.queue.num-elements</name>
    <value>1024</value>
    <tag>OZONE, DEBUG, SCM, HA, RATIS</tag>
    <description>Number of operation pending with Raft's Log Worker.
    </description>
  </property>
  <property>
    <name>ozone.scm.ratis.log.appender.queue.byte-limit</name>
    <value>32MB</value>
    <tag>OZONE, DEBUG, SCM, HA, RATIS</tag>
    <description>Byte limit for Raft's Log Worker queue.
    </description>
  </property>
  <property>
    <name>ozone.scm.ratis.log.purge.gap</name>
    <value>1000000</value>
    <tag>OZONE, SCM, HA, 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.scm.ratis.server.request.timeout</name>
    <value>3s</value>
    <tag>OZONE, SCM, HA, RATIS</tag>
    <description>The timeout duration for SCM's ratis server request.</description>
  </property>

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

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

  <property>
    <name>ozone.scm.ratis.minimum.timeout</name>
    <value>30s</value>
    <tag>OZONE, SCM, HA, RATIS</tag>
    <description>The request timeout duration for SCM's Ratis server request.
    </description>
  </property>

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

  <property>
    <name>ozone.scm.ratis.server.failure.timeout.duration</name>
    <value>120s</value>
    <tag>OZONE, SCM, HA, RATIS</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.scm.ratis.server.role.check.interval</name>
    <value>15s</value>
    <tag>OZONE, SCM, HA, RATIS</tag>
    <description>The interval between SCM leader performing a role
      check on its ratis server. Ratis server informs SCM 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>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.iterate.batch-size</name>
    <value>100</value>
    <tag>OZONE, OZONEFS</tag>
    <description>
      Iterate batch size of delete when use BasicOzoneFileSystem.
    </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.auth.kerberos.principal</name>
    <value>HTTP/_HOST@REALM</value>
    <tag>SECURITY</tag>
    <description>
     Security principal used by freon.
    </description>
  </property>
  <property>
    <name>ozone.freon.http.auth.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.auth.kerberos.principal</name>
    <value>HTTP/_HOST@REALM</value>
    <tag>HDDS, SECURITY, MANAGEMENT, KERBEROS</tag>
    <description>
      The kerberos principal for the datanode http server.
    </description>
  </property>
  <property>
    <name>hdds.datanode.http.auth.kerberos.keytab</name>
    <value>/etc/security/keytabs/HTTP.keytab</value>
    <tag>HDDS, SECURITY, MANAGEMENT, KERBEROS</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>500</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. This value is kept high so that client does not give up trying to
      connect to OMs easily.
    </description>
  </property>
  <property>
    <name>ozone.client.wait.between.retries.millis</name>
    <value>2000</value>
    <description>
      Expert only. The time to wait, in milliseconds, between retry attempts
      to contact OM. Wait time increases linearly if same OM is retried
      again. If retrying on multiple OMs proxies in round robin fashion, the
      wait time is introduced after all the OM proxies have been attempted once.
    </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.http.auth.kerberos.keytab</name>
    <value>/etc/security/keytabs/HTTP.keytab</value>
    <tag>RECON, SECURITY, KERBEROS</tag>
    <description>
      The keytab file for HTTP Kerberos authentication in Recon.
    </description>
  </property>
  <property>
    <name>ozone.recon.http.auth.kerberos.principal</name>
    <value>HTTP/_HOST@REALM</value>
    <tag>RECON, SECURITY, KERBEROS</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>hdds.datanode.http.auth.type</name>
    <value>simple</value>
    <tag>DATANODE, SECURITY, KERBEROS</tag>
    <description> simple or kerberos. If kerberos is set, Kerberos SPNEOGO
      will be used for http authentication.
    </description>
  </property>
  <property>
    <name>ozone.freon.http.auth.type</name>
    <value>simple</value>
    <tag>FREON, SECURITY</tag>
    <description> simple or kerberos. If kerberos is set, Kerberos SPNEOGO
      will be used for http authentication.
    </description>
  </property>
  <property>
    <name>ozone.om.http.auth.type</name>
    <value>simple</value>
    <tag>OM, SECURITY, KERBEROS</tag>
    <description> simple or kerberos. If kerberos is set, Kerberos SPNEOGO
      will be used for http authentication.
    </description>
  </property>
  <property>
    <name>hdds.scm.http.auth.type</name>
    <value>simple</value>
    <tag>OM, SECURITY, KERBEROS</tag>
    <description> simple or kerberos. If kerberos is set, Kerberos SPNEOGO
      will be used for http authentication.
    </description>
  </property>
  <property>
    <name>ozone.recon.http.auth.type</name>
    <value>simple</value>
    <tag>RECON, SECURITY, KERBEROS</tag>
    <description> simple or kerberos. If kerberos is set, Kerberos SPNEOGO
      will be used for http authentication.
    </description>
  </property>
  <property>
    <name>ozone.s3g.http.auth.type</name>
    <value>simple</value>
    <tag>S3G, SECURITY, KERBEROS</tag>
    <description> simple or kerberos. If kerberos is set, Kerberos SPNEOGO
      will be used for http authentication.
    </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.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>ozone.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>ozone.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>ozone.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>ozone.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>ozone.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>ozone.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>false</value>
    <tag>OZONE, HDDS</tag>
    <description>
      If enabled, tracing information is sent to tracing server.
    </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.scm.datanode.admin.monitor.interval</name>
    <value>30s</value>
    <tag>SCM</tag>
    <description>
      This sets how frequently the datanode admin monitor runs to check for
      nodes added to the admin workflow or removed from it. The progress
      of decommissioning and entering maintenance nodes is also checked to see
      if they have completed.
    </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/>
    <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>ozone.s3g.client.buffer.size</name>
    <tag>OZONE, S3GATEWAY</tag>
    <value>4KB</value>
    <description>
      The size of the buffer which is for read block. (4KB by default).
    </description>
  </property>
  <property>
    <name>ssl.server.keystore.keypassword</name>
    <tag>OZONE, SECURITY, MANAGEMENT</tag>
    <value/>
    <description>Keystore key password for HTTPS SSL configuration
    </description>
  </property>
  <property>
    <name>ssl.server.keystore.location</name>
    <tag>OZONE, SECURITY, MANAGEMENT</tag>
    <value/>
    <description>
      Keystore location for HTTPS SSL configuration
    </description>
  </property>
  <property>
    <name>ssl.server.keystore.password</name>
    <tag>OZONE, SECURITY, MANAGEMENT</tag>
    <value/>
    <description>
      Keystore password for HTTPS SSL configuration
    </description>
  </property>
  <property>
    <name>ssl.server.truststore.location</name>
    <tag>OZONE, SECURITY, MANAGEMENT</tag>
    <value/>
    <description>
      Truststore location for HTTPS SSL configuration
    </description>
  </property>
  <property>
    <name>ssl.server.truststore.password</name>
    <tag>OZONE, SECURITY, MANAGEMENT</tag>
    <value/>
    <description>
      Truststore password for HTTPS SSL configuration
    </description>
  </property>
  <property>
    <name>hdds.datanode.ratis.server.request.timeout</name>
    <tag>OZONE, DATANODE</tag>
    <value>2m</value>
    <description>
      Timeout for the request submitted directly to Ratis in datanode.
    </description>
  </property>
  <property>
    <name>ozone.om.keyname.character.check.enabled</name>
    <tag>OZONE, OM</tag>
    <value>false</value>
    <description>If true, then enable to check if the key name
      contains illegal characters when creating/renaming key.
      For the definition of illegal characters, follow the
      rules in Amazon S3's object key naming guide.
    </description>
  </property>

  <property>
    <name>ozone.om.enable.filesystem.paths</name>
    <tag>OZONE, OM</tag>
    <value>false</value>
    <description>If true, key names will be interpreted as file system paths.
      "/" will be treated as a special character and paths will be normalized
      and must follow Unix filesystem path naming conventions. This flag will
      be helpful when objects created by S3G need to be accessed using OFS/O3Fs.
      If false, it will fallback to default behavior of Key/MPU create
      requests where key paths are not normalized and any intermediate
      directories will not be created or any file checks happens to check
      filesystem semantics.
    </description>
  </property>

  <property>
    <name>ozone.client.key.provider.cache.expiry</name>
    <tag>OZONE, CLIENT, SECURITY</tag>
    <value>10d</value>
    <description>Ozone client security key provider cache expiration time.
    </description>
  </property>

  <property>
    <name>ozone.scm.info.wait.duration</name>
    <tag>OZONE, SCM, OM</tag>
    <value>10m</value>
    <description> Maximum amount of duration OM/SCM waits to get Scm Info/Scm
      signed cert during OzoneManager init/SCM bootstrap.
    </description>
  </property>


  <property>
    <name>ozone.scm.ca.list.retry.interval</name>
    <tag>OZONE, SCM, OM, DATANODE</tag>
    <value>10s</value>
    <description>SCM client wait duration between each retry to get Scm CA
      list. OM/Datanode obtain CA list during startup, and wait
      for the CA List size to be matched with SCM node count size plus
      1. (Additional one certificate is root CA certificate). If the received
      CA list size is not matching with expected count, this is the duration
      used to wait before making next attempt to get CA list.
    </description>
  </property>

  <property>
    <name>ozone.om.metadata.layout</name>
    <tag>OZONE, OM</tag>
    <value>SIMPLE</value>
    <description>
      This property is used to define the metadata layout of file system
      paths. If it is configured as PREFIX in combination with
      ozone.om.enable.filesystem.paths to true then this allows to perform
      atomic rename and delete of any directory at any level in the namespace.
      Defaulting to SIMPLE. Supported values: SIMPLE and PREFIX.
    </description>
  </property>
  <property>
    <name>ozone.directory.deleting.service.interval</name>
    <value>1m</value>
    <tag>OZONE, PERFORMANCE, OM</tag>
    <description>Time interval of the directory deleting service. It runs on OM
      periodically and cleanup orphan directory and its sub-tree. For every
      orphan directory it deletes the sub-path tree structure(dirs/files). It
      sends sub-files to KeyDeletingService to deletes its blocks. Unit could
      be defined with postfix (ns,ms,s,m,h,d)
    </description>
  </property>
  <property>
    <name>ozone.path.deleting.limit.per.task</name>
    <value>10000</value>
    <tag>OZONE, PERFORMANCE, OM</tag>
    <description>A maximum number of paths(dirs/files) to be deleted by
      directory deleting service per time interval.
    </description>
  </property>

</configuration>
