# 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.
# Default Geode Native distributed system properties
# Copy to current directory and uncomment to override defaults.
#
## Debugging support, enables stacktraces in apache::geode::client::Exception.
#
# The default is false, uncomment to enable stacktraces in exceptions.
#stacktrace-enabled=true
#crash-dump-enabled=true
#
#
## Cache region configuration
#
#cache-xml-file=cache.xml
#
## Log file config
#
#log-file=geode_native.log
#log-level=config
# zero indicates use no limit.
#log-file-size-limit=0
# zero indicates use no limit. 
#log-disk-space-limit=0 
#
## Statistics values
#
# the rate is in seconds.
#statistic-sample-rate=1
#statistic-sampling-enabled=true
#statistic-archive-file=statArchive.gfs
# zero indicates use no limit.
#archive-file-size-limit=0
# zero indicates use no limit.
#archive-disk-space-limit=0
#enable-time-statistics=false 
#
## Heap based eviction configuration
#
# maximum amount of memory used by the cache for all regions, 0 disables this feature
#heap-lru-limit=0
# percentage over heap-lru-limit when LRU will be called. 
#heap-lru-delta=10
#
## Durable client support
#
#durable-client-id=
#durable-timeout=300
#
## SSL socket support
#
#ssl-enabled=false
#ssl-keystore=
#ssl-keystore-password=
#ssl-truststore=
#
## .NET AppDomain support
#
#appdomain-enabled=false
#
## Misc
#
#conflate-events=server
#disable-shuffling-of-endpoints=false
#grid-client=false
#max-fe-threads=
#max-socket-buffer-size=66560
# the units are in seconds.
#connect-timeout=59
#notify-ack-interval=10
#notify-dupcheck-life=300
#ping-interval=10 
#redundancy-monitor-interval=10
#auto-ready-for-events=true
#suspended-tx-timeout=30
#enable-chunk-handler-thread=false
#tombstone-timeout=480000
#
## module name of the initializer pointing to sample
## implementation from templates/security
#security-client-auth-library=securityImpl
## static method name of the library mentioned above
#security-client-auth-factory=createUserPasswordAuthInitInstance
## credential for Dummy Authenticator configured in server.
## note: security-password property will be inserted by the initializer
## mentioned in the above property.
#security-username=root
