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

#######################
# Connection properties
#######################

# NOTE - All properties that have a default are set with it.  Uncomment
# a property if you want to use a value different than the default. 
# Properties that have no default are uncommented and must be set by
# the user.

## Zookeeper connection string specifying host and chroot where Fluo stores data.
## A chroot directory suffix must be specified but doesn't need to be named
## '/fluo'.  If not specified, a Fluo application cannot be initialized.
fluo.connection.zookeepers=localhost/test-fluo
## Zookeeper timeout
fluo.connection.zookeeper.timeout=50000
## Connection retry timeout (in milliseconds). Set to -1 to retry forever.
fluo.connection.retry.timeout.ms=3000
