You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2015/07/08 13:43:22 UTC
svn commit: r1689847 - in /lucene/dev/trunk/solr: CHANGES.txt bin/solr
bin/solr.cmd
Author: shaie
Date: Wed Jul 8 11:43:22 2015
New Revision: 1689847
URL: http://svn.apache.org/r1689847
Log:
SOLR-7748: Fix bin/solr to work on IBM J9
Modified:
lucene/dev/trunk/solr/CHANGES.txt
lucene/dev/trunk/solr/bin/solr
lucene/dev/trunk/solr/bin/solr.cmd
Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1689847&r1=1689846&r2=1689847&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Wed Jul 8 11:43:22 2015
@@ -212,6 +212,8 @@ Bug Fixes
* SOLR-7741: Add missing fields to SolrIndexerConfig.toMap
(Mike Drob, Christine Poerschke via Ramkumar Aiyengar)
+
+* SOLR-7748: Fix bin/solr to start on IBM J9. (Shai Erera)
* SOLR-7143: MoreLikeThis Query parser should handle multiple field names
(Jens Wille, Anshum Gupta)
Modified: lucene/dev/trunk/solr/bin/solr
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/bin/solr?rev=1689847&r1=1689846&r2=1689847&view=diff
==============================================================================
--- lucene/dev/trunk/solr/bin/solr (original)
+++ lucene/dev/trunk/solr/bin/solr Wed Jul 8 11:43:22 2015
@@ -1236,9 +1236,20 @@ if [ -f "$SOLR_LOGS_DIR/solr_gc.log" ];
mv "$SOLR_LOGS_DIR/solr_gc.log" "$SOLR_LOGS_DIR/solr_gc_log_$(date +"%Y%m%d_%H%M")"
fi
+java_ver_out=`echo "$("$JAVA" -version 2>&1)"`
+JAVA_VERSION=`echo $java_ver_out | grep "java version" | awk '{ print substr($3, 2, length($3)-2); }'`
+JAVA_VENDOR="Oracle"
+if [ "`echo $java_ver_out | grep -i "IBM J9"`" != "" ]; then
+ JAVA_VENDOR="IBM J9"
+fi
+
# 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_LOGS_DIR/solr_gc.log")
+ gc_log_flag="-Xloggc"
+ if [ "$JAVA_VENDOR" == "IBM J9" ]; then
+ gc_log_flag="-Xverbosegclog"
+ fi
+ GC_LOG_OPTS=($GC_LOG_OPTS "$gc_log_flag:$SOLR_LOGS_DIR/solr_gc.log")
else
GC_LOG_OPTS=()
fi
@@ -1316,14 +1327,15 @@ function launch_solr() {
GC_TUNE=($GC_TUNE)
# deal with Java version specific GC and other flags
- JAVA_VERSION=`echo "$("$JAVA" -version 2>&1)" | grep "java version" | awk '{ print substr($3, 2, length($3)-2); }'`
if [ "${JAVA_VERSION:0:3}" == "1.7" ]; then
# Specific Java version hacking
GC_TUNE+=('-XX:CMSFullGCsBeforeCompaction=1' '-XX:CMSTriggerPermRatio=80')
- JAVA_MINOR_VERSION=${JAVA_VERSION:(-2)}
- if [[ $JAVA_MINOR_VERSION -ge 40 && $JAVA_MINOR_VERSION -le 51 ]]; then
- GC_TUNE+=('-XX:-UseSuperWord')
- echo -e "\nWARNING: Java version $JAVA_VERSION has known bugs with Lucene and requires the -XX:-UseSuperWord flag. Please consider upgrading your JVM.\n"
+ if [ "$JAVA_VENDOR" != "IBM J9" ]; then
+ JAVA_MINOR_VERSION=${JAVA_VERSION:(-2)}
+ if [[ $JAVA_MINOR_VERSION -ge 40 && $JAVA_MINOR_VERSION -le 51 ]]; then
+ GC_TUNE+=('-XX:-UseSuperWord')
+ echo -e "\nWARNING: Java version $JAVA_VERSION has known bugs with Lucene and requires the -XX:-UseSuperWord flag. Please consider upgrading your JVM.\n"
+ fi
fi
fi
Modified: lucene/dev/trunk/solr/bin/solr.cmd
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/bin/solr.cmd?rev=1689847&r1=1689846&r2=1689847&view=diff
==============================================================================
--- lucene/dev/trunk/solr/bin/solr.cmd (original)
+++ lucene/dev/trunk/solr/bin/solr.cmd Wed Jul 8 11:43:22 2015
@@ -78,7 +78,7 @@ IF NOT EXIST "%JAVA_HOME%\bin\java.exe"
goto err
)
set "JAVA=%JAVA_HOME%\bin\java"
-CALL :resolve_java_version
+CALL :resolve_java_info
IF !JAVA_MAJOR_VERSION! LSS 8 (
set "SCRIPT_ERROR=Java 1.8 or later is required to run Solr. Current Java version is: !JAVA_VERSION_INFO!"
goto err
@@ -895,6 +895,12 @@ IF NOT EXIST "%SOLR_SERVER_DIR%\tmp" (
mkdir "%SOLR_SERVER_DIR%\tmp"
)
+IF "%JAVA_VENDOR%" == "IBM J9" (
+ set "GCLOG_OPT=-Xverbosegclog"
+) else (
+ set "GCLOG_OPT=-Xloggc"
+)
+
@echo.
CALL :safe_echo "Starting Solr on port %SOLR_PORT% from %SOLR_SERVER_DIR%"
@echo.
@@ -902,10 +908,10 @@ IF "%FG%"=="1" (
REM run solr in the foreground
title "Solr-%SOLR_PORT%"
echo %SOLR_PORT%>"%SOLR_TIP%"\bin\solr-%SOLR_PORT%.port
- "%JAVA%" %SERVEROPT% -Xss256k %SOLR_JAVA_MEM% %START_OPTS% -Xloggc:"!SOLR_LOGS_DIR!"/solr_gc.log -Dlog4j.configuration="%LOG4J_CONFIG%" -DSTOP.PORT=!STOP_PORT! -DSTOP.KEY=%STOP_KEY% ^
+ "%JAVA%" %SERVEROPT% -Xss256k %SOLR_JAVA_MEM% %START_OPTS% %GCLOG_OPT%:"!SOLR_LOGS_DIR!"/solr_gc.log -Dlog4j.configuration="%LOG4J_CONFIG%" -DSTOP.PORT=!STOP_PORT! -DSTOP.KEY=%STOP_KEY% ^
-Djetty.port=%SOLR_PORT% -Dsolr.solr.home="%SOLR_HOME%" -Dsolr.install.dir="%SOLR_TIP%" -Djetty.home="%SOLR_SERVER_DIR%" -Djava.io.tmpdir="%SOLR_SERVER_DIR%\tmp" -jar start.jar "%SOLR_JETTY_CONFIG%"
) ELSE (
- START /B "Solr-%SOLR_PORT%" /D "%SOLR_SERVER_DIR%" "%JAVA%" %SERVEROPT% -Xss256k %SOLR_JAVA_MEM% %START_OPTS% -Xloggc:"!SOLR_LOGS_DIR!"/solr_gc.log -Dlog4j.configuration="%LOG4J_CONFIG%" -DSTOP.PORT=!STOP_PORT! -DSTOP.KEY=%STOP_KEY% ^
+ START /B "Solr-%SOLR_PORT%" /D "%SOLR_SERVER_DIR%" "%JAVA%" %SERVEROPT% -Xss256k %SOLR_JAVA_MEM% %START_OPTS% %GCLOG_OPT%:"!SOLR_LOGS_DIR!"/solr_gc.log -Dlog4j.configuration="%LOG4J_CONFIG%" -DSTOP.PORT=!STOP_PORT! -DSTOP.KEY=%STOP_KEY% ^
-Djetty.port=%SOLR_PORT% -Dsolr.solr.home="%SOLR_HOME%" -Dsolr.install.dir="%SOLR_TIP%" -Djetty.home="%SOLR_SERVER_DIR%" -Djava.io.tmpdir="%SOLR_SERVER_DIR%\tmp" -jar start.jar "%SOLR_JETTY_CONFIG%" > "!SOLR_LOGS_DIR!\solr-%SOLR_PORT%-console.log"
echo %SOLR_PORT%>"%SOLR_TIP%"\bin\solr-%SOLR_PORT%.port
)
@@ -1384,25 +1390,50 @@ ENDLOCAL
GOTO :eof
REM Tests what Java we have and sets some global variables
-:resolve_java_version
+:resolve_java_info
+
+CALL :resolve_java_vendor
set JAVA_MAJOR_VERSION=0
set JAVA_VERSION_INFO=
set JAVA_BUILD=0
+
"%JAVA%" -version 2>&1 | findstr /i "version" > javavers
set /p JAVAVEROUT=<javavers
del javavers
-for /f "tokens=3" %%g in ("!JAVAVEROUT!") do (
- set JAVA_VERSION_INFO=%%g
+
+for /f "tokens=3" %%a in ("!JAVAVEROUT!") do (
+ set JAVA_VERSION_INFO=%%a
+ REM Remove surrounding quotes
set JAVA_VERSION_INFO=!JAVA_VERSION_INFO:"=!
- for /f "delims=_ tokens=1-3" %%v in ("!JAVA_VERSION_INFO!") do (
- set JAVA_MAJOR=!JAVA_VERSION_INFO:~0,3!
- set /a JAVA_BUILD=%%w
- set /a JAVA_MAJOR_VERSION=!JAVA_MAJOR:~2,1!*1
+
+ REM Extract the major Java version, e.g. 7, 8, 9, 10 ...
+ for /f "tokens=2 delims=." %%a in ("!JAVA_VERSION_INFO!") do (
+ set JAVA_MAJOR_VERSION=%%a
+ )
+
+ REM Don't look for "_{build}" if we're on IBM J9.
+ if NOT "%JAVA_VENDOR%" == "IBM J9" (
+ for /f "delims=_ tokens=2" %%a in ("!JAVA_VERSION_INFO!") do (
+ set /a JAVA_BUILD=%%a
+ )
)
)
GOTO :eof
+REM Set which JVM vendor we have
+:resolve_java_vendor
+set "JAVA_VENDOR=Oracle"
+%JAVA% -version 2>&1 | findstr /i "IBM J9" > javares
+set /p JAVA_VENDOR_OUT=<javares
+del javares
+if NOT "%JAVA_VENDOR_OUT%" == "" (
+ set "JAVA_VENDOR=IBM J9"
+)
+
+set JAVA_VENDOR_OUT=
+GOTO :eof
+
REM Safe echo which does not mess with () in strings
:safe_echo
set "eout=%1"