You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ro...@apache.org on 2014/12/05 16:24:13 UTC
svn commit: r1643326 [3/4] - in /lucene/dev/branches/lucene2878: ./ lucene/
lucene/codecs/ lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/
lucene/core/ lucene/core/src/java/org/apache/lucene/codecs/compressing/
lucene/core/src/java/org/apac...
Modified: lucene/dev/branches/lucene2878/solr/bin/solr
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/bin/solr?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/bin/solr (original)
+++ lucene/dev/branches/lucene2878/solr/bin/solr Fri Dec 5 15:24:11 2014
@@ -71,14 +71,7 @@ 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
-fi
+DEFAULT_SERVER_DIR=$SOLR_TIP/server
# If an include wasn't specified in the environment, then search for one...
if [ "x$SOLR_INCLUDE" == "x" ]; then
@@ -150,6 +143,9 @@ function print_usage() {
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 " The specified port (SOLR_PORT) will also be used to determine the stop port"
+ echo " STOP_PORT=(\$SOLR_PORT-1000) and JMX RMI listen port RMI_PORT=(1\$SOLR_PORT). "
+ echo " For instance, if you set -p 8985, then the STOP_PORT=7985 and RMI_PORT=18985"
echo ""
echo " -d <dir> Specify the Solr server directory; defaults to server"
echo ""
@@ -173,9 +169,9 @@ function print_usage() {
echo " schemaless: Schema-less example"
echo ""
echo " -a Additional parameters to pass to the JVM when starting Solr, such as to setup"
- echo " Java debug options. For example, to enable a Java debugger to attach to the Solr JVM"
- echo " you could pass: -a \"-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=18983\""
- echo " In most cases, you should wrap the additional parameters in double quotes."
+ echo " Java debug options. For example, to enable a Java debugger to attach to the Solr JVM"
+ echo " you could pass: -a \"-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=18983\""
+ echo " In most cases, you should wrap the additional parameters in double quotes."
echo ""
echo " -noprompt Don't prompt for input; accept all defaults when running examples that accept user input"
echo ""
@@ -187,13 +183,11 @@ function print_usage() {
echo ""
echo " -k <key> Stop key; default is solrrocks"
echo ""
- echo " -p <port> Specify the port the Solr HTTP listener is bound to; default is 8983"
+ echo " -p <port> Specify the port the Solr HTTP listener is bound to"
echo ""
echo " -all Find and stop all running Solr servers on this host"
echo ""
- echo " -V Verbose messages from this script"
- echo ""
- echo "NOTE: If port is not specified, then all running Solr servers are stopped."
+ echo " NOTE: To see if any Solr servers are running, do: solr -i"
echo ""
elif [ "$CMD" == "healthcheck" ]; then
echo ""
@@ -309,7 +303,7 @@ function get_info() {
port=`jetty_port "$ID"`
if [ "$port" != "" ]; then
echo ""
- echo "Found Solr process $ID running on port $port"
+ echo "Solr process $ID running on port $port"
run_tool status -solr http://localhost:$port/solr
echo ""
fi
@@ -324,7 +318,7 @@ function get_info() {
port=`jetty_port "$ID"`
if [ "$port" != "" ]; then
echo ""
- echo "Found Solr process $ID running on port $port"
+ echo "Solr process $ID running on port $port"
run_tool status -solr http://localhost:$port/solr
echo ""
fi
@@ -487,7 +481,7 @@ if [[ "$SCRIPT_CMD" == "create_core" ||
CREATE_CONFIGSET="$2"
shift 2
;;
- -shards)
+ -s|-shards)
if [[ "$2" == "" || "${2:0:1}" == "-" ]]; then
print_usage "$SCRIPT_CMD" "Shard count is required when using the $1 option!"
exit 1
@@ -495,7 +489,7 @@ if [[ "$SCRIPT_CMD" == "create_core" ||
CREATE_NUM_SHARDS="$2"
shift 2
;;
- -replicationFactor)
+ -rf|-replicationFactor)
if [[ "$2" == "" || "${2:0:1}" == "-" ]]; then
print_usage "$SCRIPT_CMD" "Replication factor is required when using the $1 option!"
exit 1
@@ -592,12 +586,18 @@ if [ $# -gt 0 ]; then
exit 1
fi
- # see if the arg value is relative to the tip vs full path
- if [[ $2 != /* ]] && [[ -d "$SOLR_TIP/$2" ]]; then
- SOLR_SERVER_DIR="$SOLR_TIP/$2"
+ if [[ "$2" == "." || "$2" == "./" || "$2" == ".." || "$2" == "../" ]]; then
+ SOLR_SERVER_DIR=`pwd`/$2
else
- SOLR_SERVER_DIR="$2"
+ # see if the arg value is relative to the tip vs full path
+ if [[ $2 != /* ]] && [[ -d "$SOLR_TIP/$2" ]]; then
+ SOLR_SERVER_DIR="$SOLR_TIP/$2"
+ else
+ SOLR_SERVER_DIR="$2"
+ fi
fi
+ # resolve it to an absolute path
+ SOLR_SERVER_DIR=`cd "$SOLR_SERVER_DIR"; pwd`
shift 2
;;
-s|-solr.home)
@@ -810,7 +810,7 @@ if [ "$EXAMPLE" != "" ]; then
shift
;;
techproducts)
- SOLR_HOME="$SOLR_TIP/server/solr"
+ SOLR_HOME="$SOLR_SERVER_DIR/solr"
EXAMPLE_CONFIGSET=sample_techproducts_configs
shift
;;
@@ -819,7 +819,7 @@ if [ "$EXAMPLE" != "" ]; then
shift
;;
schemaless)
- SOLR_HOME="$SOLR_TIP/server/solr"
+ SOLR_HOME="$SOLR_SERVER_DIR/solr"
EXAMPLE_CONFIGSET=data_driven_schema_configs
shift
;;
@@ -830,6 +830,11 @@ if [ "$EXAMPLE" != "" ]; then
esac
fi
+if [[ "$FG" == "true" && "$EXAMPLE" != "" ]]; then
+ FG="false"
+ echo -e "\nWARNING: Foreground mode (-f) not supported when running examples.\n"
+fi
+
if [ "$STOP_KEY" == "" ]; then
STOP_KEY="solrrocks"
fi
@@ -876,9 +881,8 @@ if [[ "$SCRIPT_CMD" == "start" ]]; then
fi
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
+ echo -e "\nPort $SOLR_PORT is already being used by another process (pid: $SOLR_PID)\n"
+ exit 1
fi
else
# either stop or restart
@@ -891,7 +895,10 @@ else
if [ "$SOLR_PID" != "" ]; then
stop_solr "$SOLR_SERVER_DIR" "$SOLR_PORT" "$STOP_KEY" "$SOLR_PID"
else
- echo -e "No process found for Solr node running on port $SOLR_PORT"
+ if [ "$SCRIPT_CMD" == "stop" ]; then
+ echo -e "No process found for Solr node running on port $SOLR_PORT"
+ exit 1
+ fi
fi
fi
@@ -964,12 +971,17 @@ fi
# These are useful for attaching remove profilers like VisualVM/JConsole
if [ "$ENABLE_REMOTE_JMX_OPTS" == "true" ]; then
+
+ if [ "$RMI_PORT" == "" ]; then
+ RMI_PORT=1$SOLR_PORT
+ fi
+
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}"
+-Dcom.sun.management.jmxremote.port=$RMI_PORT \
+-Dcom.sun.management.jmxremote.rmi.port=$RMI_PORT"
# if the host is set, then set that as the rmi server hostname
if [ "$SOLR_HOST" != "" ]; then
@@ -1013,24 +1025,34 @@ function launch_solr() {
if $verbose ; then
echo -e "\nStarting Solr using the following settings:"
+ echo -e " JAVA = $JAVA"
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 " STOP_PORT = $STOP_PORT"
+ echo -e " SOLR_JAVA_MEM = $SOLR_JAVA_MEM"
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_MODE" == "solrcloud" ]; then
+ echo -e " CLOUD_MODE_OPTS = $CLOUD_MODE_OPTS"
+ fi
+
if [ "$SOLR_OPTS" != "" ]; then
echo -e " SOLR_OPTS = $SOLR_OPTS"
fi
+
if [ "$SOLR_ADDL_ARGS" != "" ]; then
echo -e " SOLR_ADDL_ARGS = $SOLR_ADDL_ARGS"
fi
+
+ if [ "$ENABLE_REMOTE_JMX_OPTS" == "true" ]; then
+ echo -e " RMI_PORT = $RMI_PORT"
+ echo -e " REMOTE_JMX_OPTS = $REMOTE_JMX_OPTS"
+ fi
+ echo -e "\n"
fi
# need to launch solr from the server dir
Modified: lucene/dev/branches/lucene2878/solr/bin/solr.cmd
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/bin/solr.cmd?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/bin/solr.cmd (original)
+++ lucene/dev/branches/lucene2878/solr/bin/solr.cmd Fri Dec 5 15:24:11 2014
@@ -38,6 +38,15 @@ IF EXIST "%SOLR_INCLUDE%" CALL "%SOLR_IN
REM Verify Java is available
IF DEFINED SOLR_JAVA_HOME set "JAVA_HOME=%SOLR_JAVA_HOME%"
+REM Try to detect JAVA_HOME from the registry
+IF NOT DEFINED JAVA_HOME (
+ FOR /F "skip=2 tokens=2*" %%A IN ('REG QUERY "HKLM\Software\JavaSoft\Java Runtime Environment" /v CurrentVersion') DO set CurVer=%%B
+ FOR /F "skip=2 tokens=2*" %%A IN ('REG QUERY "HKLM\Software\JavaSoft\Java Runtime Environment\!CurVer!" /v JavaHome') DO (
+ set JAVA_HOME=%%B
+ @echo Detected JAVA_HOME=%%B
+ )
+)
+
IF NOT DEFINED JAVA_HOME goto need_java_home
set JAVA_HOME=%JAVA_HOME:"=%
"%JAVA_HOME%"\bin\java -version:1.8 -version > nul 2>&1
@@ -172,8 +181,6 @@ goto done
@echo.
@echo -all Find and stop all running Solr servers on this host
@echo.
-@echo -V Verbose messages from this script
-@echo.
goto done
:healthcheck_usage
@@ -505,7 +512,7 @@ IF "%STOP_KEY%"=="" set STOP_KEY=solrroc
IF "%SCRIPT_CMD%"=="stop" (
IF "%SOLR_PORT%"=="" (
IF "%STOP_ALL%"=="1" (
- for /f "usebackq" %%i in (`dir /b %SOLR_TIP\bin% ^| findstr /i "^solr-.*\.port$"`) do (
+ for /f "usebackq" %%i in (`dir /b %SOLR_TIP%\bin ^| findstr /i "^solr-.*\.port$"`) do (
set SOME_SOLR_PORT=
For /F "Delims=" %%J In (%SOLR_TIP%\bin\%%i) do set SOME_SOLR_PORT=%%~J
if NOT "!SOME_SOLR_PORT!"=="" (
@@ -587,12 +594,13 @@ IF "%SOLR_MODE%"=="solrcloud" (
REM These are useful for attaching remove profilers like VisualVM/JConsole
IF "%ENABLE_REMOTE_JMX_OPTS%"=="true" (
+ IF "!RMI_PORT!"=="" set RMI_PORT=1%SOLR_PORT%
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%
+-Dcom.sun.management.jmxremote.port=!RMI_PORT! ^
+-Dcom.sun.management.jmxremote.rmi.port=!RMI_PORT!
IF NOT "%SOLR_HOST%"=="" set REMOTE_JMX_OPTS=%REMOTE_JMX_OPTS% -Djava.rmi.server.hostname=%SOLR_HOST%
) ELSE (
@@ -636,18 +644,28 @@ IF "%verbose%"=="1" (
@echo SOLR_HOME = %SOLR_HOME%
@echo SOLR_HOST = %SOLR_HOST%
@echo SOLR_PORT = %SOLR_PORT%
+ @echo STOP_PORT = %STOP_PORT%
+ @echo SOLR_JAVA_MEM = %SOLR_JAVA_MEM%
@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%
+
+ IF "%SOLR_MODE%"=="solrcloud" (
+ @echo CLOUD_MODE_OPTS = %CLOUD_MODE_OPTS%
+ )
+
IF NOT "%SOLR_OPTS%"=="" (
@echo SOLR_OPTS = %SOLR_OPTS%
)
+
IF NOT "%SOLR_ADDL_ARGS%"=="" (
@echo SOLR_ADDL_ARGS = %SOLR_ADDL_ARGS%
)
+
+ IF "%ENABLE_REMOTE_JMX_OPTS%"=="true" (
+ @echo RMI_PORT = !RMI_PORT!
+ @echo REMOTE_JMX_OPTS = %REMOTE_JMX_OPTS%
+ )
)
set START_OPTS=-Duser.timezone=%SOLR_TIMEZONE% -Djava.net.preferIPv4Stack=true
@@ -887,7 +905,7 @@ 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 "usebackq" %%i in (`dir /b %SOLR_TIP\bin% ^| findstr /i "^solr-.*\.port$"`) do (
+for /f "usebackq" %%i in (`dir /b %SOLR_TIP%\bin ^| findstr /i "^solr-.*\.port$"`) do (
set SOME_SOLR_PORT=
For /F "Delims=" %%J In (%SOLR_TIP%\bin\%%i) do set SOME_SOLR_PORT=%%~J
if NOT "!SOME_SOLR_PORT!"=="" (
@@ -994,7 +1012,7 @@ IF "!CREATE_REPFACT!"=="" set CREATE_REP
REM Find a port that Solr is running on
if "!CREATE_PORT!"=="" (
- for /f "usebackq" %%i in (`dir /b %SOLR_TIP\bin% ^| findstr /i "^solr-.*\.port$"`) do (
+ for /f "usebackq" %%i in (`dir /b %SOLR_TIP%\bin ^| findstr /i "^solr-.*\.port$"`) do (
set SOME_SOLR_PORT=
For /F "Delims=" %%J In (%SOLR_TIP%\bin\%%i) do set SOME_SOLR_PORT=%%~J
if NOT "!SOME_SOLR_PORT!"=="" (
Modified: lucene/dev/branches/lucene2878/solr/bin/solr.in.cmd
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/bin/solr.in.cmd?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/bin/solr.in.cmd (original)
+++ lucene/dev/branches/lucene2878/solr/bin/solr.in.cmd Fri Dec 5 15:24:11 2014
@@ -63,6 +63,9 @@ REM JMX savvy tools like VisualVM remote
REM (recommended in production environments)
set ENABLE_REMOTE_JMX_OPTS=true
+REM The script will use SOLR_PORT+10000 for the RMI_PORT or you can set it here
+REM set RMI_PORT=18983
+
REM Anything you add to the SOLR_OPTS variable will be included in the java
REM start command line as-is, in ADDITION to other options. If you specify the
REM -a option on start script, those options will be appended as well. Examples:
Modified: lucene/dev/branches/lucene2878/solr/bin/solr.in.sh
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/bin/solr.in.sh?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/bin/solr.in.sh (original)
+++ lucene/dev/branches/lucene2878/solr/bin/solr.in.sh Fri Dec 5 15:24:11 2014
@@ -61,6 +61,9 @@ GC_TUNE="-XX:NewRatio=3 \
# (recommended in production environments)
ENABLE_REMOTE_JMX_OPTS="true"
+# The script will use SOLR_PORT+10000 for the RMI_PORT or you can set it here
+# RMI_PORT=18983
+
# Anything you add to the SOLR_OPTS variable will be included in the java
# start command line as-is, in ADDITION to other options. If you specify the
# -a option on start script, those options will be appended as well. Examples:
Modified: lucene/dev/branches/lucene2878/solr/build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/build.xml?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/build.xml (original)
+++ lucene/dev/branches/lucene2878/solr/build.xml Fri Dec 5 15:24:11 2014
@@ -40,9 +40,7 @@
<!-- ========================================================================= -->
<target name="example" description="Creates a runnable example configuration."
- depends="dist-contrib,dist-war">
- <copy file="${dist}/${fullnamever}.war"
- tofile="${server.dir}/webapps/${ant.project.name}.war"/>
+ depends="dist-contrib,build-war">
<jar destfile="${example}/exampledocs/post.jar"
basedir="${dest}/solr-core/classes/java"
includes="org/apache/solr/util/SimplePostTool*.class">
@@ -333,7 +331,7 @@
<target name="dist"
description="Creates the Solr distribution files."
- depends="dist-solrj, dist-core, dist-test-framework, dist-contrib, dist-war" />
+ depends="dist-solrj, dist-core, dist-test-framework, dist-contrib, build-war" />
<target name="dist-test-framework" depends="init-dist"
description="Creates the Solr test-framework JAR.">
@@ -347,7 +345,7 @@
<contrib-crawl target="dist" failonerror="true" />
</target>
- <target name="dist-war"
+ <target name="build-war"
description="Creates the Solr WAR Distribution file.">
<ant dir="webapp" target="dist" inheritall="false">
<propertyset refid="uptodate.and.compiled.properties"/>
Modified: lucene/dev/branches/lucene2878/solr/cloud-dev/clean.sh
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/cloud-dev/clean.sh?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/cloud-dev/clean.sh (original)
+++ lucene/dev/branches/lucene2878/solr/cloud-dev/clean.sh Fri Dec 5 15:24:11 2014
@@ -13,8 +13,8 @@ cd ..
for (( i=1; i <= $numServers; i++ ))
do
- rm -r -f example$i
+ rm -r -f server$i
done
-rm -r -f examplezk
-rm -r -f example-lastlogs
\ No newline at end of file
+rm -r -f serverzk
+rm -r -f server-lastlogs
\ No newline at end of file
Modified: lucene/dev/branches/lucene2878/solr/cloud-dev/cli-test-solrcloud-start.sh
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/cloud-dev/cli-test-solrcloud-start.sh?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/cloud-dev/cli-test-solrcloud-start.sh (original)
+++ lucene/dev/branches/lucene2878/solr/cloud-dev/cli-test-solrcloud-start.sh Fri Dec 5 15:24:11 2014
@@ -1,51 +1,53 @@
#!/usr/bin/env bash
+# TODO: !OUT OF DATE!
+
cd ..
-rm -r -f example2
-rm -r -f example3
-rm -r -f example4
-rm -r -f example5
-rm -r -f example6
+rm -r -f server2
+rm -r -f server3
+rm -r -f server4
+rm -r -f server5
+rm -r -f server6
rm -r -f dist
rm -r -f build
-rm -r -f example/solr/zoo_data
-rm -r -f example/solr/data
-rm -f example/example.log
+rm -r -f server/solr/zoo_data
+rm -r -f server/solr/data
+rm -f server/server.log
ant example dist
-cp -r -f example example2
-cp -r -f example example3
-cp -r -f example example4
-cp -r -f example example5
-cp -r -f example example6
+cp -r -f server server2
+cp -r -f server server3
+cp -r -f server server4
+cp -r -f server server5
+cp -r -f server server6
# first try uploading a conf dir
-java -classpath lib/*:dist/*:build/lucene-libs/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 127.0.0.1:9983 -confdir example/solr/collection1/conf -confname conf1 -solrhome example/solr -runzk 8983
+java -classpath lib/*:dist/*:build/lucene-libs/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 127.0.0.1:9983 -confdir server/solr/collection1/conf -confname conf1 -solrhome server/solr -runzk 8983
# upload a second conf set so we avoid single conf auto linking
-java -classpath lib/*:dist/*:build/lucene-libs/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 127.0.0.1:9983 -confdir example/solr/collection1/conf -confname conf2 -solrhome example/solr -runzk 8983
+java -classpath lib/*:dist/*:build/lucene-libs/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 127.0.0.1:9983 -confdir server/solr/collection1/conf -confname conf2 -solrhome server/solr -runzk 8983
# now try linking a collection to a conf set
-java -classpath lib/*:dist/*:build/lucene-libs/* org.apache.solr.cloud.ZkCLI -cmd linkconfig -zkhost 127.0.0.1:9983 -collection collection1 -confname conf1 -solrhome example/solr -runzk 8983
+java -classpath lib/*:dist/*:build/lucene-libs/* org.apache.solr.cloud.ZkCLI -cmd linkconfig -zkhost 127.0.0.1:9983 -collection collection1 -confname conf1 -solrhome server/solr -runzk 8983
-cd example
-java -DzkRun -DnumShards=2 -DSTOP.PORT=7983 -DSTOP.KEY=key -jar start.jar 1>example.log 2>&1 &
+cd server
+java -DzkRun -DnumShards=2 -DSTOP.PORT=7983 -DSTOP.KEY=key -jar start.jar 1>server.log 2>&1 &
-cd ../example2
-java -Djetty.port=7574 -DzkHost=localhost:9983 -DnumShards=2 -DSTOP.PORT=6574 -DSTOP.KEY=key -jar start.jar 1>example2.log 2>&1 &
+cd ../server2
+java -Djetty.port=7574 -DzkHost=localhost:9983 -DnumShards=2 -DSTOP.PORT=6574 -DSTOP.KEY=key -jar start.jar 1>server2.log 2>&1 &
-cd ../example3
-java -Djetty.port=7575 -DzkHost=localhost:9983 -DnumShards=2 -DSTOP.PORT=6575 -DSTOP.KEY=key -jar start.jar 1>example3.log 2>&1 &
+cd ../server3
+java -Djetty.port=7575 -DzkHost=localhost:9983 -DnumShards=2 -DSTOP.PORT=6575 -DSTOP.KEY=key -jar start.jar 1>server3.log 2>&1 &
-cd ../example4
-java -Djetty.port=7576 -DzkHost=localhost:9983 -DnumShards=2 -DSTOP.PORT=6576 -DSTOP.KEY=key -jar start.jar 1>example4.log 2>&1 &
+cd ../server4
+java -Djetty.port=7576 -DzkHost=localhost:9983 -DnumShards=2 -DSTOP.PORT=6576 -DSTOP.KEY=key -jar start.jar 1>server4.log 2>&1 &
-cd ../example5
-java -Djetty.port=7577 -DzkHost=localhost:9983 -DnumShards=2 -DSTOP.PORT=6577 -DSTOP.KEY=key -jar start.jar 1>example5.log 2>&1 &
+cd ../server5
+java -Djetty.port=7577 -DzkHost=localhost:9983 -DnumShards=2 -DSTOP.PORT=6577 -DSTOP.KEY=key -jar start.jar 1>server5.log 2>&1 &
-cd ../example6
-java -Djetty.port=7578 -DzkHost=localhost:9983 -DnumShards=2 -DSTOP.PORT=6578 -DSTOP.KEY=key -jar start.jar 1>example6.log 2>&1 &
+cd ../server6
+java -Djetty.port=7578 -DzkHost=localhost:9983 -DnumShards=2 -DSTOP.PORT=6578 -DSTOP.KEY=key -jar start.jar 1>server6.log 2>&1 &
Modified: lucene/dev/branches/lucene2878/solr/cloud-dev/functions.sh
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/cloud-dev/functions.sh?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/cloud-dev/functions.sh (original)
+++ lucene/dev/branches/lucene2878/solr/cloud-dev/functions.sh Fri Dec 5 15:24:11 2014
@@ -9,8 +9,8 @@ rebuild() {
cd ..
rm -r -f dist
rm -r -f build
- rm -r -f example/solr/zoo_data
- rm -f example/example.log
+ rm -r -f server/solr/zoo_data
+ rm -f server/server.log
ant example dist
}
@@ -22,8 +22,8 @@ setports() {
reinstall() {
echo "Reinstalling instance $1"
cd ..
- rm -rf example$1
- cp -r -f example example$1
+ rm -rf server$1
+ cp -r -f server server$1
}
start() {
@@ -33,14 +33,14 @@ start() {
echo "Starting instance $1"
setports $1
- cd ../example$1
- java $JAVA_OPTS -Djetty.port=$PORT $OPT -DSTOP.PORT=$STOP_PORT -DSTOP.KEY=key -jar start.jar 1>example$1.log 2>&1 &
+ cd ../server$1
+ java $JAVA_OPTS -Djetty.port=$PORT $OPT -DSTOP.PORT=$STOP_PORT -DSTOP.KEY=key -jar start.jar 1>server$1.log 2>&1 &
}
stop() {
echo "Stopping instance $1"
setports $1
- cd ../example$1
+ cd ../server$1
java -DSTOP.PORT=$STOP_PORT -DSTOP.KEY=key -jar start.jar --stop
}
@@ -61,13 +61,13 @@ status() {
}
cleanlogs() {
- cd ../example$1
- mv example$1.log example$1.oldlog
+ cd ../server$1
+ mv server$1.log server$1.oldlog
}
taillogs() {
- cd ../example$1
- tail -f example$1.log
+ cd ../server$1
+ tail -f server$1.log
}
createshard() {
Modified: lucene/dev/branches/lucene2878/solr/cloud-dev/solrcloud-extzk-start.sh
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/cloud-dev/solrcloud-extzk-start.sh?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/cloud-dev/solrcloud-extzk-start.sh (original)
+++ lucene/dev/branches/lucene2878/solr/cloud-dev/solrcloud-extzk-start.sh Fri Dec 5 15:24:11 2014
@@ -1,45 +1,47 @@
#!/bin/bash
+# TODO: !OUT OF DATE!
+
zkaddress = localhost:2181/solr
cd ..
-rm -r -f example2
-rm -r -f example3
-rm -r -f example4
-rm -r -f example5
-rm -r -f example6
+rm -r -f server2
+rm -r -f server3
+rm -r -f server4
+rm -r -f server5
+rm -r -f server6
rm -r -f dist
rm -r -f build
-rm -r -f example/solr/zoo_data
-rm -r -f example/solr/collection1/data
-rm -f example/example.log
+rm -r -f server/solr/zoo_data
+rm -r -f server/solr/collection1/data
+rm -f server/server.log
ant example dist
-cp -r -f example example2
-cp -r -f example example3
-cp -r -f example example4
-cp -r -f example example5
-cp -r -f example example6
+cp -r -f server server2
+cp -r -f server server3
+cp -r -f server server4
+cp -r -f server server5
+cp -r -f server server6
-java -classpath "example/solr-webapp/webapp/WEB-INF/lib/*:example/lib/ext/" org.apache.solr.cloud.ZkController "$zkaddress" 8983 example/solr/conf conf1
+java -classpath "server/solr-webapp/webapp/WEB-INF/lib/*:server/lib/ext/" org.apache.solr.cloud.ZkController "$zkaddress" 8983 server/solr/conf conf1
-cd example
-java -DzkHost="$zkaddress" -DnumShards=2 -DSTOP.PORT=7983 -DSTOP.KEY=key -jar start.jar 1>example.log 2>&1 &
+cd server
+java -DzkHost="$zkaddress" -DnumShards=2 -DSTOP.PORT=7983 -DSTOP.KEY=key -jar start.jar 1>server.log 2>&1 &
-cd ../example2
-java -Djetty.port=7574 -DzkHost="$zkaddress" -DSTOP.PORT=6574 -DSTOP.KEY=key -jar start.jar 1>example2.log 2>&1 &
+cd ../server2
+java -Djetty.port=7574 -DzkHost="$zkaddress" -DSTOP.PORT=6574 -DSTOP.KEY=key -jar start.jar 1>server2.log 2>&1 &
-cd ../example3
-java -Djetty.port=7575 -DzkHost="$zkaddress" -DSTOP.PORT=6575 -DSTOP.KEY=key -jar start.jar 1>example3.log 2>&1 &
+cd ../server3
+java -Djetty.port=7575 -DzkHost="$zkaddress" -DSTOP.PORT=6575 -DSTOP.KEY=key -jar start.jar 1>server3.log 2>&1 &
-cd ../example4
-java -Djetty.port=7576 -DzkHost="$zkaddress" -DSTOP.PORT=6576 -DSTOP.KEY=key -jar start.jar 1>example4.log 2>&1 &
+cd ../server4
+java -Djetty.port=7576 -DzkHost="$zkaddress" -DSTOP.PORT=6576 -DSTOP.KEY=key -jar start.jar 1>server4.log 2>&1 &
-cd ../example5
-java -Djetty.port=7577 -DzkHost="$zkaddress" -DSTOP.PORT=6577 -DSTOP.KEY=key -jar start.jar 1>example5.log 2>&1 &
+cd ../server5
+java -Djetty.port=7577 -DzkHost="$zkaddress" -DSTOP.PORT=6577 -DSTOP.KEY=key -jar start.jar 1>server5.log 2>&1 &
-cd ../example6
-java -Djetty.port=7578 -DzkHost="$zkaddress" -DSTOP.PORT=6578 -DSTOP.KEY=key -jar start.jar 1>example6.log 2>&1 &
+cd ../server6
+java -Djetty.port=7578 -DzkHost="$zkaddress" -DSTOP.PORT=6578 -DSTOP.KEY=key -jar start.jar 1>server6.log 2>&1 &
Modified: lucene/dev/branches/lucene2878/solr/cloud-dev/solrcloud-multi-start.sh
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/cloud-dev/solrcloud-multi-start.sh?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/cloud-dev/solrcloud-multi-start.sh (original)
+++ lucene/dev/branches/lucene2878/solr/cloud-dev/solrcloud-multi-start.sh Fri Dec 5 15:24:11 2014
@@ -1,45 +1,47 @@
#!/bin/bash
+# TODO: !OUT OF DATE!
+
# starts up the multicore example
cd ..
-rm -r -f example2
-rm -r -f example3
-rm -r -f example4
-rm -r -f example5
-rm -r -f example6
+rm -r -f server2
+rm -r -f server3
+rm -r -f server4
+rm -r -f server5
+rm -r -f server6
rm -r -f dist
rm -r -f build
-rm -r -f example/solr/zoo_data
-rm -r -f example/solr/collection1/data
-rm -f example/example.log
+rm -r -f server/solr/zoo_data
+rm -r -f server/solr/collection1/data
+rm -f server/server.log
ant example dist
-cp -r -f example example2
-cp -r -f example example3
-cp -r -f example example4
-cp -r -f example example5
-cp -r -f example example6
+cp -r -f server server2
+cp -r -f server server3
+cp -r -f server server4
+cp -r -f server server5
+cp -r -f server server6
-java -classpath "example/solr-webapp/webapp/WEB-INF/lib/*:example/lib/ext/" org.apache.solr.cloud.ZkCLI -cmd upconf -zkhost 127.0.0.1:9983 -solrhome example/multicore -runzk 8983
+java -classpath "server/solr-webapp/webapp/WEB-INF/lib/*:server/lib/ext/" org.apache.solr.cloud.ZkCLI -cmd upconf -zkhost 127.0.0.1:9983 -solrhome example/multicore -runzk 8983
-cd example
-java -DzkRun -DnumShards=2 -DSTOP.PORT=7983 -DSTOP.KEY=key -Dsolr.solr.home=multicore -jar start.jar 1>example.log 2>&1 &
+cd server
+java -DzkRun -DnumShards=2 -DSTOP.PORT=7983 -DSTOP.KEY=key -Dsolr.solr.home=../example/multicore -jar start.jar 1>server.log 2>&1 &
-cd ../example2
-java -Djetty.port=7574 -DzkHost=localhost:9983 -DnumShards=2 -DSTOP.PORT=6574 -DSTOP.KEY=key -Dsolr.solr.home=multicore -jar start.jar 1>example2.log 2>&1 &
+cd ../server2
+java -Djetty.port=7574 -DzkHost=localhost:9983 -DnumShards=2 -DSTOP.PORT=6574 -DSTOP.KEY=key -Dsolr.solr.home=multicore -jar start.jar 1>server2.log 2>&1 &
-cd ../example3
-java -Djetty.port=7575 -DzkHost=localhost:9983 -DnumShards=2 -DSTOP.PORT=6575 -DSTOP.KEY=key -Dsolr.solr.home=multicore -jar start.jar 1>example3.log 2>&1 &
+cd ../server3
+java -Djetty.port=7575 -DzkHost=localhost:9983 -DnumShards=2 -DSTOP.PORT=6575 -DSTOP.KEY=key -Dsolr.solr.home=multicore -jar start.jar 1>server3.log 2>&1 &
-cd ../example4
-java -Djetty.port=7576 -DzkHost=localhost:9983 -DnumShards=2 -DSTOP.PORT=6576 -DSTOP.KEY=key -Dsolr.solr.home=multicore -jar start.jar 1>example4.log 2>&1 &
+cd ../server4
+java -Djetty.port=7576 -DzkHost=localhost:9983 -DnumShards=2 -DSTOP.PORT=6576 -DSTOP.KEY=key -Dsolr.solr.home=multicore -jar start.jar 1>server4.log 2>&1 &
-cd ../example5
-java -Djetty.port=7577 -DzkHost=localhost:9983 -DnumShards=2 -DSTOP.PORT=6577 -DSTOP.KEY=key -Dsolr.solr.home=multicore -jar start.jar 1>example5.log 2>&1 &
+cd ../server5
+java -Djetty.port=7577 -DzkHost=localhost:9983 -DnumShards=2 -DSTOP.PORT=6577 -DSTOP.KEY=key -Dsolr.solr.home=multicore -jar start.jar 1>server5.log 2>&1 &
-cd ../example6
-java -Djetty.port=7578 -DzkHost=localhost:9983 -DnumShards=2 -DSTOP.PORT=6578 -DSTOP.KEY=key -Dsolr.solr.home=multicore -jar start.jar 1>example6.log 2>&1 &
+cd ../server6
+java -Djetty.port=7578 -DzkHost=localhost:9983 -DnumShards=2 -DSTOP.PORT=6578 -DSTOP.KEY=key -Dsolr.solr.home=multicore -jar start.jar 1>server6.log 2>&1 &
Modified: lucene/dev/branches/lucene2878/solr/cloud-dev/solrcloud-start-existing.sh
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/cloud-dev/solrcloud-start-existing.sh?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/cloud-dev/solrcloud-start-existing.sh (original)
+++ lucene/dev/branches/lucene2878/solr/cloud-dev/solrcloud-start-existing.sh Fri Dec 5 15:24:11 2014
@@ -17,20 +17,20 @@ die () {
cd ..
-cd examplezk
+cd serverzk
stopPort=1313
jettyPort=8900
-exec -a jettyzk java -Xmx512m $JAVA_OPTS -Djetty.port=$jettyPort -DhostPort=$jettyPort -DzkRun -DzkHost=localhost:9900/$ZK_CHROOT -DzkRunOnly=true -DSTOP.PORT=$stopPort -DSTOP.KEY=key -jar start.jar 1>examplezk.log 2>&1 &
-# TODO: we could also remove the default core
+exec -a jettyzk java -Xmx512m $JAVA_OPTS -Djetty.port=$jettyPort -DhostPort=$jettyPort -DzkRun -DzkHost=localhost:9900/$ZK_CHROOT -DzkRunOnly=true -DSTOP.PORT=$stopPort -DSTOP.KEY=key -jar start.jar 1>serverzk.log 2>&1 &
+
cd ..
-cd example
+cd server
for (( i=1; i <= $numServers; i++ ))
do
- echo "starting example$i"
- cd ../example$i
+ echo "starting server$i"
+ cd ../server$i
stopPort=`expr $baseStopPort + $i`
jettyPort=`expr $baseJettyPort + $i`
- exec -a jetty java -Xmx1g $JAVA_OPTS -Djetty.port=$jettyPort -DzkHost=localhost:9900/$ZK_CHROOT -DSTOP.PORT=$stopPort -DSTOP.KEY=key -jar start.jar 1>example$i.log 2>&1 &
+ exec -a jetty java -Xmx1g $JAVA_OPTS -Djetty.port=$jettyPort -DzkHost=localhost:9900/$ZK_CHROOT -DSTOP.PORT=$stopPort -DSTOP.KEY=key -jar start.jar 1>server$i.log 2>&1 &
done
Modified: lucene/dev/branches/lucene2878/solr/cloud-dev/solrcloud-start.sh
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/cloud-dev/solrcloud-start.sh?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/cloud-dev/solrcloud-start.sh (original)
+++ lucene/dev/branches/lucene2878/solr/cloud-dev/solrcloud-start.sh Fri Dec 5 15:24:11 2014
@@ -25,52 +25,48 @@ cd ..
for (( i=1; i <= $numServers; i++ ))
do
- rm -r -f example$i
+ echo "try to remove existing directory: server$i"
+ rm -r -f server$i
done
rm -r -f dist
rm -r -f build
-rm -r -f example/solr/zoo_data
-rm -r -f example/solr/collection1/data
-rm -f example/example.log
+rm -r -f server/solr/zoo_data
+rm -f server/server.log
ant -f ../build.xml clean
ant example dist
-rm -r example/solr-webapp/*
-unzip example/webapps/solr.war -d example/solr-webapp/webapp
+rm -r server/solr-webapp/*
+unzip server/webapps/solr.war -d server/solr-webapp/webapp
for (( i=1; i <= $numServers; i++ ))
do
- echo "create example$i"
- cp -r -f example example$i
+ echo "create server$i"
+ cp -r -f server server$i
done
-
-rm -r -f examplezk
-cp -r -f example examplezk
-cp core/src/test-files/solr/solr-no-core.xml examplezk/solr/solr.xml
-rm -r -f examplezk/solr/collection1/core.properties
-cd examplezk
+rm -r -f serverzk
+cp -r -f server serverzk
+cp core/src/test-files/solr/solr-no-core.xml serverzk/solr/solr.xml
+rm -r -f serverzk/solr/collection1/core.properties
+cd serverzk
stopPort=1313
jettyPort=8900
-exec -a jettyzk java -Xmx512m $JAVA_OPTS -Djetty.port=$jettyPort -DhostPort=$jettyPort -DzkRun=localhost:9900/solr -DzkHost=$zkAddress -DzkRunOnly=true -DSTOP.PORT=$stopPort -DSTOP.KEY=key -jar start.jar 1>examplezk.log 2>&1 &
+exec -a jettyzk java -Xmx512m $JAVA_OPTS -Djetty.port=$jettyPort -DhostPort=$jettyPort -DzkRun=localhost:9900/solr -DzkHost=$zkAddress -DzkRunOnly=true -DSTOP.PORT=$stopPort -DSTOP.KEY=key -jar start.jar 1>serverzk.log 2>&1 &
cd ..
# upload config files
-java -classpath "example1/solr-webapp/webapp/WEB-INF/lib/*:example/lib/ext/*" $JAVA_OPTS org.apache.solr.cloud.ZkCLI -cmd bootstrap -zkhost $zkAddress -solrhome example1/solr
+java -classpath "server/solr-webapp/webapp/WEB-INF/lib/*:server/lib/ext/*" $JAVA_OPTS org.apache.solr.cloud.ZkCLI -zkhost $zkAddress -cmd upconfig --confdir server/solr/configsets/basic_configs --confname basic_configs
-cd example
+cd server
for (( i=1; i <= $numServers; i++ ))
do
- echo "starting example$i"
- cd ../example$i
+ echo "starting server$i"
+ cd ../server$i
stopPort=`expr $baseStopPort + $i`
jettyPort=`expr $baseJettyPort + $i`
- exec -a jetty java -Xmx1g $JAVA_OPTS -DnumShards=$numShards -Djetty.port=$jettyPort -DzkHost=$zkAddress -DSTOP.PORT=$stopPort -DSTOP.KEY=key -jar start.jar 1>example$i.log 2>&1 &
+ exec -a jetty java -Xmx1g $JAVA_OPTS -DnumShards=$numShards -Djetty.port=$jettyPort -DzkHost=$zkAddress -DSTOP.PORT=$stopPort -DSTOP.KEY=key -jar start.jar 1>server$i.log 2>&1 &
done
-
-
-
Modified: lucene/dev/branches/lucene2878/solr/cloud-dev/stop.sh
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/cloud-dev/stop.sh?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/cloud-dev/stop.sh (original)
+++ lucene/dev/branches/lucene2878/solr/cloud-dev/stop.sh Fri Dec 5 15:24:11 2014
@@ -11,22 +11,22 @@ die () {
[ "$#" -eq 1 ] || die "1 argument required, $# provided, usage: stop.sh {numServers}"
-cd ../example
+cd ../server
for (( i=1; i <= $numServers; i++ ))
do
stopPort=`expr $baseStopPort + $i`
- echo "stopping example$i, stop port is $stopPort"
- cd ../example$i
+ echo "stopping server$i, stop port is $stopPort"
+ cd ../server$i
java -DSTOP.PORT=$stopPort -DSTOP.KEY=key -jar start.jar --stop
done
-mkdir ../example-lastlogs
+mkdir ../server-lastlogs
for (( i=1; i <= $numServers; i++ ))
do
- cd ../example$i
+ cd ../server$i
jettyPort=`expr $baseJettyPort + $i`
echo "Make sure jetty stops and wait for it: $jettyPort"
@@ -41,8 +41,8 @@ do
fi
# save the last shutdown logs
- echo "copy example$i.log to lastlogs"
- cp -r -f example$i.log ../example-lastlogs/example-last$i.log
+ echo "copy server$i.log to lastlogs"
+ cp -r -f server$i.log ../server-lastlogs/server-last$i.log
done
# stop zk runner
Modified: lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler-extras/src/java/org/apache/solr/handler/dataimport/TikaEntityProcessor.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler-extras/src/java/org/apache/solr/handler/dataimport/TikaEntityProcessor.java?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler-extras/src/java/org/apache/solr/handler/dataimport/TikaEntityProcessor.java (original)
+++ lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler-extras/src/java/org/apache/solr/handler/dataimport/TikaEntityProcessor.java Fri Dec 5 15:24:11 2014
@@ -69,6 +69,7 @@ public class TikaEntityProcessor extends
@Override
protected void firstInit(Context context) {
+ super.firstInit(context);
try {
String tikaConfigFile = context.getResolvedEntityAttribute("tikaConfig");
if (tikaConfigFile == null) {
Modified: lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DIHCacheSupport.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DIHCacheSupport.java?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DIHCacheSupport.java (original)
+++ lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DIHCacheSupport.java Fri Dec 5 15:24:11 2014
@@ -44,28 +44,11 @@ public class DIHCacheSupport {
public DIHCacheSupport(Context context, String cacheImplName) {
this.cacheImplName = cacheImplName;
- String where = context.getEntityAttribute("where");
- String cacheKey = context.getEntityAttribute(DIHCacheSupport.CACHE_PRIMARY_KEY);
- String lookupKey = context.getEntityAttribute(DIHCacheSupport.CACHE_FOREIGN_KEY);
- if (cacheKey != null && lookupKey == null) {
- throw new DataImportHandlerException(DataImportHandlerException.SEVERE,
- "'cacheKey' is specified for the entity "
- + context.getEntityAttribute("name")
- + " but 'cacheLookup' is missing");
-
- }
- if (where == null && cacheKey == null) {
- cacheDoKeyLookup = false;
- } else {
- if (where != null) {
- String[] splits = where.split("=");
- cacheKey = splits[0];
- cacheForeignKey = splits[1].trim();
- } else {
- cacheForeignKey = lookupKey;
- }
- cacheDoKeyLookup = true;
- }
+ Relation r = new Relation(context);
+ cacheDoKeyLookup = r.doKeyLookup;
+ String cacheKey = r.primaryKey;
+ cacheForeignKey = r.foreignKey;
+
context.setSessionAttribute(DIHCacheSupport.CACHE_PRIMARY_KEY, cacheKey,
Context.SCOPE_ENTITY);
context.setSessionAttribute(DIHCacheSupport.CACHE_FOREIGN_KEY, cacheForeignKey,
@@ -76,6 +59,48 @@ public class DIHCacheSupport {
Context.SCOPE_ENTITY);
}
+ static class Relation{
+ protected final boolean doKeyLookup;
+ protected final String foreignKey;
+ protected final String primaryKey;
+
+ public Relation(Context context) {
+ String where = context.getEntityAttribute("where");
+ String cacheKey = context.getEntityAttribute(DIHCacheSupport.CACHE_PRIMARY_KEY);
+ String lookupKey = context.getEntityAttribute(DIHCacheSupport.CACHE_FOREIGN_KEY);
+ if (cacheKey != null && lookupKey == null) {
+ throw new DataImportHandlerException(DataImportHandlerException.SEVERE,
+ "'cacheKey' is specified for the entity "
+ + context.getEntityAttribute("name")
+ + " but 'cacheLookup' is missing");
+
+ }
+ if (where == null && cacheKey == null) {
+ doKeyLookup = false;
+ primaryKey = null;
+ foreignKey = null;
+ } else {
+ if (where != null) {
+ String[] splits = where.split("=");
+ primaryKey = splits[0];
+ foreignKey = splits[1].trim();
+ } else {
+ primaryKey = cacheKey;
+ foreignKey = lookupKey;
+ }
+ doKeyLookup = true;
+ }
+ }
+
+ @Override
+ public String toString() {
+ return "Relation "
+ + primaryKey + "="+foreignKey ;
+ }
+
+
+ }
+
private DIHCache instantiateCache(Context context) {
DIHCache cache = null;
try {
Modified: lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/EntityProcessorBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/EntityProcessorBase.java?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/EntityProcessorBase.java (original)
+++ lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/EntityProcessorBase.java Fri Dec 5 15:24:11 2014
@@ -48,6 +48,8 @@ public class EntityProcessorBase extends
protected String onError = ABORT;
protected DIHCacheSupport cacheSupport = null;
+
+ protected Zipper zipper;
@Override
@@ -56,19 +58,30 @@ public class EntityProcessorBase extends
if (isFirstInit) {
firstInit(context);
}
- if(cacheSupport!=null) {
- cacheSupport.initNewParent(context);
- }
-
+ if(zipper!=null){
+ zipper.onNewParent(context);
+ }else{
+ if(cacheSupport!=null) {
+ cacheSupport.initNewParent(context);
+ }
+ }
}
- /**first time init call. do one-time operations here
+ /**
+ * first time init call. do one-time operations here
+ * it's necessary to call it from the overridden method,
+ * otherwise it throws NPE on accessing zipper from nextRow()
*/
protected void firstInit(Context context) {
entityName = context.getEntityAttribute("name");
String s = context.getEntityAttribute(ON_ERROR);
if (s != null) onError = s;
- initCache(context);
+
+ zipper = Zipper.createOrNull(context);
+
+ if(zipper==null){
+ initCache(context);
+ }
isFirstInit = false;
}
@@ -109,25 +122,29 @@ public class EntityProcessorBase extends
}
protected Map<String, Object> getNext() {
- if(cacheSupport==null) {
- try {
- if (rowIterator == null)
+ if(zipper!=null){
+ return zipper.supplyNextChild(rowIterator);
+ }else{
+ if(cacheSupport==null) {
+ try {
+ if (rowIterator == null)
+ return null;
+ if (rowIterator.hasNext())
+ return rowIterator.next();
+ query = null;
+ rowIterator = null;
+ return null;
+ } catch (Exception e) {
+ SolrException.log(log, "getNext() failed for query '" + query + "'", e);
+ query = null;
+ rowIterator = null;
+ wrapAndThrow(DataImportHandlerException.WARN, e);
return null;
- if (rowIterator.hasNext())
- return rowIterator.next();
- query = null;
- rowIterator = null;
- return null;
- } catch (Exception e) {
- SolrException.log(log, "getNext() failed for query '" + query + "'", e);
- query = null;
- rowIterator = null;
- wrapAndThrow(DataImportHandlerException.WARN, e);
- return null;
- }
- } else {
- return cacheSupport.getCacheData(context, query, rowIterator);
- }
+ }
+ } else {
+ return cacheSupport.getCacheData(context, query, rowIterator);
+ }
+ }
}
Modified: lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractSqlEntityProcessorTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractSqlEntityProcessorTestCase.java?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractSqlEntityProcessorTestCase.java (original)
+++ lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractSqlEntityProcessorTestCase.java Fri Dec 5 15:24:11 2014
@@ -45,8 +45,15 @@ public abstract class AbstractSqlEntityP
protected boolean useSimpleCaches;
protected boolean countryEntity;
protected boolean countryCached;
+ protected boolean countryZipper;
protected boolean sportsEntity;
protected boolean sportsCached;
+ protected boolean sportsZipper;
+
+ protected boolean wrongPeopleOrder ;
+ protected boolean wrongSportsOrder ;
+ protected boolean wrongCountryOrder;
+
protected String rootTransformerName;
protected boolean countryTransformer;
protected boolean sportsTransformer;
@@ -65,8 +72,15 @@ public abstract class AbstractSqlEntityP
useSimpleCaches = false;
countryEntity = false;
countryCached = false;
+ countryZipper = false;
sportsEntity = false;
sportsCached = false;
+ sportsZipper = false;
+
+ wrongPeopleOrder = false;
+ wrongSportsOrder = false;
+ wrongCountryOrder= false;
+
rootTransformerName = null;
countryTransformer = false;
sportsTransformer = false;
@@ -177,9 +191,14 @@ public abstract class AbstractSqlEntityP
} else {
countryEntity = true;
sportsEntity = true;
- if (numChildren == 1) {
- countryEntity = random().nextBoolean();
- sportsEntity = !countryEntity;
+ if(countryZipper||sportsZipper){// zipper tests fully cover nums of children
+ countryEntity = countryZipper;
+ sportsEntity = sportsZipper;
+ }else{// apply default randomization on cached cases
+ if (numChildren == 1) {
+ countryEntity = random().nextBoolean();
+ sportsEntity = !countryEntity;
+ }
}
if (countryEntity) {
countryTransformer = random().nextBoolean();
@@ -212,19 +231,30 @@ public abstract class AbstractSqlEntityP
+ (totalPeople()) + "']");
}
if (countryEntity) {
- if (personNameExists("Jayden")) {
- String nrName = countryNameByCode("NP");
- if (nrName != null && nrName.length() > 0) {
- assertQ(req("NAME_mult_s:Jayden"), "//*[@numFound='1']",
+ {
+ String[] people = getStringsFromQuery("SELECT NAME FROM PEOPLE WHERE DELETED != 'Y'");
+ String man = people[random().nextInt(people.length)];
+ String[] countryNames = getStringsFromQuery("SELECT C.COUNTRY_NAME FROM PEOPLE P "
+ + "INNER JOIN COUNTRIES C ON P.COUNTRY_CODE=C.CODE "
+ + "WHERE P.DELETED!='Y' AND C.DELETED!='Y' AND P.NAME='" + man + "'");
+
+ assertQ(req("{!term f=NAME_mult_s}"+ man), "//*[@numFound='1']",
+ countryNames.length>0?
+ "//doc/str[@name='COUNTRY_NAME_s']='" + countryNames[random().nextInt(countryNames.length)] + "'"
+ :"//doc[count(*[@name='COUNTRY_NAME_s'])=0]");
+ }
+ {
+ String[] countryCodes = getStringsFromQuery("SELECT CODE FROM COUNTRIES WHERE DELETED != 'Y'");
+ String theCode = countryCodes[random().nextInt(countryCodes.length)];
+ int num = numberPeopleByCountryCode(theCode);
+ if(num>0){
+ String nrName = countryNameByCode(theCode);
+ assertQ(req("COUNTRY_CODES_mult_s:"+theCode), "//*[@numFound='" + num + "']",
"//doc/str[@name='COUNTRY_NAME_s']='" + nrName + "'");
+ }else{ // no one lives there anyway
+ assertQ(req("COUNTRY_CODES_mult_s:"+theCode), "//*[@numFound='" + num + "']");
}
}
- String nrName = countryNameByCode("NR");
- int num = numberPeopleByCountryCode("NR");
- if (nrName != null && num > 0) {
- assertQ(req("COUNTRY_CODES_mult_s:NR"), "//*[@numFound='" + num + "']",
- "//doc/str[@name='COUNTRY_NAME_s']='" + nrName + "'");
- }
if (countryTransformer && !underlyingDataModified) {
assertQ(req("countryAdded_s:country_added"), "//*[@numFound='"
+ totalPeople() + "']");
@@ -234,24 +264,27 @@ public abstract class AbstractSqlEntityP
if (!underlyingDataModified) {
assertQ(req("SPORT_NAME_mult_s:Sailing"), "//*[@numFound='2']");
}
- String michaelsName = personNameById(3);
- String[] michaelsSports = sportNamesByPersonId(3);
- if (michaelsName != null && michaelsSports.length > 0) {
- String[] xpath = new String[michaelsSports.length + 1];
- xpath[0] = "//*[@numFound='1']";
- int i = 1;
- for (String ms : michaelsSports) {
- xpath[i] = "//doc/arr[@name='SPORT_NAME_mult_s']/str[" + i + "]='"
- + ms + "'";
- i++;
- }
- assertQ(req("NAME_mult_s:" + michaelsName.replaceAll("\\W", "\\\\$0")),
- xpath);
+ String [] names = getStringsFromQuery("SELECT NAME FROM PEOPLE WHERE DELETED != 'Y'");
+ String name = names[random().nextInt(names.length)];
+ int personId = getIntFromQuery("SELECT ID FROM PEOPLE WHERE DELETED != 'Y' AND NAME='"+name+"'");
+ String[] michaelsSports = sportNamesByPersonId(personId);
+
+ String[] xpath = new String[michaelsSports.length + 1];
+ xpath[0] = "//*[@numFound='1']";
+ int i = 1;
+ for (String ms : michaelsSports) {
+ xpath[i] = "//doc/arr[@name='SPORT_NAME_mult_s']/str='"//[" + i + "]='" don't care about particular order
+ + ms + "'";
+ i++;
}
+ assertQ(req("NAME_mult_s:" + name.replaceAll("\\W", "\\\\$0")),
+ xpath);
if (!underlyingDataModified && sportsTransformer) {
assertQ(req("sportsAdded_s:sport_added"), "//*[@numFound='"
- + (totalPeople()) + "']");
+ + (totalSportsmen()) + "']");
}
+ assertQ("checking orphan sport is absent",
+ req("{!term f=SPORT_NAME_mult_s}No Fishing"), "//*[@numFound='0']");
}
if (checkDatabaseRequests) {
Assert.assertTrue("Expecting " + numDatabaseRequests
@@ -304,6 +337,7 @@ public abstract class AbstractSqlEntityP
}
}
+
private int getIntFromQuery(String query) throws Exception {
Connection conn = null;
Statement s = null;
@@ -367,6 +401,12 @@ public abstract class AbstractSqlEntityP
return getIntFromQuery("SELECT COUNT(1) FROM PEOPLE WHERE DELETED != 'Y' ");
}
+ public int totalSportsmen() throws Exception {
+ return getIntFromQuery("SELECT COUNT(*) FROM PEOPLE WHERE "
+ + "EXISTS(SELECT ID FROM PEOPLE_SPORTS WHERE PERSON_ID=PEOPLE.ID AND PEOPLE_SPORTS.DELETED != 'Y')"
+ + " AND PEOPLE.DELETED != 'Y'");
+ }
+
public boolean countryCodeExists(String cc) throws Exception {
return getIntFromQuery("SELECT COUNT(1) country_name FROM COUNTRIES WHERE DELETED != 'Y' AND CODE='"
+ cc + "'") > 0;
@@ -574,7 +614,11 @@ public abstract class AbstractSqlEntityP
sb.append("dataSource=''" + ds + "'' ");
sb.append(rootTransformerName != null ? "transformer=''"
+ rootTransformerName + "'' " : "");
- sb.append("query=''SELECT ID, NAME, COUNTRY_CODE FROM PEOPLE WHERE DELETED != 'Y' '' ");
+
+ sb.append("query=''SELECT ID, NAME, COUNTRY_CODE FROM PEOPLE WHERE DELETED != 'Y' "
+ +((sportsZipper||countryZipper?"ORDER BY ID":"")
+ +(wrongPeopleOrder? " DESC":""))+"'' ");
+
sb.append(deltaQueriesPersonTable());
sb.append("> \n");
@@ -595,9 +639,20 @@ public abstract class AbstractSqlEntityP
if (useSimpleCaches) {
sb.append("query=''SELECT CODE, COUNTRY_NAME FROM COUNTRIES WHERE DELETED != 'Y' AND CODE='${People.COUNTRY_CODE}' ''>\n");
} else {
- sb.append(random().nextBoolean() ? "cacheKey=''CODE'' cacheLookup=''People.COUNTRY_CODE'' "
- : "where=''CODE=People.COUNTRY_CODE'' ");
- sb.append("query=''SELECT CODE, COUNTRY_NAME FROM COUNTRIES'' ");
+
+ if(countryZipper){// really odd join btw. it sends duped countries
+ sb.append(random().nextBoolean() ? "cacheKey=''ID'' cacheLookup=''People.ID'' "
+ : "where=''ID=People.ID'' ");
+ sb.append("join=''zipper'' query=''SELECT PEOPLE.ID, CODE, COUNTRY_NAME FROM COUNTRIES"
+ + " JOIN PEOPLE ON COUNTRIES.CODE=PEOPLE.COUNTRY_CODE "
+ + "WHERE PEOPLE.DELETED != 'Y' ORDER BY PEOPLE.ID "+
+ (wrongCountryOrder ? " DESC":"")
+ + "'' ");
+ }else{
+ sb.append(random().nextBoolean() ? "cacheKey=''CODE'' cacheLookup=''People.COUNTRY_CODE'' "
+ : "where=''CODE=People.COUNTRY_CODE'' ");
+ sb.append("query=''SELECT CODE, COUNTRY_NAME FROM COUNTRIES'' ");
+ }
sb.append("> \n");
}
} else {
@@ -623,7 +678,14 @@ public abstract class AbstractSqlEntityP
} else {
sb.append(random().nextBoolean() ? "cacheKey=''PERSON_ID'' cacheLookup=''People.ID'' "
: "where=''PERSON_ID=People.ID'' ");
- sb.append("query=''SELECT ID, PERSON_ID, SPORT_NAME FROM PEOPLE_SPORTS ORDER BY ID'' ");
+ if(sportsZipper){
+ sb.append("join=''zipper'' query=''SELECT ID, PERSON_ID, SPORT_NAME FROM PEOPLE_SPORTS ORDER BY PERSON_ID"
+ + (wrongSportsOrder?" DESC" : "")+
+ "'' ");
+ }
+ else{
+ sb.append("query=''SELECT ID, PERSON_ID, SPORT_NAME FROM PEOPLE_SPORTS ORDER BY ID'' ");
+ }
}
} else {
sb.append("processor=''SqlEntityProcessor'' query=''SELECT ID, SPORT_NAME FROM PEOPLE_SPORTS WHERE DELETED != 'Y' AND PERSON_ID=${People.ID} ORDER BY ID'' ");
@@ -726,7 +788,9 @@ public abstract class AbstractSqlEntityP
{7,"Noah","NI"},
{8,"Daniel","NG"},
{9,"Aiden","NF"},
- {10,"Anthony","NE"},
+
+ {21,"Anthony","NE"}, // there is no ID=10 anymore
+
{11,"Emma","NL"},
{12,"Grace","NI"},
{13,"Hailey","NG"},
@@ -751,7 +815,10 @@ public abstract class AbstractSqlEntityP
{700, 7, "Boating"},
{800, 8, "Bodyboarding"},
{900, 9, "Canoeing"},
- {1000, 10, "Fishing"},
+
+ {1000, 10, "No Fishing"}, // orhpaned sport
+ //
+
{1100, 11, "Jet Ski"},
{1110, 11, "Rowing"},
{1120, 11, "Sailing"},
@@ -760,10 +827,12 @@ public abstract class AbstractSqlEntityP
{1300, 13, "Kite surfing"},
{1400, 14, "Parasailing"},
{1500, 15, "Rafting"},
- {1600, 16, "Rowing"},
+ //{1600, 16, "Rowing"}, Madison has no sport
{1700, 17, "Sailing"},
{1800, 18, "White Water Rafting"},
{1900, 19, "Water skiing"},
- {2000, 20, "Windsurfing"}
+ {2000, 20, "Windsurfing"},
+ {2100, 21, "Concrete diving"},
+ {2110, 21, "Bubble rugby"}
};
}
Modified: lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/MockSolrEntityProcessor.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/MockSolrEntityProcessor.java?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/MockSolrEntityProcessor.java (original)
+++ lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/MockSolrEntityProcessor.java Fri Dec 5 15:24:11 2014
@@ -31,10 +31,6 @@ public class MockSolrEntityProcessor ext
private int rows;
- public MockSolrEntityProcessor(List<SolrTestCaseJ4.Doc> docsData) {
- this(docsData, ROWS_DEFAULT);
- }
-
public MockSolrEntityProcessor(List<SolrTestCaseJ4.Doc> docsData, int rows) {
this.docsData = docsData;
this.rows = rows;
Modified: lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorUnit.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorUnit.java?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorUnit.java (original)
+++ lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorUnit.java Fri Dec 5 15:24:11 2014
@@ -31,20 +31,33 @@ public class TestSolrEntityProcessorUnit
public void testQuery() {
List<Doc> docs = generateUniqueDocs(2);
- MockSolrEntityProcessor processor = new MockSolrEntityProcessor(docs);
+ MockSolrEntityProcessor processor = createAndInit(docs);
assertExpectedDocs(docs, processor);
assertEquals(1, processor.getQueryCount());
}
+ private MockSolrEntityProcessor createAndInit(List<Doc> docs) {
+ return createAndInit(docs, SolrEntityProcessor.ROWS_DEFAULT);
+ }
+
public void testNumDocsGreaterThanRows() {
List<Doc> docs = generateUniqueDocs(44);
- MockSolrEntityProcessor processor = new MockSolrEntityProcessor(docs, 10);
+ int rowsNum = 10;
+ MockSolrEntityProcessor processor = createAndInit(docs, rowsNum);
assertExpectedDocs(docs, processor);
assertEquals(5, processor.getQueryCount());
}
+ private MockSolrEntityProcessor createAndInit(List<Doc> docs, int rowsNum) {
+ MockSolrEntityProcessor processor = new MockSolrEntityProcessor(docs, rowsNum);
+ HashMap<String,String> entityAttrs = new HashMap<String,String>(){{put(SolrEntityProcessor.SOLR_SERVER,"http://route:66/no");}};
+ processor.init(getContext(null, null, null, null, Collections.emptyList(),
+ entityAttrs));
+ return processor;
+ }
+
public void testMultiValuedFields() {
List<Doc> docs = new ArrayList<>();
List<FldType> types = new ArrayList<>();
@@ -53,7 +66,7 @@ public class TestSolrEntityProcessorUnit
Doc testDoc = createDoc(types);
docs.add(testDoc);
- MockSolrEntityProcessor processor = new MockSolrEntityProcessor(docs);
+ MockSolrEntityProcessor processor = createAndInit(docs);
Map<String, Object> next = processor.nextRow();
assertNotNull(next);
Modified: lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSqlEntityProcessor.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSqlEntityProcessor.java?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSqlEntityProcessor.java (original)
+++ lucene/dev/branches/lucene2878/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSqlEntityProcessor.java Fri Dec 5 15:24:11 2014
@@ -45,6 +45,60 @@ public class TestSqlEntityProcessor exte
public void testCachedChildEntities() throws Exception {
withChildEntities(true, true);
}
+
+ @Test
+ public void testSportZipperChildEntities() throws Exception {
+ sportsZipper = true;
+ withChildEntities(true, true);
+ }
+
+ @Test
+ public void testCountryZipperChildEntities() throws Exception {
+ countryZipper = true;
+ withChildEntities(true, true);
+ }
+
+ @Test
+ public void testBothZipperChildEntities() throws Exception {
+ countryZipper = true;
+ sportsZipper = true;
+ withChildEntities(true, true);
+ }
+
+ @Test(expected=RuntimeException.class /* DIH exceptions are not propagated, here we capturing assertQ exceptions */)
+ public void testSportZipperChildEntitiesWrongOrder() throws Exception {
+ if(random().nextBoolean()){
+ wrongPeopleOrder = true;
+ }else{
+ wrongSportsOrder = true;
+ }
+ testSportZipperChildEntities();
+ }
+
+ @Test(expected=RuntimeException.class )
+ public void testCountryZipperChildEntitiesWrongOrder() throws Exception {
+ if(random().nextBoolean()){
+ wrongPeopleOrder = true;
+ }else{
+ wrongCountryOrder = true;
+ }
+ testCountryZipperChildEntities();
+ }
+
+ @Test(expected=RuntimeException.class)
+ public void testBothZipperChildEntitiesWrongOrder() throws Exception {
+ if(random().nextBoolean()){
+ wrongPeopleOrder = true;
+ }else{
+ if(random().nextBoolean()){
+ wrongSportsOrder = true;
+ }else{
+ wrongCountryOrder = true;
+ }
+ }
+ testBothZipperChildEntities();
+ }
+
@Test
@Ignore("broken see SOLR-3857")
public void testSimpleCacheChildEntities() throws Exception {
Modified: lucene/dev/branches/lucene2878/solr/contrib/extraction/src/test-files/extraction/solr/collection1/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/contrib/extraction/src/test-files/extraction/solr/collection1/conf/solrconfig.xml?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/contrib/extraction/src/test-files/extraction/solr/collection1/conf/solrconfig.xml (original)
+++ lucene/dev/branches/lucene2878/solr/contrib/extraction/src/test-files/extraction/solr/collection1/conf/solrconfig.xml Fri Dec 5 15:24:11 2014
@@ -194,6 +194,18 @@
<requestHandler name="/update/extract" class="org.apache.solr.handler.extraction.ExtractingRequestHandler"/>
+ <requestHandler name="/update/extract/lit-def" class="org.apache.solr.handler.extraction.ExtractingRequestHandler">
+ <lst name="defaults">
+ <str name="literal.foo_s">x</str>
+ </lst>
+ <lst name="appends">
+ <str name="literal.bar_s">y</str>
+ </lst>
+ <lst name="invariants">
+ <str name="literal.zot_s">z</str>
+ <str name="uprefix">ignored_</str>
+ </lst>
+ </requestHandler>
<highlighting>
<!-- Configure the standard fragmenter -->
Modified: lucene/dev/branches/lucene2878/solr/contrib/extraction/src/test/org/apache/solr/handler/extraction/ExtractingRequestHandlerTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/contrib/extraction/src/test/org/apache/solr/handler/extraction/ExtractingRequestHandlerTest.java?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/contrib/extraction/src/test/org/apache/solr/handler/extraction/ExtractingRequestHandlerTest.java (original)
+++ lucene/dev/branches/lucene2878/solr/contrib/extraction/src/test/org/apache/solr/handler/extraction/ExtractingRequestHandlerTest.java Fri Dec 5 15:24:11 2014
@@ -288,6 +288,74 @@ public class ExtractingRequestHandlerTes
}
+ public void testLiteralDefaults() throws Exception {
+
+ // sanity check config
+ loadLocalFromHandler("/update/extract/lit-def",
+ "extraction/simple.html",
+ "literal.id", "lit-def-simple");
+ assertU(commit());
+ assertQ(req("q", "id:lit-def-simple")
+ , "//*[@numFound='1']"
+ , "count(//arr[@name='foo_s']/str)=1"
+ , "//arr[@name='foo_s']/str[.='x']"
+ , "count(//arr[@name='bar_s']/str)=1"
+ , "//arr[@name='bar_s']/str[.='y']"
+ , "count(//arr[@name='zot_s']/str)=1"
+ , "//arr[@name='zot_s']/str[.='z']"
+ );
+
+ // override the default foo_s
+ loadLocalFromHandler("/update/extract/lit-def",
+ "extraction/simple.html",
+ "literal.foo_s", "1111",
+ "literal.id", "lit-def-simple");
+ assertU(commit());
+ assertQ(req("q", "id:lit-def-simple")
+ , "//*[@numFound='1']"
+ , "count(//arr[@name='foo_s']/str)=1"
+ , "//arr[@name='foo_s']/str[.='1111']"
+ , "count(//arr[@name='bar_s']/str)=1"
+ , "//arr[@name='bar_s']/str[.='y']"
+ , "count(//arr[@name='zot_s']/str)=1"
+ , "//arr[@name='zot_s']/str[.='z']"
+ );
+
+ // pre-pend the bar_s
+ loadLocalFromHandler("/update/extract/lit-def",
+ "extraction/simple.html",
+ "literal.bar_s", "2222",
+ "literal.id", "lit-def-simple");
+ assertU(commit());
+ assertQ(req("q", "id:lit-def-simple")
+ , "//*[@numFound='1']"
+ , "count(//arr[@name='foo_s']/str)=1"
+ , "//arr[@name='foo_s']/str[.='x']"
+ , "count(//arr[@name='bar_s']/str)=2"
+ , "//arr[@name='bar_s']/str[.='2222']"
+ , "//arr[@name='bar_s']/str[.='y']"
+ , "count(//arr[@name='zot_s']/str)=1"
+ , "//arr[@name='zot_s']/str[.='z']"
+ );
+
+ // invariant zot_s can not be changed
+ loadLocalFromHandler("/update/extract/lit-def",
+ "extraction/simple.html",
+ "literal.zot_s", "3333",
+ "literal.id", "lit-def-simple");
+ assertU(commit());
+ assertQ(req("q", "id:lit-def-simple")
+ , "//*[@numFound='1']"
+ , "count(//arr[@name='foo_s']/str)=1"
+ , "//arr[@name='foo_s']/str[.='x']"
+ , "count(//arr[@name='bar_s']/str)=1"
+ , "//arr[@name='bar_s']/str[.='y']"
+ , "count(//arr[@name='zot_s']/str)=1"
+ , "//arr[@name='zot_s']/str[.='z']"
+ );
+
+ }
+
@Test
public void testPlainTextSpecifyingMimeType() throws Exception {
ExtractingRequestHandler handler = (ExtractingRequestHandler) h.getCore().getRequestHandler("/update/extract");
@@ -612,7 +680,9 @@ public class ExtractingRequestHandlerTes
assertQ(req("wdf_nocase:\"Test password protected word doc\""), "//*[@numFound='2']");
}
- SolrQueryResponse loadLocal(String filename, String... args) throws Exception {
+ SolrQueryResponse loadLocalFromHandler(String handler, String filename,
+ String... args) throws Exception {
+
LocalSolrQueryRequest req = (LocalSolrQueryRequest) req(args);
try {
// TODO: stop using locally defined streams once stream.file and
@@ -620,11 +690,15 @@ public class ExtractingRequestHandlerTes
List<ContentStream> cs = new ArrayList<>();
cs.add(new ContentStreamBase.FileStream(getFile(filename)));
req.setContentStreams(cs);
- return h.queryAndResponse("/update/extract", req);
+ return h.queryAndResponse(handler, req);
} finally {
req.close();
}
}
+ SolrQueryResponse loadLocal(String filename, String... args) throws Exception {
+ return loadLocalFromHandler("/update/extract", filename, args);
+ }
+
}
Modified: lucene/dev/branches/lucene2878/solr/core/src/java/org/apache/solr/cloud/ZkController.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/java/org/apache/solr/cloud/ZkController.java?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/java/org/apache/solr/cloud/ZkController.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/java/org/apache/solr/cloud/ZkController.java Fri Dec 5 15:24:11 2014
@@ -24,6 +24,7 @@ import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.URLEncoder;
import java.net.UnknownHostException;
+import java.nio.charset.StandardCharsets;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collection;
@@ -2010,15 +2011,17 @@ public final class ZkController {
Map<String,Object> stateObj = null;
if (stateData != null && stateData.length > 0) {
- Object parsedJson = ZkStateReader.fromJSON(stateData);
- if (parsedJson instanceof Map) {
- stateObj = (Map<String,Object>)parsedJson;
- } else if (parsedJson instanceof String) {
- // old format still in ZK
- stateObj = new LinkedHashMap<>();
- stateObj.put("state", (String)parsedJson);
+ // TODO: Remove later ... this is for upgrading from 4.8.x to 4.10.3 (see: SOLR-6732)
+ if (stateData[0] == (byte)'{') {
+ Object parsedJson = ZkStateReader.fromJSON(stateData);
+ if (parsedJson instanceof Map) {
+ stateObj = (Map<String,Object>)parsedJson;
+ } else {
+ throw new SolrException(ErrorCode.SERVER_ERROR, "Leader-initiated recovery state data is invalid! "+parsedJson);
+ }
} else {
- throw new SolrException(ErrorCode.SERVER_ERROR, "Leader-initiated recovery state data is invalid! "+parsedJson);
+ // old format still in ZK
+ stateObj = ZkNodeProps.makeMap("state", new String(stateData, StandardCharsets.UTF_8));
}
}
@@ -2051,7 +2054,7 @@ public final class ZkController {
log.warn(exc.getMessage(), exc);
}
if (stateObj == null)
- stateObj = new LinkedHashMap<>();
+ stateObj = ZkNodeProps.makeMap();
stateObj.put("state", state);
// only update the createdBy value if its not set
Modified: lucene/dev/branches/lucene2878/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java Fri Dec 5 15:24:11 2014
@@ -17,6 +17,21 @@
package org.apache.solr.handler.component;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
import org.apache.lucene.index.IndexReaderContext;
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.ReaderUtil;
@@ -90,22 +105,6 @@ import org.apache.solr.search.grouping.e
import org.apache.solr.search.grouping.endresulttransformer.SimpleEndResultTransformer;
import org.apache.solr.util.SolrPluginUtils;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.regex.Pattern;
-
/**
* TODO!
*
@@ -845,51 +844,33 @@ public class QueryComponent extends Sear
boolean shardQueryIncludeScore = (rb.getFieldFlags() & SolrIndexSearcher.GET_SCORES) != 0 || rb.getSortSpec().includesScore();
if (distribSinglePass) {
- String fl = rb.req.getParams().get(CommonParams.FL);
- if (fl == null) {
- if (fields.getRequestedFieldNames() == null && fields.wantsAllFields()) {
- fl = "*";
- } else {
- fl = "";
- for (String s : fields.getRequestedFieldNames()) {
- fl += s + ",";
- }
- }
- }
- if (!fields.wantsField(keyFieldName)) {
- // the user has not requested the unique key but
- // we still need to add it otherwise mergeIds can't work
- if (fl.endsWith(",")) {
- fl += keyFieldName;
- } else {
- fl += "," + keyFieldName;
- }
- }
- sreq.params.set(CommonParams.FL, updateFl(fl, shardQueryIncludeScore));
- } else {
- // in this first phase, request only the unique key field and any fields needed for merging.
- if (shardQueryIncludeScore) {
- sreq.params.set(CommonParams.FL, keyFieldName + ",score");
+ String[] fls = rb.req.getParams().getParams(CommonParams.FL);
+ if (fls != null && fls.length > 0 && (fls.length != 1 || !fls[0].isEmpty())) {
+ // If the outer request contains actual FL's use them...
+ sreq.params.set(CommonParams.FL, fls);
} else {
- sreq.params.set(CommonParams.FL, keyFieldName);
+ // ... else we need to explicitly ask for all fields, because we are going to add
+ // additional fields below
+ sreq.params.set(CommonParams.FL, "*");
}
}
+ StringBuilder additionalFL = new StringBuilder();
+ boolean additionalAdded = false;
+ if (!distribSinglePass || !fields.wantsField(keyFieldName))
+ additionalAdded = addFL(additionalFL, keyFieldName, additionalAdded);
+ if ((!distribSinglePass || !fields.wantsScore()) && shardQueryIncludeScore)
+ additionalAdded = addFL(additionalFL, "score", additionalAdded);
+ if (additionalAdded) sreq.params.add(CommonParams.FL, additionalFL.toString());
rb.addRequest(this, sreq);
}
-
-
- String updateFl(String originalFields, boolean includeScoreIfMissing) {
- if (includeScoreIfMissing && !scorePattern.matcher(originalFields).find()) {
- return originalFields + ",score";
- } else {
- return originalFields;
- }
+
+ private boolean addFL(StringBuilder fl, String field, boolean additionalAdded) {
+ if (additionalAdded) fl.append(",");
+ fl.append(field);
+ return true;
}
- private static final Pattern scorePattern = Pattern.compile("\\bscore\\b");
-
-
private void mergeIds(ResponseBuilder rb, ShardRequest sreq) {
List<MergeStrategy> mergeStrategies = rb.getMergeStrategies();
if(mergeStrategies != null) {
@@ -1263,6 +1244,10 @@ public class QueryComponent extends Sear
if (sdoc != null) {
if (returnScores) {
doc.setField("score", sdoc.score);
+ } else {
+ // Score might have been added (in createMainQuery) to shard-requests (and therefore in shard-response-docs)
+ // Remove score if the outer request did not ask for it returned
+ doc.remove("score");
}
if (removeKeyField) {
doc.removeFields(keyFieldName);
@@ -1323,6 +1308,31 @@ public class QueryComponent extends Sear
throw new UnsupportedOperationException();
}
+ @Override
+ public int startPosition() throws IOException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public int endPosition() throws IOException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public int startOffset() throws IOException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public int endOffset() throws IOException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public BytesRef getPayload() throws IOException {
+ throw new UnsupportedOperationException();
+ }
+
@Override
public int nextDoc() throws IOException {
throw new UnsupportedOperationException();
Modified: lucene/dev/branches/lucene2878/solr/core/src/java/org/apache/solr/store/blockcache/CachedIndexOutput.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/java/org/apache/solr/store/blockcache/CachedIndexOutput.java?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/java/org/apache/solr/store/blockcache/CachedIndexOutput.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/java/org/apache/solr/store/blockcache/CachedIndexOutput.java Fri Dec 5 15:24:11 2014
@@ -37,7 +37,7 @@ public class CachedIndexOutput extends R
public CachedIndexOutput(BlockDirectory directory, IndexOutput dest,
int blockSize, String name, Cache cache, int bufferSize) {
- super(bufferSize);
+ super("dest=" + dest + " name=" + name, bufferSize);
this.directory = directory;
this.dest = dest;
this.blockSize = blockSize;
Modified: lucene/dev/branches/lucene2878/solr/core/src/java/org/apache/solr/store/blockcache/ReusedBufferedIndexOutput.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/java/org/apache/solr/store/blockcache/ReusedBufferedIndexOutput.java?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/java/org/apache/solr/store/blockcache/ReusedBufferedIndexOutput.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/java/org/apache/solr/store/blockcache/ReusedBufferedIndexOutput.java Fri Dec 5 15:24:11 2014
@@ -43,11 +43,12 @@ public abstract class ReusedBufferedInde
private final Store store;
- public ReusedBufferedIndexOutput() {
- this(BUFFER_SIZE);
+ public ReusedBufferedIndexOutput(String resourceDescription) {
+ this(resourceDescription, BUFFER_SIZE);
}
- public ReusedBufferedIndexOutput(int bufferSize) {
+ public ReusedBufferedIndexOutput(String resourceDescription, int bufferSize) {
+ super(resourceDescription);
checkBufferSize(bufferSize);
this.bufferSize = bufferSize;
store = BufferStore.instance(bufferSize);
Modified: lucene/dev/branches/lucene2878/solr/core/src/java/org/apache/solr/store/hdfs/HdfsFileWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/java/org/apache/solr/store/hdfs/HdfsFileWriter.java?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/java/org/apache/solr/store/hdfs/HdfsFileWriter.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/java/org/apache/solr/store/hdfs/HdfsFileWriter.java Fri Dec 5 15:24:11 2014
@@ -38,7 +38,7 @@ public class HdfsFileWriter extends Outp
public static final int BUFFER_SIZE = 16384;
public HdfsFileWriter(FileSystem fileSystem, Path path) throws IOException {
- super(getOutputStream(fileSystem, path), BUFFER_SIZE);
+ super("fileSystem=" + fileSystem + " path=" + path, getOutputStream(fileSystem, path), BUFFER_SIZE);
}
private static final OutputStream getOutputStream(FileSystem fileSystem, Path path) throws IOException {
Modified: lucene/dev/branches/lucene2878/solr/core/src/java/org/apache/solr/update/processor/RunUpdateProcessorFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/java/org/apache/solr/update/processor/RunUpdateProcessorFactory.java?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/java/org/apache/solr/update/processor/RunUpdateProcessorFactory.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/java/org/apache/solr/update/processor/RunUpdateProcessorFactory.java Fri Dec 5 15:24:11 2014
@@ -94,7 +94,10 @@ class RunUpdateProcessor extends UpdateR
{
updateHandler.commit(cmd);
super.processCommit(cmd);
- changesSinceCommit = false;
+ if (!cmd.softCommit) {
+ // a hard commit means we don't need to flush the transaction log
+ changesSinceCommit = false;
+ }
}
/**
Modified: lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig.xml?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig.xml (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig.xml Fri Dec 5 15:24:11 2014
@@ -482,6 +482,21 @@
</lst>
</requestHandler>
+ <requestHandler name="/search-facet-def" class="solr.SearchHandler" >
+ <lst name="defaults">
+ <str name="facet.field">foo_s</str>
+ </lst>
+ <lst name="appends">
+ <str name="facet.query">foo_s:bar</str>
+ </lst>
+ </requestHandler>
+ <requestHandler name="/search-facet-invariants" class="solr.SearchHandler" >
+ <lst name="invariants">
+ <str name="facet.field">foo_s</str>
+ <str name="facet.query">foo_s:bar</str>
+ </lst>
+ </requestHandler>
+
<admin>
<defaultQuery>solr</defaultQuery>
<gettableFiles>solrconfig.xml schema.xml admin-extra.html</gettableFiles>
Modified: lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/cloud/HttpPartitionTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/cloud/HttpPartitionTest.java?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/cloud/HttpPartitionTest.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/cloud/HttpPartitionTest.java Fri Dec 5 15:24:11 2014
@@ -18,6 +18,7 @@ package org.apache.solr.cloud;
*/
import java.io.File;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -40,9 +41,12 @@ import org.apache.solr.common.SolrInputD
import org.apache.solr.common.cloud.ClusterState;
import org.apache.solr.common.cloud.Replica;
import org.apache.solr.common.cloud.Slice;
+import org.apache.solr.common.cloud.SolrZkClient;
import org.apache.solr.common.cloud.ZkCoreNodeProps;
import org.apache.solr.common.cloud.ZkStateReader;
import org.apache.solr.common.util.NamedList;
+import org.apache.solr.core.CoreContainer;
+import org.apache.solr.servlet.SolrDispatchFilter;
import org.junit.After;
import org.junit.Before;
import org.slf4j.Logger;
@@ -104,6 +108,8 @@ public class HttpPartitionTest extends A
public void doTest() throws Exception {
waitForThingsToLevelOut(30000);
+ testLeaderInitiatedRecoveryCRUD();
+
// test a 1x2 collection
testRf2();
@@ -122,7 +128,59 @@ public class HttpPartitionTest extends A
log.info("HttpParitionTest succeeded ... shutting down now!");
}
-
+
+ /**
+ * Tests handling of lir state znodes.
+ */
+ protected void testLeaderInitiatedRecoveryCRUD() throws Exception {
+ String testCollectionName = "c8n_crud_1x2";
+ String shardId = "shard1";
+ createCollection(testCollectionName, 1, 2, 1);
+ cloudClient.setDefaultCollection(testCollectionName);
+
+ Replica leader =
+ cloudClient.getZkStateReader().getLeaderRetry(testCollectionName, shardId);
+ JettySolrRunner leaderJetty = getJettyOnPort(getReplicaPort(leader));
+
+ CoreContainer cores = ((SolrDispatchFilter)leaderJetty.getDispatchFilter().getFilter()).getCores();
+ ZkController zkController = cores.getZkController();
+ assertNotNull("ZkController is null", zkController);
+
+ Replica notLeader =
+ ensureAllReplicasAreActive(testCollectionName, shardId, 1, 2, maxWaitSecsToSeeAllActive).get(0);
+
+ ZkCoreNodeProps replicaCoreNodeProps = new ZkCoreNodeProps(notLeader);
+ String replicaUrl = replicaCoreNodeProps.getCoreUrl();
+
+ assertTrue(!zkController.isReplicaInRecoveryHandling(replicaUrl));
+ assertTrue(zkController.ensureReplicaInLeaderInitiatedRecovery(testCollectionName, shardId, replicaUrl, replicaCoreNodeProps, false));
+ assertTrue(zkController.isReplicaInRecoveryHandling(replicaUrl));
+ Map<String,Object> lirStateMap = zkController.getLeaderInitiatedRecoveryStateObject(testCollectionName, shardId, notLeader.getName());
+ assertNotNull(lirStateMap);
+ assertEquals(ZkStateReader.DOWN, lirStateMap.get("state"));
+ zkController.removeReplicaFromLeaderInitiatedRecoveryHandling(replicaUrl);
+ assertTrue(!zkController.isReplicaInRecoveryHandling(replicaUrl));
+
+ // test old non-json format handling
+ SolrZkClient zkClient = zkController.getZkClient();
+ String znodePath = zkController.getLeaderInitiatedRecoveryZnodePath(testCollectionName, shardId, notLeader.getName());
+ zkClient.setData(znodePath, "down".getBytes(StandardCharsets.UTF_8), true);
+ lirStateMap = zkController.getLeaderInitiatedRecoveryStateObject(testCollectionName, shardId, notLeader.getName());
+ assertNotNull(lirStateMap);
+ assertEquals(ZkStateReader.DOWN, lirStateMap.get("state"));
+ zkClient.delete(znodePath, -1, false);
+
+ // try to clean up
+ try {
+ CollectionAdminRequest req = new CollectionAdminRequest.Delete();
+ req.setCollectionName(testCollectionName);
+ req.process(cloudClient);
+ } catch (Exception e) {
+ // don't fail the test
+ log.warn("Could not delete collection {} after test completed", testCollectionName);
+ }
+ }
+
protected void testRf2() throws Exception {
// create a collection that has 1 shard but 2 replicas
String testCollectionName = "c8n_1x2";
Modified: lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/handler/component/DistributedQueryComponentOptimizationTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/handler/component/DistributedQueryComponentOptimizationTest.java?rev=1643326&r1=1643325&r2=1643326&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/handler/component/DistributedQueryComponentOptimizationTest.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/handler/component/DistributedQueryComponentOptimizationTest.java Fri Dec 5 15:24:11 2014
@@ -20,7 +20,9 @@ package org.apache.solr.handler.componen
import org.apache.solr.BaseDistributedSearchTestCase;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.response.QueryResponse;
+import org.apache.solr.cloud.AbstractFullDistribZkTestBase;
import org.apache.solr.common.params.ModifiableSolrParams;
+import org.apache.solr.common.params.ShardParams;
import org.apache.solr.common.util.SimpleOrderedMap;
import org.junit.BeforeClass;
@@ -115,6 +117,17 @@ public class DistributedQueryComponentOp
verifySinglePass("q", "id:19", "fl", "id,*a_sS", "sort", "payload asc", "distrib.singlePass", "true");
verifySinglePass("q", "id:19", "fl", "id,dynamic,cat*", "sort", "payload asc", "distrib.singlePass", "true");
+
+ // see SOLR-6795, distrib.singlePass=true would return score even when not asked for
+ handle.clear();
+ handle.put("timestamp", SKIPVAL);
+ handle.put("_version_", SKIPVAL);
+ // we don't to compare maxScore because most distributed requests return it anyway (just because they have score already)
+ handle.put("maxScore", SKIPVAL);
+ query("q", "{!func}id", ShardParams.DISTRIB_SINGLE_PASS, "true");
+
+ // fix for a bug where not all fields are returned if using multiple fl parameters, see SOLR-6796
+ query("q","*:*", "fl", "id", "fl","dynamic","sort","payload desc", ShardParams.DISTRIB_SINGLE_PASS, "true");
}
private void verifySinglePass(String... q) throws SolrServerException {