Jan Høydahl created SOLR-18652:
----------------------------------
Summary: bin/solr.cmd ignores --solr-home for examples, writing
the example into the installation directory
Key: SOLR-18652
URL: https://issues.apache.org/jira/browse/SOLR-18652
Project: Solr
Issue Type: Bug
Components: cli
Reporter: Jan Høydahl
*Found by CATS*, the cross-platform CLI test framework proposed in SOLR-18642 —
see [PR #5323|https://github.com/apache/solr/pull/5323]. A fix can land before
CATS is merged or after; if it lands first, please also drop the gate on
{{ExampleTest}} on that PR.
h3. The gap
{{bin/solr}} appends the resolved home to the arguments the example tool
receives ({{bin/solr:742}}):
{code}
PASS_TO_RUN_EXAMPLE+=("--solr-home" "$SOLR_HOME")
{code}
{{solr.cmd}}'s {{:set_solr_home_dir}} ({{solr.cmd:516\-534}}) sets
{{SOLR_HOME}} and jumps straight back to {{:parse_args}}. It never adds
anything to {{PASS_TO_RUN_EXAMPLE}}, and the {{run_example}} invocation at
{{solr.cmd:811}} therefore never carries the option.
h3. Why the environment does not rescue it
{{RunExampleTool}} falls back when the option is absent
({{RunExampleTool.java:594\-606}}):
{code:java}
if (solrHomeArg != null) {
solrHomeDir = Path.of(solrHomeArg);
} else {
String solrHomeProp = EnvUtils.getProperty("solr.home");
...
} else if ("cloud".equals(exampleType)) {
solrHomeDir = exampleDir.resolve("cloud");
{code}
That fallback reads {{solr.home}}, but {{SOLR_HOME}} is mapped to
*{{solr.solr.home}}* ({{EnvToSyspropMappings.properties:15}}), and
{{EnvUtils.getProperty}} only falls back from camelCase to dot-separated
spellings of the key it was given — it does not consult the environment. So
{{solr.home}} is unset however the user supplied the home, and the branch below
it wins.
h3. Result
On Windows, {{solr start \-e cloud \-\-solr\-home X}} silently ignores {{X}}
and writes the example into {{%SOLR_TIP%\example\cloud}} — inside the
installation. For a non-cloud example it lands in {{server\solr}} instead. The
user gets no warning that the directory they asked for was discarded, and a
read-only installation directory fails outright.
🤖 AI Assisted
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]