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

DRUID_SERVICE=broker
DRUID_LOG_PATH=/shared/logs/broker.log

# JAVA OPTS
SERVICE_DRUID_JAVA_OPTS=-server -Xms192m -Xmx256m -XX:+UseG1GC -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005

# Druid configs
druid_host=druid-broker
druid_processing_buffer_sizeBytes=25000000
druid_query_groupBy_maxOnDiskStorage=300000000
druid_server_http_numThreads=40
druid_processing_numThreads=1
druid_broker_http_numConnections=20
druid_broker_http_readTimeout=PT5M
druid_broker_cache_useCache=true
druid_broker_cache_populateCache=true
druid_lookup_namespace_cache_type=onHeap
druid_cache_sizeInBytes=40000000
druid_auth_basic_common_cacheDirectory=/tmp/authCache/broker
druid_sql_avatica_enable=true
druid_server_https_crlPath=/tls/revocations.crl
druid_query_scheduler_laning_strategy=manual
druid_query_scheduler_laning_lanes_one=1
druid_segmentCache_locations=[{"path":"/shared/druid/brokerIndexCache","maxSize":1000000000}]
druid_server_maxSize=1000000000
druid_sql_planner_metadataRefreshPeriod=PT15S