<?xml version="1.0"?>
<?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.
 */
-->
<configuration>
  <property>
    <name>logservice.metaserver.port</name>
    <value>-1</value>
    <description>Log service meta-server port number</description>
  </property>
  <property>
    <name>logservice.metaserver.hostname</name>
    <value>localhost</value>
    <description>Log service meta-server host name</description>
  </property>
  <property>
    <name>logservice.metaserver.workdir</name>
    <value>.</value>
    <description>Log service meta-server working directory</description>
  </property>
  <property>
    <name>logservice.logserver.port</name>
    <value>-1</value>
    <description>Log service log-server port number</description>
  </property>
  <property>
    <name>logservice.logserver.hostname</name>
    <value>localhost</value>
    <description>Log service log-server host name</description>
  </property>
  <property>
    <name>logservice.logserver.workdir</name>
    <value>.</value>
    <description>Log service log-server working directory</description>
  </property>
  <!--property>
    <name>logservice.metaquorum</name>
    <value></value>
    <description>Log service metaquorum list of nodes</description>
  </property-->
  <!--property>
    <name>logservice.metaserver.groupid</name>
    <value></value>
    <description>Log service metaserver stringified UUID</description>
  </property-->
  <!--property>
    <name>logservice.logserver.groupid</name>
    <value></value>
    <description>Log service log server stringified UUID</description>
  </property-->
  <property>
    <name>logservice.raft.leader.election.timeout.min</name>
    <value>1000</value>
    <description>Raft leader election timeout minimum in ms</description>
  </property>
  <property>
    <name>logservice.raft.leader.election.timeout.max</name>
    <value>1200</value>
    <description>Raft leader election timeout maximum in ms</description>
  </property>
  <property>
    <name>logservice.raft.rpc.timeout</name>
    <value>100000</value>
    <description>Raft RPC call timeout in ms</description>
  </property>
  <property>
    <name>ratis.raft.segment.size</name>
    <value>33554432</value>
    <description>Raft log segment size in bytes</description>
  </property>
</configuration>
