# 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=/data/zookeeper

# where txlog  are written
dataLogDir=/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
