Mikael Sterner created SOLR-18336:
-------------------------------------
Summary: Start command waits for all running Solr processes on
Windows
Key: SOLR-18336
URL: https://issues.apache.org/jira/browse/SOLR-18336
Project: Solr
Issue Type: Bug
Components: cli
Affects Versions: 10.0
Reporter: Mikael Sterner
When using the Solr Control Script to start Solr 10.0.0 on Windows in User
Managed mode, it checks the status of all currently running Solr instances by
enumerating the PID files:
{noformat}
solr-10.0.0-slim\bin\solr.cmd start --user-managed -p 8981
Waiting up to 180 seconds to see Solr running on port 8981
Started Solr server on port 8981. Happy searching!
solr-10.0.0-slim\bin\solr.cmd start --user-managed -p 8982
Waiting up to 180 seconds to see Solr running on port 8981
Started Solr server on port 8981. Happy searching!
Waiting up to 180 seconds to see Solr running on port 8982
Started Solr server on port 8982. Happy searching!
{noformat}
In Solr 9.10.1 it only waits for the specified Solr instance:
{noformat}
solr-9.10.1-slim\bin\solr.cmd start -p 8981
Waiting up to 180 seconds to see Solr running on port 8981
Started Solr server on port 8981. Happy searching!
solr-9.10.1-slim\bin\solr.cmd start -p 8982
Waiting up to 180 seconds to see Solr running on port 8982
Started Solr server on port 8982. Happy searching!
{noformat}
This seems like a regression from SOLR-17685, where the simplified {{solr.cmd}}
script no longer passes in {{--solr-url}} to the status tool with commit
[fd42ecdcd55|https://github.com/apache/solr/pull/3223/changes/fd42ecdcd55f21e8398a0675a6f479b59fc61405].
(This makes it fall back to waiting for all Solr instances found in the PID
directory.)
A naive fix would be to only add {{-p %SOLR_PORT_LISTEN%}} to the status tool,
as in commit
[375b5be8fb3|https://github.com/apache/solr/pull/4710/changes/375b5be8fb3c2e796f79826d89985fda3614585a].
However, that still feels less robust than {{--solr-url}} as it relies on PID
files, and it also doesn't work if running with a non-loopback bind:
{noformat}
set SOLR_HOST_BIND=10.0.x.x
set SOLR_HOST_ADVERTISE=myhost.example.com
solr-10.0.0-slim\bin\solr.cmd start --user-managed -p 8981
Waiting up to 180 seconds to see Solr running on port 8981
ERROR: Solr at http://localhost:8981/solr did not come online within 180
seconds!
ERROR: Solr did not start or was not reachable. Check the logs for errors.
{noformat}
As compared to how it worked before:
{noformat}
set SOLR_HOST=myhost.example.com
set SOLR_JETTY_HOST=10.0.x.x
solr-9.10.1-slim\bin\solr.cmd start -p 8981
Waiting up to 180 seconds to see Solr running on port 8981
Started Solr server on port 8981. Happy searching!
{noformat}
Then it correctly passed {{--solr-url http://myhost.example.com:8981}} to the
status tool.
Fwiw, adding back the creation of a Solr URL based on {{SOLR_TOOL_HOST}} to the
script seems to fix the issue:
{noformat}
IF NOT "%SOLR_HOST_ADVERTISE%"=="" (
set SOLR_TOOL_HOST=%SOLR_HOST_ADVERTISE%
) ELSE (
set SOLR_TOOL_HOST=localhost
)
... --solr-url !SOLR_URL_SCHEME!://%SOLR_TOOL_HOST%:%SOLR_PORT_LISTEN%
{noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]