<?xml version="1.0" encoding="UTF-8" ?>
<!--
 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.
-->

<!--
 solr.xml specifying a custom shardHandlerFactory
-->
<solr>

  <str name="shareSchema">${shareSchema:false}</str>
  <str name="configSetBaseDir">${configSetBaseDir:configsets}</str>
  <str name="coreRootDirectory">${coreRootDirectory:.}</str>

  <solrcloud>
    <str name="host">127.0.0.1</str>
    <str name="hostContext">${hostContext:solr}</str>
    <int name="hostPort">${hostPort:8983}</int>
    <int name="zkClientTimeout">${solr.zkclienttimeout:30000}</int>
    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
    <int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:45000}</int>
    <int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:340000}</int>
    <int name="autoReplicaFailoverWaitAfterExpiration">${autoReplicaFailoverWaitAfterExpiration:10000}</int>
    <int name="autoReplicaFailoverWorkLoopDelay">${autoReplicaFailoverWorkLoopDelay:10000}</int>
    <int name="autoReplicaFailoverBadNodeExpiration">${autoReplicaFailoverBadNodeExpiration:60000}</int>
  </solrcloud>

  <shardHandlerFactory name="shardHandlerFactory"
                       class="org.apache.solr.handler.component.TrackingShardHandlerFactory">
    <str name="urlScheme">${urlScheme:}</str>
    <int name="socketTimeout">${socketTimeout:90000}</int>
    <int name="connTimeout">${connTimeout:15000}</int>
  </shardHandlerFactory>

</solr>
