<?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.container.db.dir</name>
    <value/>
    <tag>OZONE, CONTAINER, STORAGE, MANAGEMENT</tag>
    <description>Determines where the per-disk rocksdb instances will be
      stored. This setting is optional. If unspecified, then rocksdb instances
      are stored on the same disk as HDDS data.
      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. Ideally, this should be mapped to a fast disk
      like an SSD.
    </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.dir.du.reserved.percent</name>
    <value/>
    <tag>OZONE, CONTAINER, STORAGE, MANAGEMENT</tag>
    <description>Percentage of volume that should be reserved. This space is left free for other usage.
      The value should be between 0-1. Such as 0.1 which means 10% of volume space will be reserved.
    </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>60m</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.administrators.groups</name>
    <value/>
    <tag>OZONE, SECURITY</tag>
    <description>Ozone administrator groups delimited by the comma.
      This is the list of groups who can access admin only information
      from ozone.
      It is enough to either have the name defined in ozone.administrators
      or be directly or indirectly in a group defined in this property.
    </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.block.deleting.service.workers</name>
    <value>10</value>
    <tag>OZONE, PERFORMANCE, SCM</tag>
    <description>Number of workers executed of block deletion service. This
      configuration should be set to greater than 0.
    </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.

      Decommissioned nodes (represented by node Ids in
      ozone.om.decommissioned.nodes config list) will be ignored and not
      included in the OM HA setup even if added to this list.

      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.decommissioned.nodes.EXAMPLEOMSERVICEID</name>
    <value/>
    <tag>OM, HA</tag>
    <description>
      Comma-separated list of OM node Ids which have been decommissioned. OMs
      present in this list will not be included in the OM HA ring.
    </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.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. Note that this config
      only applies to OzoneNativeAuthorizer. For other authorizers, admin
      needs to set policies accordingly to allow all volume listing
      e.g. for Ranger, a new policy with special volume "/" can be added to
      allow group public LIST access.
    </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.container.layout</name>
    <value>FILE_PER_BLOCK</value>
    <tag>OZONE, SCM, CONTAINER, PERFORMANCE</tag>
    <description>
      Container 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.container.placement.ec.impl</name>
    <value>
      org.apache.hadoop.hdds.scm.container.placement.algorithms.SCMContainerPlacementRackScatter
    </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 in EC mode. 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.datanode.disallow.same.peers</name>
    <value>false</value>
    <tag>OZONE, SCM, PIPELINE</tag>
    <description>Disallows same set of datanodes to participate in multiple
      pipelines when set to true. Default is set to false.
    </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.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>hdds.recon.heartbeat.interval</name>
    <value>60s</value>
    <tag>OZONE, MANAGEMENT, RECON</tag>
    <description>
      The heartbeat interval from a Datanode to Recon.
    </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.server.default.replication</name>
    <value>3</value>
    <tag>OZONE</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 when creating key or no default replication set at
      bucket. Supported values:
      For Standalone: 1
      For Ratis: 3
      For Erasure Coding(EC) supported format:
      {ECCodec}-{DataBlocks}-{ParityBlocks}-{ChunkSize}
        ECCodec: Codec for encoding stripe. Supported values : XOR, RS (Reed Solomon)
        DataBlocks: Number of data blocks in a stripe.
        ParityBlocks: Number of parity blocks in a stripe.
        ChunkSize: Chunk size in bytes. E.g. 1024k, 2048k etc.
        Supported combinations of {DataBlocks}-{ParityBlocks} : 3-2, 6-3, 10-4
    </description>
  </property>

  <property>
    <name>ozone.server.default.replication.type</name>
    <value>RATIS</value>
    <tag>OZONE</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 when creating key or no default value set at bucket.
      Supported values: RATIS, STAND_ALONE, CHAINED and EC.
    </description>
  </property>

  <property>
    <name>ozone.client.bucket.replication.config.refresh.time.ms</name>
    <value>30000</value>
    <tag>OZONE</tag>
    <description>
      Default time period to refresh the bucket replication config in o3fs
      clients. Until the bucket replication config refreshed, client will
      continue to use existing replication config irrespective of whether bucket
      replication config updated at OM or not.
    </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.om.open.key.cleanup.service.interval</name>
    <value>24h</value>
    <tag>OZONE, OM, PERFORMANCE</tag>
    <description>
      A background job that periodically checks open key entries and marks
      expired open keys for deletion. This entry controls the interval of this
      cleanup check. Unit could be defined with postfix (ns,ms,s,m,h,d)
    </description>
  </property>

  <property>
    <name>ozone.om.open.key.cleanup.service.timeout</name>
    <value>300s</value>
    <tag>OZONE, OM, PERFORMANCE</tag>
    <description>A timeout value of open key cleanup service. If this is set
      greater than 0, the service will stop waiting for the open key deleting
      completion after this time. If timeout happens to a large proportion of
      open key deletion, this value needs to be increased or
      ozone.om.open.key.cleanup.limit.per.task should be decreased.
      Unit could be defined with postfix (ns,ms,s,m,h,d)
    </description>
  </property>

  <property>
    <name>ozone.om.open.key.expire.threshold</name>
    <value>7d</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). Unit could be defined with postfix (ns,ms,s,m,h,d)
    </description>
  </property>

  <property>
    <name>ozone.om.open.key.cleanup.limit.per.task</name>
    <value>1000</value>
    <tag>OZONE, OM, PERFORMANCE</tag>
    <description>
      The maximum number of open keys to be identified as expired and marked
      for deletion by one run of the open key cleanup service on the OM.
      This property is used to throttle the actual number of open key deletions
      on the OM.
    </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.scrub.interval</name>
    <value>5m</value>
    <tag>OZONE, SCM, PIPELINE</tag>
    <description>
      SCM schedules a fixed interval job using the configured interval to
      scrub pipelines.
    </description>
  </property>
  <property>
    <name>ozone.scm.expired.container.replica.op.scrub.interval</name>
    <value>5m</value>
    <tag>OZONE, SCM, CONTAINER</tag>
    <description>
      SCM schedules a fixed interval job using the configured interval to
      scrub expired container replica operation.
    </description>
  </property>
  <property>
    <name>ozone.scm.expired.container.replica.op.time.out</name>
    <value>30m</value>
    <tag>OZONE, SCM, CONTAINER</tag>
    <description>
      Timeout for the container replica operations(ADD/DELETE).After this
      timeout the command will be retied
    </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.s3.administrators</name>
    <value/>
    <tag>OZONE, SECURITY</tag>
    <description>
      S3 administrator users delimited by a comma.
      This is the list of users who can access admin only information from s3.
      If this property is empty then ozone.administrators will be able to access all
      s3 information regardless of this setting.
    </description>
  </property>
  <property>
    <name>ozone.s3.administrators.groups</name>
    <value/>
    <tag>OZONE, SECURITY</tag>
    <description>
      S3 administrator groups delimited by a comma.
      This is the list of groups who can access admin only information
      from S3.
      It is enough to either have the name defined in ozone.s3.administrators
      or be directly or indirectly in a group defined in this property.
    </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.unflushed.transaction.max.count</name>
    <value>10000</value>
    <tag>OZONE, OM</tag>
    <description>the unflushed transactions here are those requests that have been
      applied to OM state machine but not been flushed to OM rocksdb. when OM meets
      high concurrency-pressure and flushing is not fast enough, too many pending
      requests will be hold in memory and will lead to long GC of OM, which will slow
      down flushing further. there are some cases that flushing is slow, for example,
      1 rocksdb is on a HDD, which has poor IO performance than SSD.
      2 a big compaction is happening internally in rocksdb and write stall of
      rocksdb happens.
      3 long GC, which may caused by other factors.
      the property is to limit the max count of unflushed transactions, so that the
      maximum memory occupied by unflushed transactions is limited.
    </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.leaderelection.pre-vote </name>
    <value>false</value>
    <tag>OZONE, OM, RATIS, MANAGEMENT</tag>
    <description>Enable/disable OM HA leader election pre-vote phase.
    </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.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>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>ozone.om.security.admin.protocol.acl</name>
    <value>*</value>
    <tag>SECURITY</tag>
    <description>
      Comma separated list of users and groups allowed to access ozone
      manager admin 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.om.admin.protocol.max.retries</name>
    <value>20</value>
    <tag>OM, MANAGEMENT</tag>
    <description>
      Expert only. The maximum number of retries for Ozone Manager Admin
      protocol on each OM.
    </description>
  </property>
  <property>
    <name>ozone.om.admin.protocol.wait.between.retries</name>
    <value>1000</value>
    <tag>OM, MANAGEMENT</tag>
    <description>
      Expert only. The time to wait, in milliseconds, between retry attempts
      for Ozone Manager Admin protocol.
    </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>ozone.recon.administrators</name>
    <value/>
    <tag>RECON, SECURITY</tag>
    <description>
      Recon administrator users delimited by a comma.
      This is the list of users who can access admin only information from recon.
      Users defined in ozone.administrators will always be able to access all
      recon information regardless of this setting.
    </description>
  </property>
  <property>
    <name>ozone.recon.administrators.groups</name>
    <value/>
    <tag>RECON, SECURITY</tag>
    <description>
      Recon administrator groups delimited by a comma.
      This is the list of groups who can access admin only information
      from recon.
      It is enough to either have the name defined in ozone.recon.administrators
      or be directly or indirectly in a group defined in this property.
    </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.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.scm.connection.request.timeout</name>
    <value>5s</value>
    <tag>OZONE, RECON, SCM</tag>
    <description>
      Connection request timeout in milliseconds for HTTP call made by Recon to
      request SCM DB snapshot.
    </description>
  </property>
  <property>
    <name>ozone.recon.scm.connection.timeout</name>
    <value>5s</value>
    <tag>OZONE, RECON, SCM</tag>
    <description>
      Connection timeout for HTTP call in milliseconds made by Recon to request
      SCM 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>recon.om.delta.update.limit</name>
    <value>2000</value>
    <tag>OZONE, RECON</tag>
    <description>
      Recon each time get a limited delta updates from OM.
      The actual fetched data might be larger than this limit.
    </description>
  </property>
  <property>
    <name>recon.om.delta.update.loop.limit</name>
    <value>10</value>
    <tag>OZONE, RECON</tag>
    <description>
      The sync between Recon and OM consists of several small
      fetch loops.
    </description>
  </property>
  <property>
    <name>ozone.recon.scm.container.threshold</name>
    <value>100</value>
    <tag>OZONE, RECON, SCM</tag>
    <description>
      Threshold value for the difference in number of containers
      in SCM and RECON.
    </description>
  </property>
  <property>
    <name>ozone.recon.scm.snapshot.enabled</name>
    <value>false</value>
    <tag>OZONE, RECON, SCM</tag>
    <description>
      If enabled, SCM DB Snapshot is taken by Recon.
    </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.om.key.path.lock.enabled</name>
    <tag>OZONE, OM</tag>
    <value>false</value>
    <description>Defaults to false. If true, the fine-grained KEY_PATH_LOCK
      functionality is enabled. If false, it is disabled.
    </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.client.key.latest.version.location</name>
    <tag>OZONE, CLIENT</tag>
    <value>true</value>
    <description>Ozone client gets the latest version location.
    </description>
  </property>

  <property>
    <name>ozone.network.flexible.fqdn.resolution.enabled</name>
    <tag>OZONE, SCM, OM</tag>
    <value>false</value>
    <description>SCM, OM hosts will be able to resolve itself based on its host
      name instead of fqdn. It is useful for deploying to kubernetes
      environment, during the initial launching time when
      [pod_name].[service_name] is not resolvable yet because of the probe.
    </description>
  </property>

  <property>
    <name>ozone.network.jvm.address.cache.enabled</name>
    <tag>OZONE, SCM, OM, DATANODE</tag>
    <value>true</value>
    <description>Disable the jvm network address cache. In environment such as
      kubernetes, IPs of instances of scm, om and datanodes can be changed.
      Disabling this cache helps to quickly resolve the fqdn's to the new IPs.
    </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>

  <property>
    <name>ozone.scm.event.ContainerReport.thread.pool.size</name>
    <value>10</value>
    <tag>OZONE, SCM</tag>
    <description>Thread pool size configured to process container reports.
    </description>
  </property>

  <property>
    <name>ozone.scm.datanode.ratis.volume.free-space.min</name>
    <value>1GB</value>
    <tag>OZONE, DATANODE</tag>
    <description>Minimum amount of storage space required for each ratis
      volume on a datanode to hold a new pipeline.
      Datanodes with all its ratis volumes with space under this value
      will not be allocated a pipeline or container replica.
    </description>
  </property>
  <property>
    <name>ozone.scm.ha.ratis.storage.dir</name>
    <value></value>
    <tag>OZONE, SCM, HA, RATIS</tag>
    <description>Storage directory used by SCM to write Ratis logs.</description>
  </property>
  <property>
    <name>ozone.scm.ha.ratis.rpc.type</name>
    <value>GRPC</value>
    <tag>SCM, OZONE, 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.ha.ratis.segment.size</name>
    <value>4MB</value>
    <tag>SCM, OZONE, HA, RATIS</tag>
    <description>The size of the raft segment used by Apache Ratis on
      SCM. (4 MB by default)
    </description>
  </property>
  <property>
    <name>ozone.scm.ha.ratis.segment.preallocated.size</name>
    <value>4MB</value>
    <tag>SCM, OZONE, HA, RATIS</tag>
    <description>The size of the buffer which is preallocated for
      raft segment used by Apache Ratis on SCM.(4 MB by default)
    </description>
  </property>
  <property>
    <name>ozone.scm.ha.ratis.log.appender.queue.byte-limit</name>
    <value>32MB</value>
    <tag>SCM, OZONE, HA, RATIS</tag>
    <description>Byte limit for Raft's Log Worker queue.</description>
  </property>
  <property>
    <name>ozone.scm.ha.ratis.log.appender.queue.num-elements</name>
    <value>1024</value>
    <tag>SCM, OZONE, HA, RATIS</tag>
    <description>Number of operation pending with Raft's Log Worker.
    </description>
  </property>
  <property>
    <name>ozone.scm.ha.ratis.log.purge.enabled</name>
    <value>false</value>
    <tag>SCM, OZONE, HA, RATIS</tag>
    <description>whether enable raft log purge.</description>
  </property>
  <property>
    <name>ozone.scm.ha.ratis.log.purge.gap</name>
    <value>1000000</value>
    <tag>SCM, OZONE, 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.ha.ratis.snapshot.threshold</name>
    <value>1000</value>
    <tag>SCM, OZONE, HA, RATIS</tag>
    <description>The threshold to trigger a Ratis taking snapshot
      operation for SCM.
    </description>
  </property>
  <property>
    <name>ozone.scm.ha.ratis.request.timeout</name>
    <value>30s</value>
    <tag>SCM, OZONE, HA, RATIS</tag>
    <description>The timeout duration for SCM's Ratis server RPC.</description>
  </property>
  <property>
    <name>ozone.scm.ha.ratis.server.retry.cache.timeout</name>
    <value>60s</value>
    <tag>SCM, OZONE, HA, RATIS</tag>
    <description>Retry Cache entry timeout for SCM's Ratis server.</description>
  </property>
  <property>
    <name>ozone.scm.ha.ratis.leader.election.timeout</name>
    <value>5s</value>
    <tag>SCM, OZONE, HA, RATIS</tag>
    <description>The minimum timeout duration for SCM ratis leader
      election. Default is 1s.</description>
  </property>
  <property>
    <name>ozone.scm.ha.ratis.server.leaderelection.pre-vote</name>
    <value>false</value>
    <tag>SCM, OZONE, HA, RATIS</tag>
    <description>Enable/disable SCM HA leader election pre-vote phase.</description>
  </property>
  <property>
    <name>ozone.scm.ha.ratis.leader.ready.wait.timeout</name>
    <value>60s</value>
    <tag>SCM, OZONE, HA, RATIS</tag>
    <description>The minimum timeout duration for waiting for
      leader readiness.</description>
  </property>
  <property>
    <name>ozone.scm.ha.ratis.leader.ready.check.interval</name>
    <value>2s</value>
    <tag>SCM, OZONE, HA, RATIS</tag>
    <description>The interval between ratis server performing
      a leader readiness check.
    </description>
  </property>
  <property>
    <name>ozone.scm.ha.ratis.server.failure.timeout.duration</name>
    <value>120s</value>
    <tag>SCM, OZONE, 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.ha.ratis.snapshot.dir</name>
    <value></value>
    <tag>SCM, OZONE, HA, RATIS</tag>
    <description>The ratis snapshot dir location.</description>
  </property>
  <property>
    <name>ozone.scm.ha.grpc.deadline.interval</name>
    <value>30m</value>
    <tag>SCM, OZONE, HA, RATIS</tag>
    <description>Deadline for SCM DB checkpoint interval.</description>
  </property>


  <property>
    <name>ozone.s3g.kerberos.keytab.file</name>
    <value>/etc/security/keytabs/s3g.keytab</value>
    <tag>OZONE, SECURITY, KERBEROS, S3GATEWAY</tag>
    <description> The keytab file used by S3Gateway daemon to login as its
      service principal. The principal name is configured with
      ozone.s3g.kerberos.principal.
    </description>
  </property>
  <property>
    <name>ozone.s3g.kerberos.principal</name>
    <value>s3g/_HOST@REALM</value>
    <tag>OZONE, SECURITY, KERBEROS, S3GATEWAY</tag>
    <description>The S3Gateway service principal.
      Ex: s3g/_HOST@REALM.COM</description>
  </property>
  <property>
    <name>hdds.container.checksum.verification.enabled</name>
    <value>true</value>
    <tag>OZONE, DATANODE</tag>
    <description> To enable/disable checksum verification of the
      containers.
    </description>
  </property>

  <property>
    <name>hadoop.http.idle_timeout.ms</name>
    <value>60000</value>
    <tag>OZONE, PERFORMANCE, S3GATEWAY</tag>
    <description>
      OM/SCM/DN/S3GATEWAY Server connection timeout in milliseconds.
    </description>
  </property>
  <property>
    <name>ozone.om.grpc.maximum.response.length</name>
    <value>134217728</value>
    <tag>OZONE, OM, S3GATEWAY</tag>
    <description>
      OM/S3GATEWAY OMRequest, OMResponse over grpc max message length (bytes).
    </description>
  </property>
  <property>
    <name>ozone.default.bucket.layout</name>
    <value/>
    <tag>OZONE, MANAGEMENT</tag>
    <description>
      Default bucket layout used by Ozone Manager during bucket creation when a client does not specify the
      bucket layout option. Supported values are OBJECT_STORE and FILE_SYSTEM_OPTIMIZED.
      OBJECT_STORE: This layout allows the bucket to behave as a pure object store and will not allow
      interoperability between S3 and FS APIs.
      FILE_SYSTEM_OPTIMIZED: This layout allows the bucket to support atomic rename/delete operations and
      also allows interoperability between S3 and FS APIs. Keys written via S3 API with a "/" delimiter
      will create intermediate directories.
    </description>
  </property>

  <property>
    <name>ozone.client.max.ec.stripe.write.retries</name>
    <value>10</value>
    <tag>CLIENT</tag>
    <description>
      When EC stripe write failed, client will request to allocate new block group and write the failed stripe into new
      block group. If the same stripe failure continued in newly acquired block group also, then it will retry by
      requesting to allocate new block group again. This configuration is used to limit these number of retries. By
      default the number of retries are 10.
    </description>
  </property>

  <property>
    <name>ozone.audit.log.debug.cmd.list.omaudit</name>
    <value></value>
    <tag>OM</tag>
    <description>
      A comma separated list of OzoneManager commands that are written to the OzoneManager audit logs only if the audit
      log level is debug. Ex: "ALLOCATE_BLOCK,ALLOCATE_KEY,COMMIT_KEY".
    </description>
  </property>

  <property>
    <name>ozone.audit.log.debug.cmd.list.scmaudit</name>
    <value></value>
    <tag>SCM</tag>
    <description>
      A comma separated list of SCM commands that are written to the SCM audit logs only if the audit
      log level is debug. Ex: "GET_VERSION,REGISTER,SEND_HEARTBEAT".
    </description>
  </property>

  <property>
    <name>ozone.audit.log.debug.cmd.list.dnaudit</name>
    <value></value>
    <tag>DN</tag>
    <description>
      A comma separated list of Datanode commands that are written to the DN audit logs only if the audit
      log level is debug. Ex: "CREATE_CONTAINER,READ_CONTAINER,UPDATE_CONTAINER".
    </description>
  </property>

  <property>
    <name>ozone.om.multitenancy.enabled</name>
    <value>false</value>
    <tag>OZONE, OM</tag>
    <description>Enable S3 Multi-Tenancy. If disabled, all S3 multi-tenancy requests are rejected.
    </description>
  </property>

  <property>
    <name>ozone.om.multitenancy.ranger.sync.interval</name>
    <value>10m</value>
    <tag>OZONE, OM</tag>
    <description>
      Determines how often the Multi-Tenancy Ranger background sync thread
      service should run. Background thread periodically checks
      Ranger policies and roles created by Multi-Tenancy feature.
      And overwrites them if obvious discrepancies are detected.
      Value should be set with a unit suffix (ns,ms,s,m,h,d)
    </description>
  </property>

  <property>
    <name>ozone.om.multitenancy.ranger.sync.timeout</name>
    <value>10s</value>
    <tag>OZONE, OM</tag>
    <description>
      The timeout for each Multi-Tenancy Ranger background sync thread run.
      If the timeout has been reached, a warning message will be logged.
    </description>
  </property>

  <property>
    <name>ozone.client.fs.default.bucket.layout</name>
    <value>FILE_SYSTEM_OPTIMIZED</value>
    <tag>OZONE, CLIENT</tag>
    <description>
      Default bucket layout value used when buckets are created using OFS.
      Supported values are LEGACY and FILE_SYSTEM_OPTIMIZED.
      FILE_SYSTEM_OPTIMIZED: This layout allows the bucket to support atomic rename/delete operations and
      also allows interoperability between S3 and FS APIs. Keys written via S3 API with a "/" delimiter
      will create intermediate directories.
    </description>
  </property>
</configuration>
