mirror of https://github.com/apache/lucene.git
SOLR-3617: start/stop script with support for running examples
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1616271 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
581415ab0f
commit
6662a12c71
|
@ -0,0 +1,29 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# 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_PORT=$1
|
||||||
|
SOLR_PID=`ps waux | grep start.jar | grep $SOLR_PORT | grep -v grep | awk '{print $2}' | sort -r`
|
||||||
|
if [ "$SOLR_PID" == "" ]; then
|
||||||
|
echo "Couldn't find Solr process running on port $SOLR_PORT!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
NOW=$(date +"%F%T")
|
||||||
|
(
|
||||||
|
echo "Running OOM killer script for process $SOLR_PID for Solr on port $SOLR_PORT"
|
||||||
|
kill -9 $SOLR_PID
|
||||||
|
echo "Killed process $SOLR_PID"
|
||||||
|
) | tee solr_oom_killer-$SOLR_PORT-$NOW.log
|
|
@ -0,0 +1,859 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
|
# CONTROLLING STARTUP:
|
||||||
|
#
|
||||||
|
# Use solr -help to see available command-line options. In addition
|
||||||
|
# to passing command-line options, this script looks for an include
|
||||||
|
# file named solr.in.sh to set environment variables. Specifically,
|
||||||
|
# the following locations are searched:
|
||||||
|
#
|
||||||
|
# ./
|
||||||
|
# $HOME/.solr.in.sh
|
||||||
|
# /usr/share/solr
|
||||||
|
# /usr/local/share/solr
|
||||||
|
# /opt/solr
|
||||||
|
#
|
||||||
|
# Another option is to specify the full path to the include file in the
|
||||||
|
# environment. For example:
|
||||||
|
#
|
||||||
|
# $ SOLR_INCLUDE=/path/to/solr.in.sh solr start
|
||||||
|
#
|
||||||
|
# Note: This is particularly handy for running multiple instances on a
|
||||||
|
# single installation, or for quick tests.
|
||||||
|
#
|
||||||
|
# Finally, developers and enthusiasts who frequently run from an SVN
|
||||||
|
# checkout, and do not want to locally modify bin/solr.in.sh, can put
|
||||||
|
# a customized include file at ~/.solr.in.sh.
|
||||||
|
#
|
||||||
|
# If you would rather configure startup entirely from the environment, you
|
||||||
|
# can disable the include by exporting an empty SOLR_INCLUDE, or by
|
||||||
|
# ensuring that no include files exist in the aforementioned search list.
|
||||||
|
|
||||||
|
SOLR_SCRIPT="$0"
|
||||||
|
verbose=false
|
||||||
|
isLegacyExampleDir=false
|
||||||
|
|
||||||
|
# Resolve symlinks to this script
|
||||||
|
while [ -h "$SOLR_SCRIPT" ] ; do
|
||||||
|
ls=`ls -ld "$SOLR_SCRIPT"`
|
||||||
|
# Drop everything prior to ->
|
||||||
|
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||||
|
if expr "$link" : '/.*' > /dev/null; then
|
||||||
|
SOLR_SCRIPT="$link"
|
||||||
|
else
|
||||||
|
SOLR_SCRIPT=`dirname "$SOLR_SCRIPT"`/"$link"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
SOLR_TIP=`dirname "$SOLR_SCRIPT"`/..
|
||||||
|
SOLR_TIP=`cd "$SOLR_TIP"; pwd`
|
||||||
|
|
||||||
|
# TODO: see SOLR-3619, need to support server or example
|
||||||
|
# depending on the version of Solr
|
||||||
|
if [ -e "$SOLR_TIP/server/start.jar" ]; then
|
||||||
|
DEFAULT_SERVER_DIR=$SOLR_TIP/server
|
||||||
|
else
|
||||||
|
DEFAULT_SERVER_DIR=$SOLR_TIP/example
|
||||||
|
isLegacyExampleDir=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$SOLR_JAVA_HOME" != "" ]; then
|
||||||
|
JAVA=$SOLR_JAVA_HOME/bin/java
|
||||||
|
elif [ -n "$JAVA_HOME" ]; then
|
||||||
|
for java in "$JAVA_HOME"/bin/amd64/java "$JAVA_HOME"/bin/java; do
|
||||||
|
if [ -x "$java" ]; then
|
||||||
|
JAVA="$java"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
else
|
||||||
|
JAVA=java
|
||||||
|
fi
|
||||||
|
|
||||||
|
# test that Java exists and is executable on this server
|
||||||
|
$JAVA -version >/dev/null 2>&1 || { echo >&2 "Java is required to run Solr! Please install Java 7 or 8 before running this script."; exit 1; }
|
||||||
|
|
||||||
|
function print_usage() {
|
||||||
|
CMD="$1"
|
||||||
|
ERROR_MSG="$2"
|
||||||
|
|
||||||
|
if [ "$ERROR_MSG" != "" ]; then
|
||||||
|
echo "$ERROR_MSG"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$CMD" == "" ]; then
|
||||||
|
echo ""
|
||||||
|
echo "Usage: solr COMMAND OPTIONS"
|
||||||
|
echo " where COMMAND is one of: start, stop, restart, healthcheck"
|
||||||
|
echo ""
|
||||||
|
echo " Example: Start Solr running in the background on port 8984:"
|
||||||
|
echo ""
|
||||||
|
echo " ./solr start -p 8984"
|
||||||
|
echo ""
|
||||||
|
echo "Pass -help after any COMMAND to see command-specific usage information,"
|
||||||
|
echo " such as: ./solr start -help"
|
||||||
|
echo ""
|
||||||
|
elif [[ "$CMD" == "start" || "$CMD" == "restart" ]]; then
|
||||||
|
echo ""
|
||||||
|
echo "Usage: solr $CMD [-f] [-c] [-h hostname] [-p port] [-d directory] [-z zkHost] [-m memory] [-e example] [-V]"
|
||||||
|
echo ""
|
||||||
|
echo " -f Start Solr in foreground; default starts Solr in the background"
|
||||||
|
echo " and sends stdout / stderr to solr-PORT-console.log"
|
||||||
|
echo ""
|
||||||
|
echo " -c or -cloud Start Solr in SolrCloud mode; if -z not supplied, an embedded ZooKeeper"
|
||||||
|
echo " instance is started on Solr port+1000, such as 9983 if Solr is bound to 8983"
|
||||||
|
echo ""
|
||||||
|
echo " -h <host> Specify the hostname for this Solr instance"
|
||||||
|
echo ""
|
||||||
|
echo " -p <port> Specify the port to start the Solr HTTP listener on; default is 8983"
|
||||||
|
echo ""
|
||||||
|
echo " -d <dir> Specify the Solr server directory; defaults to server"
|
||||||
|
echo ""
|
||||||
|
echo " -z <zkHost> ZooKeeper connection string; only used when running in SolrCloud mode using -c"
|
||||||
|
echo " To launch an embedded ZooKeeper instance, don't pass this parameter."
|
||||||
|
echo ""
|
||||||
|
echo " -m <memory> Sets the min (-Xms) and max (-Xmx) heap size for the JVM, such as: -m 4g"
|
||||||
|
echo " results in: -Xms4g -Xmx4g; by default, this script sets the heap size to 512m"
|
||||||
|
echo ""
|
||||||
|
echo " -e <example> Name of the example to run; available examples:"
|
||||||
|
echo " cloud: SolrCloud example"
|
||||||
|
echo " default: Solr default example"
|
||||||
|
echo " dih: Data Import Handler"
|
||||||
|
echo " schemaless: Schema-less example"
|
||||||
|
echo " multicore: Multicore"
|
||||||
|
echo ""
|
||||||
|
echo " -noprompt Don't prompt for input; accept all defaults when running examples that accept user input"
|
||||||
|
echo ""
|
||||||
|
echo " -V Verbose messages from this script"
|
||||||
|
echo ""
|
||||||
|
elif [ "$CMD" == "stop" ]; then
|
||||||
|
echo ""
|
||||||
|
echo "Usage: solr stop [-k key] [-p port]"
|
||||||
|
echo ""
|
||||||
|
echo " -k <key> Stop key; default is solrrocks"
|
||||||
|
echo ""
|
||||||
|
echo " -p <port> Specify the port to start the Solr HTTP listener on; default is 8983"
|
||||||
|
echo ""
|
||||||
|
echo " -V Verbose messages from this script"
|
||||||
|
echo ""
|
||||||
|
echo "NOTE: If port is not specified, then all running Solr servers are stopped."
|
||||||
|
echo ""
|
||||||
|
elif [ "$CMD" == "healthcheck" ]; then
|
||||||
|
echo ""
|
||||||
|
echo "Usage: solr healthcheck [-c collection] [-z zkHost]"
|
||||||
|
echo ""
|
||||||
|
echo " -c <collection> Collection to run healthcheck against."
|
||||||
|
echo ""
|
||||||
|
echo " -z <zkHost> ZooKeeper connection string; default is localhost:9983"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
} # end print_usage
|
||||||
|
|
||||||
|
# used to show the script is still alive when waiting on work to complete
|
||||||
|
spinner()
|
||||||
|
{
|
||||||
|
local pid=$1
|
||||||
|
local delay=0.5
|
||||||
|
local spinstr='|/-\'
|
||||||
|
while [ "$(ps a | awk '{print $1}' | grep $pid)" ]; do
|
||||||
|
local temp=${spinstr#?}
|
||||||
|
printf " [%c] " "$spinstr"
|
||||||
|
local spinstr=$temp${spinstr%"$temp"}
|
||||||
|
sleep $delay
|
||||||
|
printf "\b\b\b\b\b\b"
|
||||||
|
done
|
||||||
|
printf " \b\b\b\b"
|
||||||
|
}
|
||||||
|
|
||||||
|
# extract the value of the -Djetty.port parameter from a running Solr process
|
||||||
|
function jetty_port() {
|
||||||
|
SOLR_PID="$1"
|
||||||
|
SOLR_PROC=`ps waux | grep $SOLR_PID | grep start.jar | grep jetty.port`
|
||||||
|
IFS=' ' read -a proc_args <<< "$SOLR_PROC"
|
||||||
|
for arg in "${proc_args[@]}"
|
||||||
|
do
|
||||||
|
IFS='=' read -a pair <<< "$arg"
|
||||||
|
if [ "${pair[0]}" == "-Djetty.port" ]; then
|
||||||
|
local jetty_port="${pair[1]}"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "$jetty_port"
|
||||||
|
} # end jetty_port func
|
||||||
|
|
||||||
|
# run a Solr command-line tool using the SolrCLI class;
|
||||||
|
# useful for doing cross-platform work from the command-line using Java
|
||||||
|
function run_tool() {
|
||||||
|
|
||||||
|
# Extract the solr.war if it hasn't been done already (so we can access the SolrCLI class)
|
||||||
|
if [ ! -d "$DEFAULT_SERVER_DIR/solr-webapp/webapp" ]; then
|
||||||
|
(mkdir -p $DEFAULT_SERVER_DIR/solr-webapp/webapp && cd $DEFAULT_SERVER_DIR/solr-webapp/webapp && jar xf $DEFAULT_SERVER_DIR/webapps/solr.war)
|
||||||
|
fi
|
||||||
|
|
||||||
|
"$JAVA" -Dlog4j.configuration=file:$DEFAULT_SERVER_DIR/scripts/cloud-scripts/log4j.properties \
|
||||||
|
-classpath "$DEFAULT_SERVER_DIR/solr-webapp/webapp/WEB-INF/lib/*:$DEFAULT_SERVER_DIR/lib/ext/*" \
|
||||||
|
org.apache.solr.util.SolrCLI $*
|
||||||
|
|
||||||
|
} # end run_tool function
|
||||||
|
|
||||||
|
# get information about any Solr nodes running on this host
|
||||||
|
function get_info() {
|
||||||
|
# first, see if Solr is running
|
||||||
|
numSolrs=`ps waux | grep java | grep start.jar | wc -l | sed -e 's/^[ \t]*//'`
|
||||||
|
if [ "$numSolrs" != "0" ]; then
|
||||||
|
echo -e "\nFound $numSolrs Solr nodes: "
|
||||||
|
for ID in `ps waux | grep java | grep start.jar | awk '{print $2}' | sort -r`
|
||||||
|
do
|
||||||
|
port=`jetty_port "$ID"`
|
||||||
|
if [ "$port" != "" ]; then
|
||||||
|
echo ""
|
||||||
|
echo "Found Solr process $ID running on port $port"
|
||||||
|
run_tool status -solr http://localhost:$port/solr
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
else
|
||||||
|
echo -e "\nNo Solr nodes are running.\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
} # end get_info
|
||||||
|
|
||||||
|
# tries to gracefully stop Solr using the Jetty
|
||||||
|
# stop command and if that fails, then uses kill -9
|
||||||
|
function stop_solr() {
|
||||||
|
|
||||||
|
DIR="$1"
|
||||||
|
SOLR_PORT="$2"
|
||||||
|
STOP_PORT="79${SOLR_PORT: -2}"
|
||||||
|
STOP_KEY="$3"
|
||||||
|
|
||||||
|
SOLR_PID=`ps waux | grep start.jar | grep $SOLR_PORT | grep -v grep | awk '{print $2}' | sort -r`
|
||||||
|
if [ "$SOLR_PID" != "" ]; then
|
||||||
|
echo -e "Sending stop command to Jetty stop port $STOP_PORT ... waiting 5 seconds to allow process $SOLR_PID to stop gracefully."
|
||||||
|
$JAVA -jar $DIR/start.jar STOP.PORT=$STOP_PORT STOP.KEY=$STOP_KEY --stop || true
|
||||||
|
sleep 5
|
||||||
|
else
|
||||||
|
echo -e "No Solr nodes found to stop."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
SOLR_PID=`ps waux | grep start.jar | grep $SOLR_PORT | grep -v grep | awk '{print $2}' | sort -r`
|
||||||
|
if [ "$SOLR_PID" != "" ]; then
|
||||||
|
echo -e "Solr process $SOLR_PID is still running; forcefully killing it now."
|
||||||
|
kill -9 $SOLR_PID
|
||||||
|
echo "Killed process $SOLR_PID"
|
||||||
|
fi
|
||||||
|
|
||||||
|
SOLR_PID=`ps waux | grep start.jar | grep $SOLR_PORT | grep -v grep | awk '{print $2}' | sort -r`
|
||||||
|
if [ "$SOLR_PID" != "" ]; then
|
||||||
|
echo "ERROR: Failed to kill previous Solr Java process $SOLR_PID ... script fails."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
} # end stop_solr
|
||||||
|
|
||||||
|
if [ $# -eq 1 ]; then
|
||||||
|
case $1 in
|
||||||
|
-help|-usage)
|
||||||
|
print_usage ""
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
-info|-i)
|
||||||
|
get_info
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $# -gt 0 ]; then
|
||||||
|
# if first arg starts with a dash (and it's not -help or -info),
|
||||||
|
# then assume they are starting Solr, such as: solr -f
|
||||||
|
if [[ $1 == -* ]]; then
|
||||||
|
SCRIPT_CMD="start"
|
||||||
|
else
|
||||||
|
SCRIPT_CMD=$1
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# no args - just show usage and exit
|
||||||
|
print_usage ""
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# run a healthcheck and exit if requested
|
||||||
|
if [ "$SCRIPT_CMD" == "healthcheck" ]; then
|
||||||
|
|
||||||
|
if [ $# -gt 0 ]; then
|
||||||
|
while true; do
|
||||||
|
case $1 in
|
||||||
|
-c|-collection)
|
||||||
|
HEALTHCHECK_COLLECTION=$2
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-z|-zkhost)
|
||||||
|
ZK_HOST="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-help|-usage)
|
||||||
|
print_usage "$SCRIPT_CMD" ""
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
--)
|
||||||
|
shift
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [ "$1" != "" ]; then
|
||||||
|
echo "Error parsing argument $1!" >&2
|
||||||
|
print_usage "$SCRIPT_CMD"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
break # out-of-args, stop looping
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$ZK_HOST" == "" ]; then
|
||||||
|
ZK_HOST=localhost:9983
|
||||||
|
fi
|
||||||
|
|
||||||
|
run_tool healthcheck -zkHost $ZK_HOST -collection $HEALTHCHECK_COLLECTION
|
||||||
|
|
||||||
|
exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
# verify the command given is supported
|
||||||
|
if [ "$SCRIPT_CMD" != "stop" ] && [ "$SCRIPT_CMD" != "start" ] && [ "$SCRIPT_CMD" != "restart" ]; then
|
||||||
|
print_usage "" "$SCRIPT_CMD not supported!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If an include wasn't specified in the environment, then search for one...
|
||||||
|
if [ "x$SOLR_INCLUDE" == "x" ]; then
|
||||||
|
# Locations (in order) to use when searching for an include file.
|
||||||
|
for include in "`dirname "$0"`/solr.in.sh" \
|
||||||
|
"$HOME/.solr.in.sh" \
|
||||||
|
/usr/share/solr/solr.in.sh \
|
||||||
|
/usr/local/share/solr/solr.in.sh \
|
||||||
|
/opt/solr/solr.in.sh; do
|
||||||
|
if [ -r "$include" ]; then
|
||||||
|
. "$include"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
elif [ -r "$SOLR_INCLUDE" ]; then
|
||||||
|
. "$SOLR_INCLUDE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Run in foreground (default is to run in the background)
|
||||||
|
FG="false"
|
||||||
|
noprompt=false
|
||||||
|
|
||||||
|
if [ $# -gt 0 ]; then
|
||||||
|
while true; do
|
||||||
|
case $1 in
|
||||||
|
-c|-cloud)
|
||||||
|
SOLR_MODE="solrcloud"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-d|-dir)
|
||||||
|
# see if the arg value is relative to the tip vs full path
|
||||||
|
if [ -d "$SOLR_TIP/$2" ]; then
|
||||||
|
SOLR_SERVER_DIR="$SOLR_TIP/$2"
|
||||||
|
else
|
||||||
|
SOLR_SERVER_DIR="$2"
|
||||||
|
fi
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-e|-example)
|
||||||
|
EXAMPLE="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-f|-foreground)
|
||||||
|
FG="true"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-h|-host)
|
||||||
|
SOLR_HOST="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-m|-memory)
|
||||||
|
SOLR_HEAP="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-p|-port)
|
||||||
|
SOLR_PORT="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-z|-zkhost)
|
||||||
|
ZK_HOST="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-help|-usage)
|
||||||
|
print_usage "$SCRIPT_CMD" ""
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
-noprompt)
|
||||||
|
noprompt=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-V|-verbose)
|
||||||
|
verbose=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--)
|
||||||
|
shift
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [ "$1" != "" ]; then
|
||||||
|
echo "Error parsing argument $1!" >&2
|
||||||
|
print_usage "$SCRIPT_CMD"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
break # out-of-args, stop looping
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if $verbose ; then
|
||||||
|
echo "Using Solr root directory: $SOLR_TIP"
|
||||||
|
echo "Using Java: $JAVA"
|
||||||
|
$JAVA -version
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$SOLR_HOST" != "" ]; then
|
||||||
|
SOLR_HOST_ARG="-Dhost=$SOLR_HOST"
|
||||||
|
else
|
||||||
|
SOLR_HOST_ARG=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$SOLR_SERVER_DIR" == "" ]; then
|
||||||
|
SOLR_SERVER_DIR=$DEFAULT_SERVER_DIR
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -e "$SOLR_SERVER_DIR" ]; then
|
||||||
|
echo -e "\nSolr server directory $SOLR_SERVER_DIR not found!\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
CLOUD_NUM_NODES=2
|
||||||
|
declare -a CLOUD_PORTS=('8983' '7574' '8984' '7575');
|
||||||
|
|
||||||
|
# select solr.solr.home based on the desired example
|
||||||
|
if [ "$EXAMPLE" != "" ]; then
|
||||||
|
case $EXAMPLE in
|
||||||
|
cloud)
|
||||||
|
#
|
||||||
|
# Engage in an interactive session with user to setup the SolrCloud example
|
||||||
|
#
|
||||||
|
echo -e "\nWelcome to the SolrCloud example!\n\n"
|
||||||
|
if $noprompt ; then
|
||||||
|
CLOUD_NUM_NODES=2
|
||||||
|
echo -e "Starting up $CLOUD_NUM_NODES Solr nodes for your example SolrCloud cluster."
|
||||||
|
else
|
||||||
|
echo -e "This interactive session will help you launch a SolrCloud cluster on your local workstation.\n"
|
||||||
|
read -e -p "To begin, how many Solr nodes would you like to run in your local cluster? (specify 1-4 nodes) [2] " USER_INPUT
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
CLOUD_NUM_NODES=`echo $USER_INPUT | tr -d ' '`
|
||||||
|
if [ "$CLOUD_NUM_NODES" == "" ]; then
|
||||||
|
CLOUD_NUM_NODES=2
|
||||||
|
fi
|
||||||
|
if [[ $CLOUD_NUM_NODES > 4 || $CLOUD_NUM_NODES < 1 ]]; then
|
||||||
|
read -e -p "Please provide a node count between 1 and 4 [2] " USER_INPUT
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo -e "Ok, let's start up $CLOUD_NUM_NODES Solr nodes for your example SolrCloud cluster.\n"
|
||||||
|
for (( s=0; s<$CLOUD_NUM_NODES; s++ ))
|
||||||
|
do
|
||||||
|
read -e -p "Please enter the port for node$[$s+1] [${CLOUD_PORTS[$s]}] " USER_INPUT
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
# trim whitespace out of the user input
|
||||||
|
CLOUD_PORT=`echo $USER_INPUT | tr -d ' '`
|
||||||
|
|
||||||
|
# handle the default selection or empty input
|
||||||
|
if [ "$CLOUD_PORT" == "" ]; then
|
||||||
|
CLOUD_PORT=${CLOUD_PORTS[$s]}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check to see if something is already bound to that port
|
||||||
|
PORT_IN_USE=`lsof -i:$CLOUD_PORT | grep $CLOUD_PORT`
|
||||||
|
if [ "$PORT_IN_USE" != "" ]; then
|
||||||
|
read -e -p "Oops! Looks like port $CLOUD_PORT is already being used by another process. Please choose a different port. " USER_INPUT
|
||||||
|
else
|
||||||
|
CLOUD_PORTS[$s]=$CLOUD_PORT
|
||||||
|
echo $CLOUD_PORT
|
||||||
|
break;
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
for (( s=0; s<$CLOUD_NUM_NODES; s++ ))
|
||||||
|
do
|
||||||
|
ndx=$[$s+1]
|
||||||
|
if [ ! -d "$SOLR_TIP/node$ndx" ]; then
|
||||||
|
echo "Cloning $DEFAULT_SERVER_DIR into $SOLR_TIP/node$ndx"
|
||||||
|
cp -r $DEFAULT_SERVER_DIR $SOLR_TIP/node$ndx
|
||||||
|
rm -rf $SOLR_TIP/node$ndx/solr/zoo_data
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
SOLR_MODE="solrcloud"
|
||||||
|
SOLR_SERVER_DIR="$SOLR_TIP/node1"
|
||||||
|
SOLR_HOME="$SOLR_SERVER_DIR/solr"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
default)
|
||||||
|
SOLR_HOME="$SOLR_TIP/example/solr"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
dih)
|
||||||
|
SOLR_HOME="$SOLR_TIP/example/example-DIH/solr"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
schemaless)
|
||||||
|
SOLR_HOME="$SOLR_TIP/example/example-schemaless/solr"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
multicore)
|
||||||
|
SOLR_HOME="$SOLR_TIP/example/multicore"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
print_usage "start" "Unsupported example $EXAMPLE! Please choose one of: cloud, dih, schemaless, multicore, or default"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$SOLR_HOME" == "" ]; then
|
||||||
|
SOLR_HOME="$SOLR_SERVER_DIR/solr"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$STOP_KEY" == "" ]; then
|
||||||
|
STOP_KEY="solrrocks"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# stop all if no port specified
|
||||||
|
if [[ "$SCRIPT_CMD" == "stop" && "$SOLR_PORT" == "" ]]; then
|
||||||
|
numSolrs=`ps waux | grep java | grep start.jar | wc -l | sed -e 's/^[ \t]*//'`
|
||||||
|
if [ "$numSolrs" != "0" ]; then
|
||||||
|
echo -e "\nFound $numSolrs Solr nodes to stop."
|
||||||
|
for ID in `ps waux | grep java | grep start.jar | awk '{print $2}' | sort -r`
|
||||||
|
do
|
||||||
|
port=`jetty_port "$ID"`
|
||||||
|
stop_solr "$SOLR_SERVER_DIR" "$port" "$STOP_KEY"
|
||||||
|
done
|
||||||
|
else
|
||||||
|
echo -e "\nNo Solr nodes found to stop.\n"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$SOLR_PORT" == "" ]; then
|
||||||
|
SOLR_PORT="8983"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$STOP_PORT" == "" ]; then
|
||||||
|
STOP_PORT="79${SOLR_PORT: -2}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$SCRIPT_CMD" == "start" ]]; then
|
||||||
|
# see if Solr is already running
|
||||||
|
SOLR_PID=`ps waux | grep start.jar | grep $SOLR_PORT | grep -v grep | awk '{print $2}' | sort -r`
|
||||||
|
if [ "$SOLR_PID" != "" ]; then
|
||||||
|
echo -e "\nSolr already running on port $SOLR_PORT (pid: $SOLR_PID)!"
|
||||||
|
echo -e "Please use the 'restart' command if you want to restart this node.\n"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# either stop or restart
|
||||||
|
stop_solr "$SOLR_SERVER_DIR" "$SOLR_PORT" "$STOP_KEY"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# backup the log files
|
||||||
|
if [ -f $SOLR_SERVER_DIR/logs/solr.log ]; then
|
||||||
|
if $verbose ; then
|
||||||
|
echo "Backing up $SOLR_SERVER_DIR/logs/solr.log"
|
||||||
|
fi
|
||||||
|
mv $SOLR_SERVER_DIR/logs/solr.log $SOLR_SERVER_DIR/logs/solr_log_`date +"%Y%m%d_%H%M"`
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f $SOLR_SERVER_DIR/logs/solr_gc.log ]; then
|
||||||
|
if $verbose ; then
|
||||||
|
echo "Backing up $SOLR_SERVER_DIR/logs/solr_gc.log"
|
||||||
|
fi
|
||||||
|
mv $SOLR_SERVER_DIR/logs/solr_gc.log $SOLR_SERVER_DIR/logs/solr_gc_log_`date +"%Y%m%d_%H%M"`
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$SCRIPT_CMD" == "stop" ]; then
|
||||||
|
# already stopped, script is done.
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# if we get here, then we're starting a new node up ...
|
||||||
|
|
||||||
|
# if verbose gc logging enabled, setup the location of the log file
|
||||||
|
if [ "$GC_LOG_OPTS" != "" ]; then
|
||||||
|
GC_LOG_OPTS="$GC_LOG_OPTS -Xloggc:$SOLR_SERVER_DIR/logs/solr_gc.log"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$SOLR_MODE" == "solrcloud" ]; then
|
||||||
|
if [ "$ZK_CLIENT_TIMEOUT" == "" ]; then
|
||||||
|
ZK_CLIENT_TIMEOUT="15000"
|
||||||
|
fi
|
||||||
|
|
||||||
|
CLOUD_MODE_OPTS="-DzkClientTimeout=$ZK_CLIENT_TIMEOUT"
|
||||||
|
|
||||||
|
if [ "$ZK_HOST" != "" ]; then
|
||||||
|
CLOUD_MODE_OPTS="$CLOUD_MODE_OPTS -DzkHost=$ZK_HOST"
|
||||||
|
else
|
||||||
|
if $verbose ; then
|
||||||
|
echo "Configuring SolrCloud to launch an embedded ZooKeeper using -DzkRun"
|
||||||
|
fi
|
||||||
|
|
||||||
|
CLOUD_MODE_OPTS="$CLOUD_MODE_OPTS -DzkRun"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# These are useful for attaching remove profilers like VisualVM/JConsole
|
||||||
|
if [ "$ENABLE_REMOTE_JMX_OPTS" == "true" ]; then
|
||||||
|
REMOTE_JMX_OPTS="-Dcom.sun.management.jmxremote \
|
||||||
|
-Dcom.sun.management.jmxremote.local.only=false \
|
||||||
|
-Dcom.sun.management.jmxremote.ssl=false \
|
||||||
|
-Dcom.sun.management.jmxremote.authenticate=false \
|
||||||
|
-Dcom.sun.management.jmxremote.port=10${SOLR_PORT: -2} \
|
||||||
|
-Dcom.sun.management.jmxremote.rmi.port=10${SOLR_PORT: -2}"
|
||||||
|
|
||||||
|
# if the host is set, then set that as the rmi server hostname
|
||||||
|
if [ "$SOLR_HOST" != "" ]; then
|
||||||
|
REMOTE_JMX_OPTS="$REMOTE_JMX_OPTS -Djava.rmi.server.hostname=$SOLR_HOST"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
REMOTE_JMX_OPTS=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$SOLR_HEAP" != "" ]; then
|
||||||
|
SOLR_JAVA_MEM="-Xms$SOLR_HEAP -Xmx$SOLR_HEAP"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$SOLR_JAVA_MEM" == "" ]; then
|
||||||
|
SOLR_JAVA_MEM="-Xms512m -Xmx512m"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$SOLR_TIMEZONE" == "" ]; then
|
||||||
|
SOLR_TIMEZONE="UTC"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Launches Solr in foreground/background depending on parameters
|
||||||
|
function launch_solr() {
|
||||||
|
|
||||||
|
run_in_foreground="$1"
|
||||||
|
stop_port="79${SOLR_PORT: -2}"
|
||||||
|
|
||||||
|
SOLR_ADDL_ARGS="$2"
|
||||||
|
|
||||||
|
# commented out debugging info
|
||||||
|
if $verbose ; then
|
||||||
|
echo -e "\nStarting Solr using the following settings:"
|
||||||
|
echo -e " SOLR_SERVER_DIR = $SOLR_SERVER_DIR"
|
||||||
|
echo -e " SOLR_HOME = $SOLR_HOME"
|
||||||
|
echo -e " JAVA = $JAVA"
|
||||||
|
echo -e " SOLR_HOST = $SOLR_HOST"
|
||||||
|
echo -e " SOLR_PORT = $SOLR_PORT"
|
||||||
|
echo -e " GC_TUNE = $GC_TUNE"
|
||||||
|
echo -e " GC_LOG_OPTS = $GC_LOG_OPTS"
|
||||||
|
echo -e " SOLR_JAVA_MEM = $SOLR_JAVA_MEM"
|
||||||
|
echo -e " REMOTE_JMX_OPTS = $REMOTE_JMX_OPTS"
|
||||||
|
echo -e " CLOUD_MODE_OPTS = $CLOUD_MODE_OPTS"
|
||||||
|
echo -e " SOLR_TIMEZONE = $SOLR_TIMEZONE"
|
||||||
|
|
||||||
|
if [ "$SOLR_ADDL_ARGS" != "" ]; then
|
||||||
|
echo -e " SOLR_ADDL_ARGS = $SOLR_ADDL_ARGS"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# need to launch solr from the server dir
|
||||||
|
cd $SOLR_SERVER_DIR
|
||||||
|
|
||||||
|
if [ ! -e "$SOLR_SERVER_DIR/start.jar" ]; then
|
||||||
|
echo -e "\nERROR: start.jar file not found in $SOLR_SERVER_DIR!\nPlease check your -d parameter to set the correct Solr server directory.\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
SOLR_START_OPTS="-server -Xss256k $SOLR_JAVA_MEM $GC_TUNE $GC_LOG_OPTS $REMOTE_JMX_OPTS \
|
||||||
|
$CLOUD_MODE_OPTS \
|
||||||
|
-DSTOP.PORT=$stop_port -DSTOP.KEY=$STOP_KEY \
|
||||||
|
$SOLR_HOST_ARG -Djetty.port=$SOLR_PORT \
|
||||||
|
-Dsolr.solr.home=$SOLR_HOME \
|
||||||
|
-Duser.timezone=$SOLR_TIMEZONE \
|
||||||
|
-Djava.net.preferIPv4Stack=true -Dsolr.autoSoftCommit.maxTime=3000"
|
||||||
|
|
||||||
|
if [ "$SOLR_MODE" == "solrcloud" ]; then
|
||||||
|
IN_CLOUD_MODE=" in SolrCloud mode"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$run_in_foreground" == "true" ]; then
|
||||||
|
echo -e "\nStarting Solr$IN_CLOUD_MODE on port $SOLR_PORT from $SOLR_SERVER_DIR\n"
|
||||||
|
$JAVA $SOLR_START_OPTS $SOLR_ADDL_ARGS -XX:OnOutOfMemoryError="$SOLR_TIP/bin/oom_solr.sh $SOLR_PORT" -jar start.jar
|
||||||
|
else
|
||||||
|
# run Solr in the background
|
||||||
|
nohup $JAVA $SOLR_START_OPTS $SOLR_ADDL_ARGS -XX:OnOutOfMemoryError="$SOLR_TIP/bin/oom_solr.sh $SOLR_PORT" -jar start.jar 1>$SOLR_TIP/bin/solr-$SOLR_PORT-console.log 2>&1 &
|
||||||
|
|
||||||
|
echo -n "Waiting to see Solr listening on port $SOLR_PORT"
|
||||||
|
# Launch in a subshell to show the spinner
|
||||||
|
(loops=0
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
running=`lsof -i:$SOLR_PORT | grep $SOLR_PORT`
|
||||||
|
if [ "$running" == "" ]; then
|
||||||
|
if [ $loops -lt 6 ]; then
|
||||||
|
sleep 5
|
||||||
|
loops=$[$loops+1]
|
||||||
|
else
|
||||||
|
echo -e "Still not seeing Solr listening on $SOLR_PORT after 30 seconds!"
|
||||||
|
tail -30 $SOLR_TIP/node1/logs/solr.log
|
||||||
|
exit;
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
SOLR_PID=`ps waux | grep start.jar | grep $SOLR_PORT | grep -v grep | awk '{print $2}' | sort -r`
|
||||||
|
echo -e "\nStarted Solr server on port $SOLR_PORT (pid=$SOLR_PID). Happy searching!\n"
|
||||||
|
exit;
|
||||||
|
fi
|
||||||
|
done) &
|
||||||
|
spinner $!
|
||||||
|
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "$EXAMPLE" != "cloud" ]; then
|
||||||
|
launch_solr "$FG" ""
|
||||||
|
else
|
||||||
|
#
|
||||||
|
# SolrCloud example is a bit involved so needs special handling here
|
||||||
|
#
|
||||||
|
SOLR_SERVER_DIR=$SOLR_TIP/node1
|
||||||
|
SOLR_HOME=$SOLR_TIP/node1/solr
|
||||||
|
SOLR_PORT=${CLOUD_PORTS[0]}
|
||||||
|
echo -e "\nStarting up SolrCloud node1 on port ${CLOUD_PORTS[0]} using command:\n"
|
||||||
|
echo -e "solr start -cloud -d node1 -p $SOLR_PORT \n\n"
|
||||||
|
|
||||||
|
if $isLegacyExampleDir ; then
|
||||||
|
# have to pass these when working with the legacy example directory
|
||||||
|
BOOTSTRAP_ARGS="-Dbootstrap_confdir=./solr/collection1/conf -Dcollection.configName=myconf"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# can't launch this node in the foreground else we can't run anymore commands
|
||||||
|
launch_solr "false" "$BOOTSTRAP_ARGS"
|
||||||
|
|
||||||
|
zk_port=$[$SOLR_PORT+1000]
|
||||||
|
zk_host=localhost:$zk_port
|
||||||
|
|
||||||
|
for (( s=1; s<$CLOUD_NUM_NODES; s++ ))
|
||||||
|
do
|
||||||
|
ndx=$[$s+1]
|
||||||
|
next_port=${CLOUD_PORTS[$s]}
|
||||||
|
echo -e "\n\nStarting node$ndx on port $next_port using command:\n"
|
||||||
|
echo -e "solr start -cloud -d node$ndx -p $next_port -z $zk_host \n\n"
|
||||||
|
# call this script again with correct args for next node
|
||||||
|
$SOLR_TIP/bin/solr start -cloud -d node$ndx -p $next_port -z $zk_host
|
||||||
|
done
|
||||||
|
|
||||||
|
# TODO: better (shorter) name??
|
||||||
|
CLOUD_COLLECTION=gettingstarted
|
||||||
|
|
||||||
|
# if the new default config directory is available, then use it,
|
||||||
|
# otherwise, use the schema-less example
|
||||||
|
if [ -d "$SOLR_TIP/server/solr/default_conf" ]; then
|
||||||
|
CLOUD_CONFIG_DIR=$SOLR_TIP/server/solr/default_conf
|
||||||
|
else
|
||||||
|
CLOUD_CONFIG_DIR=$SOLR_TIP/example/example-schemaless/solr/collection1/conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
CLOUD_CONFIG=schemaless
|
||||||
|
|
||||||
|
if $noprompt ; then
|
||||||
|
CLOUD_NUM_SHARDS=2
|
||||||
|
CLOUD_REPFACT=2
|
||||||
|
else
|
||||||
|
echo -e "\nNow let's create a new collection for indexing documents in your $CLOUD_NUM_NODES-node cluster.\n"
|
||||||
|
read -e -p "Please provide a name for your new collection: [gettingstarted] " USER_INPUT
|
||||||
|
# trim whitespace out of the user input
|
||||||
|
CLOUD_COLLECTION=`echo $USER_INPUT | tr -d ' '`
|
||||||
|
|
||||||
|
# handle the default selection or empty input
|
||||||
|
if [ "$CLOUD_COLLECTION" == "" ]; then
|
||||||
|
CLOUD_COLLECTION=gettingstarted
|
||||||
|
fi
|
||||||
|
echo $CLOUD_COLLECTION
|
||||||
|
|
||||||
|
read -e -p "How many shards would you like to split $CLOUD_COLLECTION into? [2] " USER_INPUT
|
||||||
|
# trim whitespace out of the user input
|
||||||
|
CLOUD_NUM_SHARDS=`echo $USER_INPUT | tr -d ' '`
|
||||||
|
|
||||||
|
# handle the default selection or empty input
|
||||||
|
if [ "$CLOUD_NUM_SHARDS" == "" ]; then
|
||||||
|
CLOUD_NUM_SHARDS=2
|
||||||
|
fi
|
||||||
|
echo $CLOUD_NUM_SHARDS
|
||||||
|
|
||||||
|
read -e -p "How many replicas per shard would you like to create? [2] " USER_INPUT
|
||||||
|
# trim whitespace out of the user input
|
||||||
|
CLOUD_REPFACT=`echo $USER_INPUT | tr -d ' '`
|
||||||
|
|
||||||
|
# handle the default selection or empty input
|
||||||
|
if [ "$CLOUD_REPFACT" == "" ]; then
|
||||||
|
CLOUD_REPFACT=2
|
||||||
|
fi
|
||||||
|
echo $CLOUD_REPFACT
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "\nDeploying default Solr configuration files to embedded ZooKeeper using command:\n"
|
||||||
|
echo -e "$DEFAULT_SERVER_DIR/scripts/cloud-scripts/zkcli.sh -zkhost $zk_host -cmd upconfig -confdir $CLOUD_CONFIG_DIR -confname $CLOUD_CONFIG\n"
|
||||||
|
# upload the config directory to ZooKeeper
|
||||||
|
# Extract the solr.war if it hasn't been done already (so we can access the SolrCLI class)
|
||||||
|
if [ ! -d "$DEFAULT_SERVER_DIR/solr-webapp/webapp" ]; then
|
||||||
|
(mkdir -p $DEFAULT_SERVER_DIR/solr-webapp/webapp && cd $DEFAULT_SERVER_DIR/solr-webapp/webapp && jar xf $DEFAULT_SERVER_DIR/webapps/solr.war)
|
||||||
|
fi
|
||||||
|
$JAVA -Dlog4j.configuration=file:$DEFAULT_SERVER_DIR/scripts/cloud-scripts/log4j.properties \
|
||||||
|
-classpath "$DEFAULT_SERVER_DIR/solr-webapp/webapp/WEB-INF/lib/*:$DEFAULT_SERVER_DIR/lib/ext/*" \
|
||||||
|
org.apache.solr.cloud.ZkCLI -zkhost $zk_host -cmd upconfig -confdir $CLOUD_CONFIG_DIR -confname $CLOUD_CONFIG > /dev/null 2>&1
|
||||||
|
echo -e "Successfully deployed $CLOUD_CONFIG to ZooKeeper\n"
|
||||||
|
|
||||||
|
# note use of ceiling logic in case of remainder
|
||||||
|
MAX_SHARDS_PER_NODE=$((($CLOUD_NUM_SHARDS*$CLOUD_REPFACT+$CLOUD_NUM_NODES-1)/$CLOUD_NUM_NODES))
|
||||||
|
|
||||||
|
COLLECTIONS_API=http://localhost:$SOLR_PORT/solr/admin/collections
|
||||||
|
|
||||||
|
CLOUD_CREATE_COLLECTION_CMD="$COLLECTIONS_API?action=CREATE&name=$CLOUD_COLLECTION&replicationFactor=$CLOUD_REPFACT&numShards=$CLOUD_NUM_SHARDS&collection.configName=$CLOUD_CONFIG&maxShardsPerNode=$MAX_SHARDS_PER_NODE&wt=json&indent=2"
|
||||||
|
echo -e "\n\nCreating new collection $CLOUD_COLLECTION with $CLOUD_NUM_SHARDS shards and replication factor $CLOUD_REPFACT using Collections API command:\n\n$CLOUD_CREATE_COLLECTION_CMD\n\nFor more information about the Collections API, please see: https://cwiki.apache.org/confluence/display/solr/Collections+API\n"
|
||||||
|
curl "$CLOUD_CREATE_COLLECTION_CMD"
|
||||||
|
|
||||||
|
echo -e "\n\nSolrCloud example running, please visit http://localhost:$SOLR_PORT/solr \n\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit $?
|
|
@ -0,0 +1,653 @@
|
||||||
|
@REM
|
||||||
|
@REM Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
@REM contributor license agreements. See the NOTICE file distributed with
|
||||||
|
@REM this work for additional information regarding copyright ownership.
|
||||||
|
@REM The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
@REM (the "License"); you may not use this file except in compliance with
|
||||||
|
@REM the License. You may obtain a copy of the License at
|
||||||
|
@REM
|
||||||
|
@REM http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
@REM
|
||||||
|
@REM Unless required by applicable law or agreed to in writing, software
|
||||||
|
@REM distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
@REM See the License for the specific language governing permissions and
|
||||||
|
@REM limitations under the License.
|
||||||
|
|
||||||
|
@echo off
|
||||||
|
|
||||||
|
IF "%OS%"=="Windows_NT" setlocal enabledelayedexpansion enableextensions
|
||||||
|
|
||||||
|
REM Determine top-level Solr directory
|
||||||
|
set SDIR=%~dp0
|
||||||
|
IF "%SDIR:~-1%"=="\" set SDIR=%SDIR:~0,-1%
|
||||||
|
set SOLR_TIP=%SDIR%\..
|
||||||
|
pushd %SOLR_TIP%
|
||||||
|
set SOLR_TIP=%CD%
|
||||||
|
popd
|
||||||
|
|
||||||
|
REM Used to report errors before exiting the script
|
||||||
|
set SCRIPT_ERROR=
|
||||||
|
set NO_USER_PROMPT=0
|
||||||
|
|
||||||
|
REM Verify Java is available
|
||||||
|
if NOT DEFINED JAVA_HOME goto need_java_home
|
||||||
|
"%JAVA_HOME%"\bin\java -version:1.8 -version > nul 2>&1
|
||||||
|
IF ERRORLEVEL 1 "%JAVA_HOME%"\bin\java -version:1.7 -version > nul 2>&1
|
||||||
|
IF ERRORLEVEL 1 goto need_java_vers
|
||||||
|
set "JAVA=%JAVA_HOME%\bin\java"
|
||||||
|
|
||||||
|
REM See SOLR-3619
|
||||||
|
IF EXIST "%SOLR_TIP%\server\start.jar" (
|
||||||
|
set "DEFAULT_SERVER_DIR=%SOLR_TIP%\server"
|
||||||
|
) ELSE (
|
||||||
|
set "DEFAULT_SERVER_DIR=%SOLR_TIP%\example"
|
||||||
|
)
|
||||||
|
|
||||||
|
set FIRST_ARG=%1
|
||||||
|
|
||||||
|
IF [%1]==[] goto usage
|
||||||
|
|
||||||
|
IF "%1"=="-help" goto usage
|
||||||
|
IF "%1"=="-usage" goto usage
|
||||||
|
IF "%1"=="/?" goto usage
|
||||||
|
IF "%1"=="-i" goto get_info
|
||||||
|
IF "%1"=="-info" goto get_info
|
||||||
|
|
||||||
|
REM Only allow the command to be the first argument, assume start if not supplied
|
||||||
|
IF "%1"=="start" goto set_script_cmd
|
||||||
|
IF "%1"=="stop" goto set_script_cmd
|
||||||
|
IF "%1"=="restart" goto set_script_cmd
|
||||||
|
IF "%1"=="healthcheck" (
|
||||||
|
REM healthcheck uses different arg parsing strategy
|
||||||
|
SHIFT
|
||||||
|
goto parse_healthcheck_args
|
||||||
|
)
|
||||||
|
goto include_vars
|
||||||
|
|
||||||
|
:usage
|
||||||
|
IF NOT "%SCRIPT_ERROR%"=="" ECHO %SCRIPT_ERROR%
|
||||||
|
IF [%FIRST_ARG%]==[] goto script_usage
|
||||||
|
IF "%FIRST_ARG%"=="-help" goto script_usage
|
||||||
|
IF "%FIRST_ARG%"=="-usage" goto script_usage
|
||||||
|
IF "%FIRST_ARG%"=="/?" goto script_usage
|
||||||
|
IF "%SCRIPT_CMD%"=="start" goto start_usage
|
||||||
|
IF "%SCRIPT_CMD%"=="restart" goto start_usage
|
||||||
|
IF "%SCRIPT_CMD%"=="stop" goto stop_usage
|
||||||
|
goto done
|
||||||
|
|
||||||
|
:script_usage
|
||||||
|
@echo.
|
||||||
|
@echo Usage: solr COMMAND OPTIONS
|
||||||
|
@echo where COMMAND is one of: start, stop, restart, healthcheck
|
||||||
|
@echo.
|
||||||
|
@echo Example: Start Solr running in the background on port 8984:
|
||||||
|
@echo.
|
||||||
|
@echo ./solr start -p 8984
|
||||||
|
@echo.
|
||||||
|
@echo Pass -help after any COMMAND to see command-specific usage information,
|
||||||
|
@echo such as: ./solr start -help
|
||||||
|
@echo.
|
||||||
|
goto done
|
||||||
|
|
||||||
|
:start_usage
|
||||||
|
@echo.
|
||||||
|
@echo Usage: solr %SCRIPT_CMD% [-f] [-c] [-h hostname] [-p port] [-d directory] [-z zkHost] [-m memory] [-e example] [-V]
|
||||||
|
@echo.
|
||||||
|
@echo -f Start Solr in foreground; default starts Solr in the background
|
||||||
|
@echo and sends stdout / stderr to solr-PORT-console.log
|
||||||
|
@echo.
|
||||||
|
@echo -c or -cloud Start Solr in SolrCloud mode; if -z not supplied, an embedded ZooKeeper
|
||||||
|
@echo instance is started on Solr port+1000, such as 9983 if Solr is bound to 8983
|
||||||
|
@echo.
|
||||||
|
@echo -h host Specify the hostname for this Solr instance
|
||||||
|
@echo.
|
||||||
|
@echo -p port Specify the port to start the Solr HTTP listener on; default is 8983
|
||||||
|
@echo.
|
||||||
|
@echo -d dir Specify the Solr server directory; defaults to example
|
||||||
|
@echo.
|
||||||
|
@echo -z zkHost ZooKeeper connection string; only used when running in SolrCloud mode using -c
|
||||||
|
@echo To launch an embedded ZooKeeper instance, don't pass this parameter.
|
||||||
|
@echo.
|
||||||
|
@echo -m memory Sets the min (-Xms) and max (-Xmx) heap size for the JVM, such as: -m 4g
|
||||||
|
@echo results in: -Xms4g -Xmx4g; by default, this script sets the heap size to 512m
|
||||||
|
@echo.
|
||||||
|
@echo -e example Name of the example to run; available examples:
|
||||||
|
@echo cloud: SolrCloud example
|
||||||
|
@echo default: Solr default example
|
||||||
|
@echo dih: Data Import Handler
|
||||||
|
@echo schemaless: Schema-less example
|
||||||
|
@echo multicore: Multicore
|
||||||
|
@echo.
|
||||||
|
@echo -noprompt Don't prompt for input; accept all defaults when running examples that accept user input
|
||||||
|
@echo.
|
||||||
|
@echo -V Verbose messages from this script
|
||||||
|
@echo.
|
||||||
|
goto done
|
||||||
|
|
||||||
|
:stop_usage
|
||||||
|
@echo.
|
||||||
|
@echo Usage: solr stop [-k key] [-p port]
|
||||||
|
@echo.
|
||||||
|
@echo -k key Stop key; default is solrrocks
|
||||||
|
@echo.
|
||||||
|
@echo -p port Specify the port to start the Solr HTTP listener on; default is 8983
|
||||||
|
@echo.
|
||||||
|
@echo -V Verbose messages from this script
|
||||||
|
@echo.
|
||||||
|
@echo NOTE: If port is not specified, then all running Solr servers are stopped.
|
||||||
|
@echo.
|
||||||
|
goto done
|
||||||
|
|
||||||
|
:healthcheck_usage
|
||||||
|
@echo.
|
||||||
|
@echo Usage: solr healthcheck [-c collection] [-z zkHost]
|
||||||
|
@echo.
|
||||||
|
@echo -c collection Collection to run healthcheck against.
|
||||||
|
@echo.
|
||||||
|
@echo -z zkHost ZooKeeper connection string; default is localhost:9983
|
||||||
|
@echo.
|
||||||
|
goto done
|
||||||
|
|
||||||
|
REM Allow user to import vars from an include file
|
||||||
|
REM vars set in the include file can be overridden with
|
||||||
|
REM command line args
|
||||||
|
:include_vars
|
||||||
|
IF "%SOLR_INCLUDE%"=="" set SOLR_INCLUDE=solr.in.cmd
|
||||||
|
IF EXIST "%SOLR_INCLUDE%" CALL "%SOLR_INCLUDE%"
|
||||||
|
goto parse_args
|
||||||
|
|
||||||
|
REM Really basic command-line arg parsing
|
||||||
|
:parse_args
|
||||||
|
IF "%SCRIPT_CMD%"=="" set SCRIPT_CMD=start
|
||||||
|
IF [%1]==[] goto process_script_cmd
|
||||||
|
IF "%1"=="-help" goto usage
|
||||||
|
IF "%1"=="-usage" goto usage
|
||||||
|
IF "%1"=="/?" goto usage
|
||||||
|
IF "%1"=="-f" goto set_foreground_mode
|
||||||
|
IF "%1"=="-foreground" goto set_foreground_mode
|
||||||
|
IF "%1"=="-V" goto set_verbose
|
||||||
|
IF "%1"=="-verbose" goto set_verbose
|
||||||
|
IF "%1"=="-c" goto set_cloud_mode
|
||||||
|
IF "%1"=="-cloud" goto set_cloud_mode
|
||||||
|
IF "%1"=="-d" goto set_server_dir
|
||||||
|
IF "%1"=="-dir" goto set_server_dir
|
||||||
|
IF "%1"=="-e" goto set_example
|
||||||
|
IF "%1"=="-example" goto set_example
|
||||||
|
IF "%1"=="-h" goto set_host
|
||||||
|
IF "%1"=="-host" goto set_host
|
||||||
|
IF "%1"=="-m" goto set_memory
|
||||||
|
IF "%1"=="-memory" goto set_memory
|
||||||
|
IF "%1"=="-p" goto set_port
|
||||||
|
IF "%1"=="-port" goto set_port
|
||||||
|
IF "%1"=="-z" goto set_zookeeper
|
||||||
|
IF "%1"=="-zkhost" goto set_zookeeper
|
||||||
|
IF "%1"=="-noprompt" goto set_noprompt
|
||||||
|
IF NOT "%1"=="" goto invalid_cmd_line
|
||||||
|
process_script_cmd
|
||||||
|
|
||||||
|
:set_script_cmd
|
||||||
|
set SCRIPT_CMD=%1
|
||||||
|
SHIFT
|
||||||
|
goto include_vars
|
||||||
|
|
||||||
|
:set_foreground_mode
|
||||||
|
set FG=1
|
||||||
|
SHIFT
|
||||||
|
goto parse_args
|
||||||
|
|
||||||
|
:set_verbose
|
||||||
|
set verbose=1
|
||||||
|
SHIFT
|
||||||
|
goto parse_args
|
||||||
|
|
||||||
|
:set_cloud_mode
|
||||||
|
set SOLR_MODE=solrcloud
|
||||||
|
SHIFT
|
||||||
|
goto parse_args
|
||||||
|
|
||||||
|
:set_server_dir
|
||||||
|
REM See if they are using a short-hand name relative from the Solr tip directory
|
||||||
|
IF EXIST "%SOLR_TIP%\%2" (
|
||||||
|
set "SOLR_SERVER_DIR=%SOLR_TIP%\%2"
|
||||||
|
) ELSE (
|
||||||
|
set "SOLR_SERVER_DIR=%2"
|
||||||
|
)
|
||||||
|
SHIFT
|
||||||
|
SHIFT
|
||||||
|
goto parse_args
|
||||||
|
|
||||||
|
:set_example
|
||||||
|
set EXAMPLE=%2
|
||||||
|
SHIFT
|
||||||
|
SHIFT
|
||||||
|
goto parse_args
|
||||||
|
|
||||||
|
:set_memory
|
||||||
|
set SOLR_HEAP=%2
|
||||||
|
@echo SOLR_HEAP=%SOLR_HEAP%
|
||||||
|
SHIFT
|
||||||
|
SHIFT
|
||||||
|
goto parse_args
|
||||||
|
|
||||||
|
:set_host
|
||||||
|
set SOLR_HOST=%2
|
||||||
|
SHIFT
|
||||||
|
SHIFT
|
||||||
|
goto parse_args
|
||||||
|
|
||||||
|
:set_port
|
||||||
|
set SOLR_PORT=%2
|
||||||
|
SHIFT
|
||||||
|
SHIFT
|
||||||
|
goto parse_args
|
||||||
|
|
||||||
|
:set_zookeeper
|
||||||
|
set "ZK_HOST=%2"
|
||||||
|
SHIFT
|
||||||
|
SHIFT
|
||||||
|
goto parse_args
|
||||||
|
|
||||||
|
:set_noprompt
|
||||||
|
set NO_USER_PROMPT=1
|
||||||
|
SHIFT
|
||||||
|
goto parse_args
|
||||||
|
|
||||||
|
REM Perform the requested command after processing args
|
||||||
|
:process_script_cmd
|
||||||
|
|
||||||
|
IF "%verbose%"=="1" (
|
||||||
|
@echo Using Solr root directory: %SOLR_TIP%
|
||||||
|
@echo Using Java: %JAVA%
|
||||||
|
%JAVA% -version
|
||||||
|
)
|
||||||
|
|
||||||
|
IF NOT "%SOLR_HOST%"=="" (
|
||||||
|
set SOLR_HOST_ARG=-Dhost=%SOLR_HOST%
|
||||||
|
) ELSE (
|
||||||
|
set SOLR_HOST_ARG=
|
||||||
|
)
|
||||||
|
|
||||||
|
REM TODO: Change this to "server" when we resolve SOLR-3619
|
||||||
|
IF "%SOLR_SERVER_DIR%"=="" set SOLR_SERVER_DIR=%DEFAULT_SERVER_DIR%
|
||||||
|
|
||||||
|
IF NOT EXIST "%SOLR_SERVER_DIR%" (
|
||||||
|
set SCRIPT_ERROR='Solr server directory %SOLR_SERVER_DIR% not found!'
|
||||||
|
goto err
|
||||||
|
)
|
||||||
|
|
||||||
|
IF "%EXAMPLE%"=="" (
|
||||||
|
REM SOLR_HOME just becomes serverDir/solr
|
||||||
|
) ELSE IF "%EXAMPLE%"=="default" (
|
||||||
|
set "SOLR_HOME=%SOLR_TIP%\example\solr"
|
||||||
|
) ELSE IF "%EXAMPLE%"=="cloud" (
|
||||||
|
set SOLR_MODE=solrcloud
|
||||||
|
goto cloud_example_start
|
||||||
|
) ELSE IF "%EXAMPLE%"=="dih" (
|
||||||
|
set "SOLR_HOME=%SOLR_TIP%\example\example-DIH\solr"
|
||||||
|
) ELSE IF "%EXAMPLE%"=="schemaless" (
|
||||||
|
set "SOLR_HOME=%SOLR_TIP%\example\example-schemaless\solr"
|
||||||
|
) ELSE IF "%EXAMPLE%"=="multicore" (
|
||||||
|
set "SOLR_HOME=%SOLR_TIP%\example\multicore"
|
||||||
|
) ELSE (
|
||||||
|
@echo.
|
||||||
|
@echo 'Unrecognized example %EXAMPLE%!'
|
||||||
|
@echo.
|
||||||
|
goto start_usage
|
||||||
|
)
|
||||||
|
|
||||||
|
:start_solr
|
||||||
|
IF "%SOLR_HOME%"=="" set "SOLR_HOME=%SOLR_SERVER_DIR%\solr"
|
||||||
|
|
||||||
|
IF "%STOP_KEY%"=="" set STOP_KEY=solrrocks
|
||||||
|
|
||||||
|
REM TODO stop all if no port specified as Windows doesn't seem to have a
|
||||||
|
REM tool that does: ps waux | grep start.jar
|
||||||
|
IF "%SCRIPT_CMD%"=="stop" (
|
||||||
|
IF "%SOLR_PORT%"=="" (
|
||||||
|
set SCRIPT_ERROR=Must specify the port when trying to stop Solr!
|
||||||
|
goto err
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
IF "%SOLR_PORT%"=="" set SOLR_PORT=8983
|
||||||
|
IF "%STOP_PORT%"=="" set STOP_PORT=79%SOLR_PORT:~-2,2%
|
||||||
|
|
||||||
|
IF "%SCRIPT_CMD%"=="start" (
|
||||||
|
REM see if Solr is already running using netstat
|
||||||
|
For /f "tokens=5" %%j in ('netstat -aon ^| find /i "listening" ^| find ":%SOLR_PORT%"') do (
|
||||||
|
set "SCRIPT_ERROR=Process %%j is already listening on port %SOLR_PORT%. If this is Solr, please stop it first before starting (or use restart). If this is not Solr, then please choose a different port using -p PORT"
|
||||||
|
goto err
|
||||||
|
)
|
||||||
|
) ELSE (
|
||||||
|
@echo Stopping Solr running on port %SOLR_PORT%
|
||||||
|
"%JAVA%" -jar "%SOLR_SERVER_DIR%\start.jar" STOP.PORT=%STOP_PORT% STOP.KEY=%STOP_KEY% --stop
|
||||||
|
timeout /T 5
|
||||||
|
)
|
||||||
|
|
||||||
|
REM Kill it if it is still running after the graceful shutdown
|
||||||
|
For /f "tokens=5" %%j in ('netstat -nao ^| find /i "listening" ^| find ":%SOLR_PORT%"') do (taskkill /f /PID %%j)
|
||||||
|
|
||||||
|
REM backup log files (use current timestamp for backup name)
|
||||||
|
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
|
||||||
|
For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set mytime=%%a%%b)
|
||||||
|
set now_ts=%mydate%_%mytime%
|
||||||
|
IF EXIST "%SOLR_SERVER_DIR%\logs\solr.log" (
|
||||||
|
echo Backing up %SOLR_SERVER_DIR%\logs\solr.log
|
||||||
|
move /Y "%SOLR_SERVER_DIR%\logs\solr.log" "%SOLR_SERVER_DIR%\logs\solr_log_!now_ts!"
|
||||||
|
)
|
||||||
|
|
||||||
|
IF EXIST "%SOLR_SERVER_DIR%\logs\solr_gc.log" (
|
||||||
|
echo Backing up %SOLR_SERVER_DIR%\logs\solr_gc.log
|
||||||
|
move /Y "%SOLR_SERVER_DIR%\logs\solr_gc.log" "%SOLR_SERVER_DIR%\logs\solr_gc_log_!now_ts!"
|
||||||
|
)
|
||||||
|
|
||||||
|
IF "%SCRIPT_CMD%"=="stop" goto done
|
||||||
|
|
||||||
|
REM if verbose gc logging enabled, setup the location of the log file
|
||||||
|
IF NOT "%GC_LOG_OPTS%"=="" set GC_LOG_OPTS=%GC_LOG_OPTS% -Xloggc:"%SOLR_SERVER_DIR%/logs/solr_gc.log"
|
||||||
|
|
||||||
|
IF "%SOLR_MODE%"=="solrcloud" (
|
||||||
|
IF "%ZK_CLIENT_TIMEOUT%"=="" set ZK_CLIENT_TIMEOUT=15000
|
||||||
|
|
||||||
|
set CLOUD_MODE_OPTS=-DzkClientTimeout=%ZK_CLIENT_TIMEOUT%
|
||||||
|
|
||||||
|
IF NOT "%ZK_HOST%"=="" (
|
||||||
|
set "CLOUD_MODE_OPTS=%CLOUD_MODE_OPTS% -DzkHost=%ZK_HOST%"
|
||||||
|
) ELSE (
|
||||||
|
IF "%verbose%"=="1" echo 'Configuring SolrCloud to launch an embedded ZooKeeper using -DzkRun'
|
||||||
|
set "CLOUD_MODE_OPTS=%CLOUD_MODE_OPTS% -DzkRun"
|
||||||
|
)
|
||||||
|
) ELSE (
|
||||||
|
set CLOUD_MODE_OPTS=
|
||||||
|
)
|
||||||
|
|
||||||
|
REM These are useful for attaching remove profilers like VisualVM/JConsole
|
||||||
|
IF "%ENABLE_REMOTE_JMX_OPTS%"=="true" (
|
||||||
|
set REMOTE_JMX_OPTS=-Dcom.sun.management.jmxremote ^
|
||||||
|
-Dcom.sun.management.jmxremote.local.only=false ^
|
||||||
|
-Dcom.sun.management.jmxremote.ssl=false ^
|
||||||
|
-Dcom.sun.management.jmxremote.authenticate=false ^
|
||||||
|
-Dcom.sun.management.jmxremote.port=10%SOLR_PORT:~-2,2% ^
|
||||||
|
-Dcom.sun.management.jmxremote.rmi.port=10%SOLR_PORT:~-2,2%
|
||||||
|
|
||||||
|
IF NOT "%SOLR_HOST%"=="" set REMOTE_JMX_OPTS=%REMOTE_JMX_OPTS% -Djava.rmi.server.hostname=%SOLR_HOST%
|
||||||
|
) ELSE (
|
||||||
|
set REMOTE_JMX_OPTS=
|
||||||
|
)
|
||||||
|
|
||||||
|
IF NOT "%SOLR_HEAP%"=="" set SOLR_JAVA_MEM=-Xms%SOLR_HEAP% -Xmx%SOLR_HEAP%
|
||||||
|
IF "%SOLR_JAVA_MEM%"=="" set SOLR_JAVA_MEM=-Xms512m -Xmx512m
|
||||||
|
IF "%SOLR_TIMEZONE%"=="" set SOLR_TIMEZONE=UTC
|
||||||
|
|
||||||
|
IF "%verbose%"=="1" (
|
||||||
|
@echo Starting Solr using the following settings:
|
||||||
|
@echo JAVA = %JAVA%
|
||||||
|
@echo SOLR_SERVER_DIR = %SOLR_SERVER_DIR%
|
||||||
|
@echo SOLR_HOME = %SOLR_HOME%
|
||||||
|
@echo SOLR_HOST = %SOLR_HOST%
|
||||||
|
@echo SOLR_PORT = %SOLR_PORT%
|
||||||
|
@echo GC_TUNE = %GC_TUNE%
|
||||||
|
@echo GC_LOG_OPTS = %GC_LOG_OPTS%
|
||||||
|
@echo SOLR_JAVA_MEM = %SOLR_JAVA_MEM%
|
||||||
|
@echo REMOTE_JMX_OPTS = %REMOTE_JMX_OPTS%
|
||||||
|
@echo CLOUD_MODE_OPTS = %CLOUD_MODE_OPTS%
|
||||||
|
@echo SOLR_TIMEZONE = %SOLR_TIMEZONE%
|
||||||
|
)
|
||||||
|
|
||||||
|
set START_OPTS=-Duser.timezone=%SOLR_TIMEZONE% -Djava.net.preferIPv4Stack=true -Dsolr.autoSoftCommit.maxTime=3000
|
||||||
|
set START_OPTS=%START_OPTS% %GC_TUNE% %GC_LOG_OPTS%
|
||||||
|
IF NOT "%CLOUD_MODE_OPTS%"=="" set START_OPTS=%START_OPTS% %CLOUD_MODE_OPTS%
|
||||||
|
IF NOT "%REMOTE_JMX_OPTS%"=="" set START_OPTS=%START_OPTS% %REMOTE_JMX_OPTS%
|
||||||
|
IF NOT "%SOLR_ADDL_ARGS%"=="" set START_OPTS=%START_OPTS% %SOLR_ADDL_ARGS%
|
||||||
|
IF NOT "%SOLR_HOST_ARG%"=="" set START_OPTS=%START_OPTS% %SOLR_HOST_ARG%
|
||||||
|
|
||||||
|
cd %SOLR_SERVER_DIR%
|
||||||
|
@echo.
|
||||||
|
@echo Starting Solr on port %SOLR_PORT% from %SOLR_SERVER_DIR%
|
||||||
|
@echo.
|
||||||
|
IF "%FG%"=="1" (
|
||||||
|
REM run solr in the foreground
|
||||||
|
"%JAVA%" -server -Xss256k %SOLR_JAVA_MEM% %START_OPTS% -DSTOP.PORT=%STOP_PORT% -DSTOP.KEY=%STOP_KEY% ^
|
||||||
|
-Djetty.port=%SOLR_PORT% -Dsolr.solr.home="%SOLR_HOME%" -jar start.jar
|
||||||
|
) ELSE (
|
||||||
|
START %JAVA% -server -Xss256k %SOLR_JAVA_MEM% %START_OPTS% -DSTOP.PORT=%STOP_PORT% -DSTOP.KEY=%STOP_KEY% ^
|
||||||
|
-Djetty.port=%SOLR_PORT% -Dsolr.solr.home="%SOLR_HOME%" -jar start.jar > "%SOLR_TIP%\bin\solr-%SOLR_PORT%-console.log"
|
||||||
|
)
|
||||||
|
|
||||||
|
goto done
|
||||||
|
|
||||||
|
:cloud_example_start
|
||||||
|
REM Launch interactive session to guide the user through the SolrCloud example
|
||||||
|
|
||||||
|
CLS
|
||||||
|
@echo.
|
||||||
|
@echo Welcome to the SolrCloud example
|
||||||
|
@echo.
|
||||||
|
@echo.
|
||||||
|
|
||||||
|
IF "%NO_USER_PROMPT%"=="1" (
|
||||||
|
set CLOUD_NUM_NODES=2
|
||||||
|
@echo Starting up %CLOUD_NUM_NODES% Solr nodes for your example SolrCloud cluster.
|
||||||
|
goto start_cloud_nodes
|
||||||
|
) ELSE (
|
||||||
|
@echo This interactive session will help you launch a SolrCloud cluster on your local workstation.
|
||||||
|
@echo.
|
||||||
|
SET /P "USER_INPUT=To begin, how many Solr nodes would you like to run in your local cluster (specify 1-4 nodes) [2]: "
|
||||||
|
goto while_num_nodes_not_valid
|
||||||
|
)
|
||||||
|
|
||||||
|
:while_num_nodes_not_valid
|
||||||
|
IF "%USER_INPUT%"=="" set USER_INPUT=2
|
||||||
|
SET /A INPUT_AS_NUM=!USER_INPUT!*1
|
||||||
|
IF %INPUT_AS_NUM% GEQ 1 IF %INPUT_AS_NUM% LEQ 4 set CLOUD_NUM_NODES=%INPUT_AS_NUM%
|
||||||
|
IF NOT DEFINED CLOUD_NUM_NODES (
|
||||||
|
SET USER_INPUT=
|
||||||
|
SET /P "USER_INPUT=Please enter a number between 1 and 4 [2]: "
|
||||||
|
goto while_num_nodes_not_valid
|
||||||
|
)
|
||||||
|
@echo Ok, let's start up %CLOUD_NUM_NODES% Solr nodes for your example SolrCloud cluster.
|
||||||
|
|
||||||
|
:start_cloud_nodes
|
||||||
|
for /l %%x in (1, 1, !CLOUD_NUM_NODES!) do (
|
||||||
|
set USER_INPUT=
|
||||||
|
set /A idx=%%x-1
|
||||||
|
set DEF_PORT=8983
|
||||||
|
IF %%x EQU 2 (
|
||||||
|
set DEF_PORT=7574
|
||||||
|
) ELSE (
|
||||||
|
IF %%x EQU 3 (
|
||||||
|
set DEF_PORT=8984
|
||||||
|
) ELSE (
|
||||||
|
IF %%x EQU 4 (
|
||||||
|
set DEF_PORT=7575
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
IF "%NO_USER_PROMPT%"=="1" (
|
||||||
|
set NODE_PORT=!DEF_PORT!
|
||||||
|
) ELSE (
|
||||||
|
set /P "USER_INPUT=Please enter the port for node%%x [!DEF_PORT!]: "
|
||||||
|
IF "!USER_INPUT!"=="" set USER_INPUT=!DEF_PORT!
|
||||||
|
set NODE_PORT=!USER_INPUT!
|
||||||
|
echo node%%x port: !NODE_PORT!
|
||||||
|
@echo.
|
||||||
|
)
|
||||||
|
|
||||||
|
IF NOT EXIST "%SOLR_TIP%\node%%x" (
|
||||||
|
@echo Cloning %DEFAULT_SERVER_DIR% into %SOLR_TIP%\node%%x
|
||||||
|
xcopy /Q /E /I "%DEFAULT_SERVER_DIR%" "%SOLR_TIP%\node%%x"
|
||||||
|
)
|
||||||
|
|
||||||
|
IF %%x EQU 1 (
|
||||||
|
set EXAMPLE=
|
||||||
|
START %SDIR%\solr -f -c -p !NODE_PORT! -d node1
|
||||||
|
set NODE1_PORT=!NODE_PORT!
|
||||||
|
) ELSE (
|
||||||
|
set /A ZK_PORT=!NODE1_PORT!+1000
|
||||||
|
set "ZK_HOST=localhost:!ZK_PORT!"
|
||||||
|
START %SDIR%\solr -f -c -p !NODE_PORT! -d node%%x -z !ZK_HOST!
|
||||||
|
)
|
||||||
|
|
||||||
|
timeout /T 10
|
||||||
|
)
|
||||||
|
|
||||||
|
set USER_INPUT=
|
||||||
|
echo.
|
||||||
|
echo Now let's create a new collection for indexing documents in your %CLOUD_NUM_NODES%-node cluster.
|
||||||
|
IF "%NO_USER_PROMPT%"=="1" (
|
||||||
|
set CLOUD_COLLECTION=gettingstarted
|
||||||
|
set CLOUD_NUM_SHARDS=2
|
||||||
|
set CLOUD_REPFACT=2
|
||||||
|
goto create_collection
|
||||||
|
) ELSE (
|
||||||
|
goto get_create_collection_params
|
||||||
|
)
|
||||||
|
|
||||||
|
:get_create_collection_params
|
||||||
|
set /P "USER_INPUT=Please provide a name for your new collection: [gettingstarted] "
|
||||||
|
IF "!USER_INPUT!"=="" set USER_INPUT=gettingstarted
|
||||||
|
set CLOUD_COLLECTION=!USER_INPUT!
|
||||||
|
echo !CLOUD_COLLECTION!
|
||||||
|
set USER_INPUT=
|
||||||
|
echo.
|
||||||
|
set /P "USER_INPUT=How many shards would you like to split !CLOUD_COLLECTION! into? [2] "
|
||||||
|
IF "!USER_INPUT!"=="" set USER_INPUT=2
|
||||||
|
set CLOUD_NUM_SHARDS=!USER_INPUT!
|
||||||
|
echo !CLOUD_NUM_SHARDS!
|
||||||
|
set USER_INPUT=
|
||||||
|
echo.
|
||||||
|
set /P "USER_INPUT=How many replicas per shard would you like to create? [2] "
|
||||||
|
IF "!USER_INPUT!"=="" set USER_INPUT=2
|
||||||
|
set CLOUD_REPFACT=!USER_INPUT!
|
||||||
|
echo !CLOUD_REPFACT!
|
||||||
|
goto create_collection
|
||||||
|
|
||||||
|
:create_collection
|
||||||
|
set /A MAX_SHARDS_PER_NODE=((!CLOUD_NUM_SHARDS!*!CLOUD_REPFACT!)/!CLOUD_NUM_NODES!)+1
|
||||||
|
|
||||||
|
IF EXIST "%SOLR_TIP%\server\solr\default_conf" set "CLOUD_CONFIG_DIR=%SOLR_TIP%\server\solr\default_conf"
|
||||||
|
IF NOT EXIST "%SOLR_TIP%\server\solr\default_conf" set "CLOUD_CONFIG_DIR=%SOLR_TIP%\example\example-schemaless\solr\collection1\conf"
|
||||||
|
set CLOUD_CONFIG=schemaless
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo Deploying default Solr configuration files to embedded ZooKeeper
|
||||||
|
echo.
|
||||||
|
"%JAVA%" -Dlog4j.configuration="file:%DEFAULT_SERVER_DIR%\scripts\cloud-scripts\log4j.properties" ^
|
||||||
|
-classpath "%DEFAULT_SERVER_DIR%\solr-webapp\webapp\WEB-INF\lib\*;%DEFAULT_SERVER_DIR%\lib\ext\*" ^
|
||||||
|
org.apache.solr.cloud.ZkCLI -zkhost %zk_host% -cmd upconfig -confdir "%CLOUD_CONFIG_DIR%" -confname %CLOUD_CONFIG%
|
||||||
|
|
||||||
|
set COLLECTIONS_API=http://localhost:!NODE1_PORT!/solr/admin/collections
|
||||||
|
|
||||||
|
set "CLOUD_CREATE_COLLECTION_CMD=%COLLECTIONS_API%?action=CREATE&name=%CLOUD_COLLECTION%&replicationFactor=%CLOUD_REPFACT%&numShards=%CLOUD_NUM_SHARDS%&collection.configName=%CLOUD_CONFIG%&maxShardsPerNode=%MAX_SHARDS_PER_NODE%&wt=json&indent=2"
|
||||||
|
echo Creating new collection %CLOUD_COLLECTION% with %CLOUD_NUM_SHARDS% shards and replication factor %CLOUD_REPFACT% using Collections API command:
|
||||||
|
echo.
|
||||||
|
@echo "%CLOUD_CREATE_COLLECTION_CMD%"
|
||||||
|
echo.
|
||||||
|
echo For more information about the Collections API, please see: https://cwiki.apache.org/confluence/display/solr/Collections+API
|
||||||
|
echo.
|
||||||
|
|
||||||
|
"%JAVA%" -Dlog4j.configuration="file:%DEFAULT_SERVER_DIR%\scripts\cloud-scripts\log4j.properties" ^
|
||||||
|
-classpath "%DEFAULT_SERVER_DIR%\solr-webapp\webapp\WEB-INF\lib\*;%DEFAULT_SERVER_DIR%\lib\ext\*" ^
|
||||||
|
org.apache.solr.util.SolrCLI api -get "%CLOUD_CREATE_COLLECTION_CMD%"
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo SolrCloud example is running, please visit http://localhost:%NODE1_PORT%/solr"
|
||||||
|
echo.
|
||||||
|
|
||||||
|
REM End of interactive cloud example
|
||||||
|
goto done
|
||||||
|
|
||||||
|
|
||||||
|
:get_info
|
||||||
|
REM Find all Java processes, correlate with those listening on a port
|
||||||
|
REM and then try to contact via that port using the status tool
|
||||||
|
for /f "tokens=2" %%a in ('tasklist ^| find "java.exe"') do (
|
||||||
|
for /f "tokens=2,5" %%j in ('netstat -aon ^| find /i "listening"') do (
|
||||||
|
if "%%k" EQU "%%a" (
|
||||||
|
for /f "delims=: tokens=1,2" %%x IN ("%%j") do (
|
||||||
|
if "0.0.0.0" EQU "%%x" (
|
||||||
|
@echo.
|
||||||
|
set has_info=1
|
||||||
|
echo Found Solr process %%k running on port %%y
|
||||||
|
"%JAVA%" -Dlog4j.configuration="file:%DEFAULT_SERVER_DIR%\scripts\cloud-scripts\log4j.properties" ^
|
||||||
|
-classpath "%DEFAULT_SERVER_DIR%\solr-webapp\webapp\WEB-INF\lib\*;%DEFAULT_SERVER_DIR%\lib\ext\*" ^
|
||||||
|
org.apache.solr.util.SolrCLI status -solr http://localhost:%%y/solr
|
||||||
|
|
||||||
|
@echo.
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if NOT "!has_info!"=="1" echo No running Solr nodes found.
|
||||||
|
set has_info=
|
||||||
|
goto done
|
||||||
|
|
||||||
|
:parse_healthcheck_args
|
||||||
|
IF [%1]==[] goto run_healthcheck
|
||||||
|
IF "%1"=="-c" goto set_healthcheck_collection
|
||||||
|
IF "%1"=="-collection" goto set_healthcheck_collection
|
||||||
|
IF "%1"=="-z" goto set_healthcheck_zk
|
||||||
|
IF "%1"=="-zkhost" goto set_healthcheck_zk
|
||||||
|
IF "%1"=="-help" goto usage
|
||||||
|
IF "%1"=="-usage" goto usage
|
||||||
|
IF "%1"=="/?" goto usage
|
||||||
|
goto run_healthcheck
|
||||||
|
|
||||||
|
:set_healthcheck_collection
|
||||||
|
set HEALTHCHECK_COLLECTION=%2
|
||||||
|
SHIFT
|
||||||
|
SHIFT
|
||||||
|
goto parse_healthcheck_args
|
||||||
|
|
||||||
|
:set_healthcheck_zk
|
||||||
|
set HEALTHCHECK_ZK_HOST=%2
|
||||||
|
SHIFT
|
||||||
|
SHIFT
|
||||||
|
goto parse_healthcheck_args
|
||||||
|
|
||||||
|
:run_healthcheck
|
||||||
|
IF NOT DEFINED HEALTHCHECK_COLLECTION goto healthcheck_usage
|
||||||
|
IF NOT DEFINED HEALTHCHECK_ZK_HOST set "HEALTHCHECK_ZK_HOST=localhost:9983"
|
||||||
|
"%JAVA%" -Dlog4j.configuration="file:%DEFAULT_SERVER_DIR%\scripts\cloud-scripts\log4j.properties" ^
|
||||||
|
-classpath "%DEFAULT_SERVER_DIR%\solr-webapp\webapp\WEB-INF\lib\*;%DEFAULT_SERVER_DIR%\lib\ext\*" ^
|
||||||
|
org.apache.solr.util.SolrCLI healthcheck -collection !HEALTHCHECK_COLLECTION! -zkHost !HEALTHCHECK_ZK_HOST!
|
||||||
|
goto done
|
||||||
|
|
||||||
|
:invalid_cmd_line
|
||||||
|
@echo.
|
||||||
|
@echo Invalid command-line option: %1
|
||||||
|
@echo.
|
||||||
|
IF "%FIRST_ARG%"=="start" (
|
||||||
|
goto start_usage
|
||||||
|
) ELSE IF "%FIRST_ARG:~0,1%" == "-" (
|
||||||
|
goto start_usage
|
||||||
|
) ELSE IF "%FIRST_ARG%"=="restart" (
|
||||||
|
goto start_usage
|
||||||
|
) ELSE IF "%FIRST_ARG%"=="stop" (
|
||||||
|
goto stop_usage
|
||||||
|
) ELSE IF "%FIRST_ARG%"=="healthcheck" (
|
||||||
|
goto healthcheck_usage
|
||||||
|
) ELSE (
|
||||||
|
goto script_usage
|
||||||
|
)
|
||||||
|
|
||||||
|
:need_java_home
|
||||||
|
@echo Please set the JAVA_HOME environment variable to the path where you installed Java 1.7+
|
||||||
|
goto done
|
||||||
|
|
||||||
|
:need_java_vers
|
||||||
|
@echo Java 1.7 or later is required to run Solr.
|
||||||
|
goto done
|
||||||
|
|
||||||
|
:err
|
||||||
|
@echo.
|
||||||
|
@echo %SCRIPT_ERROR%
|
||||||
|
@echo.
|
||||||
|
exit /b 1
|
||||||
|
|
||||||
|
:done
|
||||||
|
|
||||||
|
ENDLOCAL
|
|
@ -0,0 +1,67 @@
|
||||||
|
@REM
|
||||||
|
@REM Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
@REM contributor license agreements. See the NOTICE file distributed with
|
||||||
|
@REM this work for additional information regarding copyright ownership.
|
||||||
|
@REM The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
@REM (the "License"); you may not use this file except in compliance with
|
||||||
|
@REM the License. You may obtain a copy of the License at
|
||||||
|
@REM
|
||||||
|
@REM http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
@REM
|
||||||
|
@REM Unless required by applicable law or agreed to in writing, software
|
||||||
|
@REM distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
@REM See the License for the specific language governing permissions and
|
||||||
|
@REM limitations under the License.
|
||||||
|
|
||||||
|
@echo off
|
||||||
|
|
||||||
|
REM By default the script will use JAVA_HOME to determine which java
|
||||||
|
REM to use, but you can set a specific path for Solr to use without
|
||||||
|
REM affecting other Java applications on your server/workstation.
|
||||||
|
REM set SOLR_JAVA_HOME=
|
||||||
|
|
||||||
|
REM Increase Java Min/Max Heap as needed to support your indexing / query needs
|
||||||
|
set SOLR_JAVA_MEM=-Xms512m -Xmx512m -XX:MaxPermSize=256m -XX:PermSize=256m
|
||||||
|
|
||||||
|
REM Enable verbose GC logging
|
||||||
|
set GC_LOG_OPTS=-verbose:gc -XX:+PrintHeapAtGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution
|
||||||
|
|
||||||
|
REM These GC settings have shown to work well for a number of common Solr workloads
|
||||||
|
set GC_TUNE=-XX:-UseSuperWord ^
|
||||||
|
-XX:NewRatio=3 ^
|
||||||
|
-XX:SurvivorRatio=4 ^
|
||||||
|
-XX:TargetSurvivorRatio=90 ^
|
||||||
|
-XX:MaxTenuringThreshold=8 ^
|
||||||
|
-XX:+UseConcMarkSweepGC ^
|
||||||
|
-XX:+CMSScavengeBeforeRemark ^
|
||||||
|
-XX:PretenureSizeThreshold=64m ^
|
||||||
|
-XX:CMSFullGCsBeforeCompaction=1 ^
|
||||||
|
-XX:+UseCMSInitiatingOccupancyOnly ^
|
||||||
|
-XX:CMSInitiatingOccupancyFraction=70 ^
|
||||||
|
-XX:CMSTriggerPermRatio=80 ^
|
||||||
|
-XX:CMSMaxAbortablePrecleanTime=6000 ^
|
||||||
|
-XX:+CMSParallelRemarkEnabled ^
|
||||||
|
-XX:+ParallelRefProcEnabled ^
|
||||||
|
-XX:+AggressiveOpts
|
||||||
|
|
||||||
|
REM Set the ZooKeeper connection string if using an external ZooKeeper ensemble
|
||||||
|
REM e.g. host1:2181,host2:2181/chroot
|
||||||
|
REM Leave empty if not using SolrCloud
|
||||||
|
REM set ZK_HOST=
|
||||||
|
|
||||||
|
REM Set the ZooKeeper client timeout (for SolrCloud mode)
|
||||||
|
REM set ZK_CLIENT_TIMEOUT=15000
|
||||||
|
|
||||||
|
REM By default the start script uses "localhost"; override the hostname here
|
||||||
|
REM for production SolrCloud environments to control the hostname exposed to cluster state
|
||||||
|
REM set SOLR_HOST=192.168.1.1
|
||||||
|
|
||||||
|
REM By default the start script uses UTC; override the timezone if needed
|
||||||
|
REM set SOLR_TIMEZONE=UTC
|
||||||
|
|
||||||
|
REM By default the start script enables some RMI related parameters to allow attaching
|
||||||
|
REM JMX savvy tools like VisualVM remotely, set to "false" to disable that behavior
|
||||||
|
REM (recommended in production environments)
|
||||||
|
set ENABLE_REMOTE_JMX_OPTS=true
|
||||||
|
|
|
@ -0,0 +1,70 @@
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
# By default the script will use JAVA_HOME to determine which java
|
||||||
|
# to use, but you can set a specific path for Solr to use without
|
||||||
|
# affecting other Java applications on your server/workstation.
|
||||||
|
#SOLR_JAVA_HOME=""
|
||||||
|
|
||||||
|
# Increase Java Min/Max Heap as needed to support your indexing / query needs
|
||||||
|
SOLR_JAVA_MEM="-Xms512m -Xmx512m -XX:MaxPermSize=256m -XX:PermSize=256m"
|
||||||
|
|
||||||
|
# Enable verbose GC logging
|
||||||
|
GC_LOG_OPTS="-verbose:gc -XX:+PrintHeapAtGC -XX:+PrintGCDetails \
|
||||||
|
-XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution"
|
||||||
|
|
||||||
|
# These GC settings have shown to work well for a number of common Solr workloads
|
||||||
|
GC_TUNE="-XX:-UseSuperWord \
|
||||||
|
-XX:NewRatio=3 \
|
||||||
|
-XX:SurvivorRatio=4 \
|
||||||
|
-XX:TargetSurvivorRatio=90 \
|
||||||
|
-XX:MaxTenuringThreshold=8 \
|
||||||
|
-XX:+UseConcMarkSweepGC \
|
||||||
|
-XX:+CMSScavengeBeforeRemark \
|
||||||
|
-XX:PretenureSizeThreshold=64m \
|
||||||
|
-XX:CMSFullGCsBeforeCompaction=1 \
|
||||||
|
-XX:+UseCMSInitiatingOccupancyOnly \
|
||||||
|
-XX:CMSInitiatingOccupancyFraction=70 \
|
||||||
|
-XX:CMSTriggerPermRatio=80 \
|
||||||
|
-XX:CMSMaxAbortablePrecleanTime=6000 \
|
||||||
|
-XX:+CMSParallelRemarkEnabled \
|
||||||
|
-XX:+ParallelRefProcEnabled \
|
||||||
|
-XX:+AggressiveOpts"
|
||||||
|
|
||||||
|
thisOs=`uname -s`
|
||||||
|
if [ "$thisOs" != "Darwin" ]; then
|
||||||
|
# UseLargePages flag causes JVM crash on Mac OSX
|
||||||
|
GC_TUNE="$GC_TUNE -XX:+UseLargePages"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set the ZooKeeper connection string if using an external ZooKeeper ensemble
|
||||||
|
# e.g. host1:2181,host2:2181/chroot
|
||||||
|
# Leave empty if not using SolrCloud
|
||||||
|
#ZK_HOST=""
|
||||||
|
|
||||||
|
# Set the ZooKeeper client timeout (for SolrCloud mode)
|
||||||
|
#ZK_CLIENT_TIMEOUT="15000"
|
||||||
|
|
||||||
|
# By default the start script uses "localhost"; override the hostname here
|
||||||
|
# for production SolrCloud environments to control the hostname exposed to cluster state
|
||||||
|
#SOLR_HOST="192.168.1.1"
|
||||||
|
|
||||||
|
# By default the start script uses UTC; override the timezone if needed
|
||||||
|
#SOLR_TIMEZONE="UTC"
|
||||||
|
|
||||||
|
# By default the start script enables some RMI related parameters to allow attaching
|
||||||
|
# JMX savvy tools like VisualVM remotely, set to "false" to disable that behavior
|
||||||
|
# (recommended in production environments)
|
||||||
|
ENABLE_REMOTE_JMX_OPTS="true"
|
|
@ -467,7 +467,7 @@
|
||||||
<tarfileset dir="."
|
<tarfileset dir="."
|
||||||
filemode="755"
|
filemode="755"
|
||||||
prefix="${fullnamever}"
|
prefix="${fullnamever}"
|
||||||
includes="example/**/*.sh example/**/bin/" />
|
includes="bin/* example/**/*.sh example/**/bin/" />
|
||||||
<tarfileset dir="."
|
<tarfileset dir="."
|
||||||
prefix="${fullnamever}"
|
prefix="${fullnamever}"
|
||||||
includes="dist/*.jar
|
includes="dist/*.jar
|
||||||
|
|
Loading…
Reference in New Issue