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

# The number of milliseconds of each tick
tickTime=2000

# the port at which the clients will connect
clientPort=2181

# The number of ticks that the initial
# synchronization phase can take
initLimit=10

# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=30

# the directory where the snapshot is stored.
dataDir=/tmp/data/zookeeper

# where txlog  are written
dataLogDir=/tmp/data/zookeeper/txlog

# the port at which the admin will listen
adminPort=9990
zookeeper.admin.enableServer=true

# limit on queued clients - default: 1000
globalOutstandingLimit=1000

# number of transactions before snapshots are taken - default: 100000
snapCount=100000

# max # of clients - 0==unlimited
maxClientCnxns=25

# Election implementation to use. A value of "0" corresponds to the original
# UDP-based version, "1" corresponds to the non-authenticated UDP-based
# version of fast leader election, "2" corresponds to the authenticated
# UDP-based version of fast leader election, and "3" corresponds to TCP-based
# version of fast leader election. Currently, only 0 and 3 are supported,
# 3 being the default
electionAlg=3

# Leader accepts client connections. Default value is "yes". The leader
# machine coordinates updates. For higher update throughput at thes slight
# expense of read throughput the leader can be configured to not accept
# clients and focus on coordination.
leaderServes=yes

# Skips ACL checks. This results in a boost in throughput, but opens up full
# access to the data tree to everyone.
skipACL=no

# Purge txn logs every hour. Before 3.4.x this was done with an external cron
# job, now we can do it internally.
autopurge.purgeInterval=1

# Prior to version 3.4 ZooKeeper has always used NIO directly, however in
# versions 3.4 and later Netty is supported as an option to NIO (replaces).
# serverCnxnFactory=org.apache.zookeeper.server.NIOServerCnxnFactory

standaloneEnabled=false
# ZooKeeper Dynamic Reconfiguration
# See: https://zookeeper.apache.org/doc/trunk/zookeeperReconfig.html
#
# standaloneEnabled=false
# dynamicConfigFile=/path/to/zoo.cfg.dynamic
#
server.1=127.0.0.1:2710:3710:participant;0.0.0.0:2181
