From a86d50db808591eff7b47923641802a42aa30eec Mon Sep 17 00:00:00 2001 From: Christos Malliaridis Date: Wed, 18 Dec 2024 17:52:06 +0200 Subject: [PATCH] SOLR-17595: Backport "Fix Solr examples for Windows" (#2911) * Fix argument parsing for -D options with multiple values on Windows (cherry picked from commit 44ea44d1fb07019e8bcd56c7a341301566d64deb) * SOLR-17595: Fix Solr examples for Windows (#2909) * Fix argument parsing for -D options with multiple values on Windows * Fix invalid usage of wildcards in RunExampleTool / PostTool (cherry picked from commit a4229e76771da0125b38204db01ea0934e09c4f4) * Fix unsupported method --- solr/CHANGES.txt | 3 +++ solr/bin/solr.cmd | 27 ++++++++++++++++--- .../org/apache/solr/cli/RunExampleTool.java | 4 ++- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index b6396873d36..b6f30d7f998 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -114,6 +114,9 @@ Bug Fixes * SOLR-17586: Print zkcli.sh deprecation msg to stderr, which fixes Solr Operator upload of security.json to zookeeper (Jan Høydahl) +* SOLR-17595: Fix two issues in Solr CLI that prevent Solr from starting with the techproducts example and from + correctly parsing arguments on Windows that start with -D and have multiple values separated by "," or spaces. (Christos Malliaridis) + Dependency Upgrades --------------------- * PR#2702: chore(deps): update io.netty:* to v4.1.114.final (solrbot) diff --git a/solr/bin/solr.cmd b/solr/bin/solr.cmd index 6581d14ed4e..af440528d06 100755 --- a/solr/bin/solr.cmd +++ b/solr/bin/solr.cmd @@ -726,15 +726,36 @@ SHIFT goto parse_args :set_passthru -set "PASSTHRU=%~1=%~2" +set "PASSTHRU_KEY=%~1" +set "PASSTHRU_VALUES=" + +SHIFT +:repeat_passthru +set "arg=%~1" +if "%arg%"=="" goto end_passthru +set firstChar=%arg:~0,1% +IF "%firstChar%"=="-" ( + goto end_passthru +) + +if defined PASSTHRU_VALUES ( + set "PASSTHRU_VALUES=%PASSTHRU_VALUES%,%arg%" +) else ( + set "PASSTHRU_VALUES=%arg%" +) +SHIFT +goto repeat_passthru + +:end_passthru +set "PASSTHRU=%PASSTHRU_KEY%=%PASSTHRU_VALUES%" + IF NOT "%SOLR_OPTS%"=="" ( set "SOLR_OPTS=%SOLR_OPTS% %PASSTHRU%" ) ELSE ( set "SOLR_OPTS=%PASSTHRU%" ) set "PASS_TO_RUN_EXAMPLE=%PASSTHRU% !PASS_TO_RUN_EXAMPLE!" -SHIFT -SHIFT + goto parse_args :set_noprompt diff --git a/solr/core/src/java/org/apache/solr/cli/RunExampleTool.java b/solr/core/src/java/org/apache/solr/cli/RunExampleTool.java index 0b278d13e60..a9afa3be2db 100644 --- a/solr/core/src/java/org/apache/solr/cli/RunExampleTool.java +++ b/solr/core/src/java/org/apache/solr/cli/RunExampleTool.java @@ -337,7 +337,9 @@ protected void runExample(CommandLine cli, String exampleName) throws Exception collectionName, "--type", "application/xml", - exampledocsDir.getAbsolutePath() + "/*.xml" + "--filetypes", + "xml", + exampledocsDir.getAbsolutePath() }; PostTool postTool = new PostTool(); CommandLine postToolCli = SolrCLI.parseCmdLine(postTool, args);