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"