SOLR-9046: Fix solr.cmd that wrongly assumes Jetty will always listen on 0.0.0.0

This commit is contained in:
Uwe Schindler 2016-04-27 23:59:51 +02:00
parent 9ab76a1e41
commit 3e6de6059f
3 changed files with 54 additions and 59 deletions

View File

@ -156,6 +156,9 @@ Bug Fixes
* SOLR-9016: Fix SolrIdentifierValidator to not allow empty identifiers. (Shai Erera) * SOLR-9016: Fix SolrIdentifierValidator to not allow empty identifiers. (Shai Erera)
* SOLR-9046: Fix solr.cmd that wrongly assumes Jetty will always listen on 0.0.0.0.
(Bram Van Dam, Uwe Schindler)
Optimizations Optimizations
---------------------- ----------------------
* SOLR-8722: Don't force a full ZkStateReader refresh on every Overseer operation. * SOLR-8722: Don't force a full ZkStateReader refresh on every Overseer operation.

View File

@ -681,30 +681,24 @@ IF "%SCRIPT_CMD%"=="stop" (
set found_it=0 set found_it=0
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= set SOME_SOLR_PORT=
For /F "Delims=" %%J In ('type "%SOLR_TIP%\bin\%%i"') do set SOME_SOLR_PORT=%%~J For /F "delims=" %%J In ('type "%SOLR_TIP%\bin\%%i"') do set SOME_SOLR_PORT=%%~J
if NOT "!SOME_SOLR_PORT!"=="" ( if NOT "!SOME_SOLR_PORT!"=="" (
for /f "tokens=2,5" %%j in ('netstat -aon ^| find "TCP " ^| find ":!SOME_SOLR_PORT! "') do ( for /f "tokens=2,5" %%j in ('netstat -aon ^| find "TCP " ^| find ":0 " ^| find ":!SOME_SOLR_PORT! "') do (
@REM j is the ip:port and k is the pid @REM j is the ip:port and k is the pid
IF NOT "%%k"=="0" ( IF NOT "%%k"=="0" (
@REM split the ip:port var by colon to see if the ip is 0.0.0.0 IF "%%j"=="%SOLR_JETTY_HOST%:!SOME_SOLR_PORT!" (
for /f "delims=: tokens=1,2" %%x IN ("%%j") do ( set found_it=1
@REM x is the ip @echo Stopping Solr process %%k running on port !SOME_SOLR_PORT!
IF "%%x"=="0.0.0.0" ( set /A STOP_PORT=!SOME_SOLR_PORT! - 1000
set found_it=1 "%JAVA%" %SOLR_SSL_OPTS% -Djetty.home="%SOLR_SERVER_DIR%" -jar "%SOLR_SERVER_DIR%\start.jar" STOP.PORT=!STOP_PORT! STOP.KEY=%STOP_KEY% --stop
@echo Stopping Solr process %%k running on port !SOME_SOLR_PORT! del "%SOLR_TIP%"\bin\solr-!SOME_SOLR_PORT!.port
set /A STOP_PORT=!SOME_SOLR_PORT! - 1000 timeout /T 5
"%JAVA%" %SOLR_SSL_OPTS% -Djetty.home="%SOLR_SERVER_DIR%" -jar "%SOLR_SERVER_DIR%\start.jar" STOP.PORT=!STOP_PORT! STOP.KEY=%STOP_KEY% --stop REM Kill it if it is still running after the graceful shutdown
del "%SOLR_TIP%"\bin\solr-!SOME_SOLR_PORT!.port For /f "tokens=2,5" %%M in ('netstat -nao ^| find "TCP " ^| find ":0 " ^| find ":!SOME_SOLR_PORT! "') do (
timeout /T 5 IF "%%N"=="%%k" (
REM Kill it if it is still running after the graceful shutdown IF "%%M"=="%SOLR_JETTY_HOST%:!SOME_SOLR_PORT!" (
For /f "tokens=2,5" %%M in ('netstat -nao ^| find "TCP " ^| find ":!SOME_SOLR_PORT! "') do ( @echo Forcefully killing process %%N
IF "%%N"=="%%k" ( taskkill /f /PID %%N
for /f "delims=: tokens=1,2" %%a IN ("%%M") do (
IF "%%a"=="0.0.0.0" (
@echo Forcefully killing process %%N
taskkill /f /PID %%N
)
)
) )
) )
) )
@ -720,25 +714,21 @@ IF "%SCRIPT_CMD%"=="stop" (
) )
) ELSE ( ) ELSE (
set found_it=0 set found_it=0
For /f "tokens=2,5" %%M in ('netstat -nao ^| find "TCP " ^| find ":%SOLR_PORT% "') do ( For /f "tokens=2,5" %%M in ('netstat -nao ^| find "TCP " ^| find ":0 " ^| find ":%SOLR_PORT% "') do (
IF NOT "%%N"=="0" ( IF NOT "%%N"=="0" (
for /f "delims=: tokens=1,2" %%x IN ("%%M") do ( IF "%%M"=="%SOLR_JETTY_HOST%:%SOLR_PORT%" (
IF "%%x"=="0.0.0.0" ( set found_it=1
set found_it=1 @echo Stopping Solr process %%N running on port %SOLR_PORT%
@echo Stopping Solr process %%N running on port %SOLR_PORT% set /A STOP_PORT=%SOLR_PORT% - 1000
set /A STOP_PORT=%SOLR_PORT% - 1000 "%JAVA%" %SOLR_SSL_OPTS% -Djetty.home="%SOLR_SERVER_DIR%" -jar "%SOLR_SERVER_DIR%\start.jar" "%SOLR_JETTY_CONFIG%" STOP.PORT=!STOP_PORT! STOP.KEY=%STOP_KEY% --stop
"%JAVA%" %SOLR_SSL_OPTS% -Djetty.home="%SOLR_SERVER_DIR%" -jar "%SOLR_SERVER_DIR%\start.jar" "%SOLR_JETTY_CONFIG%" STOP.PORT=!STOP_PORT! STOP.KEY=%STOP_KEY% --stop del "%SOLR_TIP%"\bin\solr-%SOLR_PORT%.port
del "%SOLR_TIP%"\bin\solr-%SOLR_PORT%.port timeout /T 5
timeout /T 5 REM Kill it if it is still running after the graceful shutdown
REM Kill it if it is still running after the graceful shutdown For /f "tokens=2,5" %%j in ('netstat -nao ^| find "TCP " ^| find ":0 " ^| find ":%SOLR_PORT% "') do (
For /f "tokens=2,5" %%j in ('netstat -nao ^| find "TCP " ^| find ":%SOLR_PORT% "') do ( IF "%%N"=="%%k" (
IF "%%N"=="%%k" ( IF "%%j"=="%SOLR_JETTY_HOST%:%SOLR_PORT%" (
for /f "delims=: tokens=1,2" %%a IN ("%%j") do ( @echo Forcefully killing process %%N
IF "%%a"=="0.0.0.0" ( taskkill /f /PID %%N
@echo Forcefully killing process %%N
taskkill /f /PID %%N
)
)
) )
) )
) )
@ -758,13 +748,11 @@ IF "%STOP_PORT%"=="" set /A STOP_PORT=%SOLR_PORT% - 1000
IF "%SCRIPT_CMD%"=="start" ( IF "%SCRIPT_CMD%"=="start" (
REM see if Solr is already running using netstat REM see if Solr is already running using netstat
For /f "tokens=2,5" %%j in ('netstat -aon ^| find "TCP " ^| find ":%SOLR_PORT% "') do ( For /f "tokens=2,5" %%j in ('netstat -aon ^| find "TCP " ^| find ":0 " ^| find ":%SOLR_PORT% "') do (
IF NOT "%%k"=="0" ( IF NOT "%%k"=="0" (
for /f "delims=: tokens=1,2" %%x IN ("%%j") do ( IF "%%j"=="%SOLR_JETTY_HOST%:%SOLR_PORT%" (
IF "%%x"=="0.0.0.0" ( set "SCRIPT_ERROR=Process %%k is already listening on port %SOLR_PORT%. If this is Solr, please stop it first before starting (or use restart). If this is not Solr, then please choose a different port using -p PORT"
set "SCRIPT_ERROR=Process %%k is already listening on port %SOLR_PORT%. If this is Solr, please stop it first before starting (or use restart). If this is not Solr, then please choose a different port using -p PORT" goto err
goto err
)
) )
) )
) )
@ -954,18 +942,16 @@ for /f "usebackq" %%i in (`dir /b "%SOLR_TIP%\bin" ^| findstr /i "^solr-.*\.port
set SOME_SOLR_PORT= set SOME_SOLR_PORT=
For /F "Delims=" %%J In ('type "%SOLR_TIP%\bin\%%i"') do set SOME_SOLR_PORT=%%~J For /F "Delims=" %%J In ('type "%SOLR_TIP%\bin\%%i"') do set SOME_SOLR_PORT=%%~J
if NOT "!SOME_SOLR_PORT!"=="" ( if NOT "!SOME_SOLR_PORT!"=="" (
for /f "tokens=2,5" %%j in ('netstat -aon ^| find "TCP " ^| find ":!SOME_SOLR_PORT! "') do ( for /f "tokens=2,5" %%j in ('netstat -aon ^| find "TCP " ^| find ":0 " ^| find ":!SOME_SOLR_PORT! "') do (
IF NOT "%%k"=="0" ( IF NOT "%%k"=="0" (
for /f "delims=: tokens=1,2" %%x IN ("%%j") do ( if "%%j"=="%SOLR_JETTY_HOST%:!SOME_SOLR_PORT!" (
if "%%x"=="0.0.0.0" ( @echo.
@echo. set has_info=1
set has_info=1 echo Found Solr process %%k running on port !SOME_SOLR_PORT!
echo Found Solr process %%k running on port !SOME_SOLR_PORT! "%JAVA%" %SOLR_SSL_OPTS% -Dsolr.install.dir="%SOLR_TIP%" -Dlog4j.configuration="file:%DEFAULT_SERVER_DIR%\scripts\cloud-scripts\log4j.properties" ^
"%JAVA%" %SOLR_SSL_OPTS% -Dsolr.install.dir="%SOLR_TIP%" -Dlog4j.configuration="file:%DEFAULT_SERVER_DIR%\scripts\cloud-scripts\log4j.properties" ^ -classpath "%DEFAULT_SERVER_DIR%\solr-webapp\webapp\WEB-INF\lib\*;%DEFAULT_SERVER_DIR%\lib\ext\*" ^
-classpath "%DEFAULT_SERVER_DIR%\solr-webapp\webapp\WEB-INF\lib\*;%DEFAULT_SERVER_DIR%\lib\ext\*" ^ org.apache.solr.util.SolrCLI status -solr !SOLR_URL_SCHEME!://%SOLR_TOOL_HOST%:!SOME_SOLR_PORT!/solr
org.apache.solr.util.SolrCLI status -solr !SOLR_URL_SCHEME!://%SOLR_TOOL_HOST%:!SOME_SOLR_PORT!/solr @echo.
@echo.
)
) )
) )
) )
@ -1084,7 +1070,7 @@ if "!CREATE_PORT!"=="" (
set SOME_SOLR_PORT= set SOME_SOLR_PORT=
For /F "Delims=" %%J In ('type "%SOLR_TIP%\bin\%%i"') do set SOME_SOLR_PORT=%%~J For /F "Delims=" %%J In ('type "%SOLR_TIP%\bin\%%i"') do set SOME_SOLR_PORT=%%~J
if NOT "!SOME_SOLR_PORT!"=="" ( if NOT "!SOME_SOLR_PORT!"=="" (
for /f "tokens=2,5" %%j in ('netstat -aon ^| find "TCP " ^| find ":!SOME_SOLR_PORT! "') do ( for /f "tokens=2,5" %%j in ('netstat -aon ^| find "TCP " ^| find ":0 " ^| find ":!SOME_SOLR_PORT! "') do (
IF NOT "%%k"=="0" set CREATE_PORT=!SOME_SOLR_PORT! IF NOT "%%k"=="0" set CREATE_PORT=!SOME_SOLR_PORT!
) )
) )
@ -1152,7 +1138,7 @@ if "!DELETE_PORT!"=="" (
set SOME_SOLR_PORT= set SOME_SOLR_PORT=
For /F "Delims=" %%J In ('type "%SOLR_TIP%\bin\%%i"') do set SOME_SOLR_PORT=%%~J For /F "Delims=" %%J In ('type "%SOLR_TIP%\bin\%%i"') do set SOME_SOLR_PORT=%%~J
if NOT "!SOME_SOLR_PORT!"=="" ( if NOT "!SOME_SOLR_PORT!"=="" (
for /f "tokens=2,5" %%j in ('netstat -aon ^| find "TCP " ^| find ":!SOME_SOLR_PORT! "') do ( for /f "tokens=2,5" %%j in ('netstat -aon ^| find "TCP " ^| find ":0 " ^| find ":!SOME_SOLR_PORT! "') do (
IF NOT "%%k"=="0" set DELETE_PORT=!SOME_SOLR_PORT! IF NOT "%%k"=="0" set DELETE_PORT=!SOME_SOLR_PORT!
) )
) )

View File

@ -66,6 +66,12 @@ set ENABLE_REMOTE_JMX_OPTS=false
REM The script will use SOLR_PORT+10000 for the RMI_PORT or you can set it here REM The script will use SOLR_PORT+10000 for the RMI_PORT or you can set it here
REM set RMI_PORT=18983 REM set RMI_PORT=18983
REM Set the host interface to listen on. Jetty will listen on all interfaces (0.0.0.0) by default.
REM This must be an IPv4 ("a.b.c.d") or bracketed IPv6 ("[x::y]") address, not a hostname!
set SOLR_JETTY_HOST=0.0.0.0
set SOLR_OPTS=%SOLR_OPTS% -Djetty.host=%SOLR_JETTY_HOST%
REM Set the thread stack size REM Set the thread stack size
set SOLR_OPTS=%SOLR_OPTS% -Xss256k set SOLR_OPTS=%SOLR_OPTS% -Xss256k
@ -97,4 +103,4 @@ REM otherwise keep them commented and the above values will automatically be set
REM set SOLR_SSL_CLIENT_KEY_STORE= REM set SOLR_SSL_CLIENT_KEY_STORE=
REM set SOLR_SSL_CLIENT_KEY_STORE_PASSWORD= REM set SOLR_SSL_CLIENT_KEY_STORE_PASSWORD=
REM set SOLR_SSL_CLIENT_TRUST_STORE= REM set SOLR_SSL_CLIENT_TRUST_STORE=
REM setSOLR_SSL_CLIENT_TRUST_STORE_PASSWORD= REM setSOLR_SSL_CLIENT_TRUST_STORE_PASSWORD=