From 09280bbf910f750d0e8d33eb9a31e3c713df11f3 Mon Sep 17 00:00:00 2001 From: Eric Pugh Date: Fri, 11 Oct 2024 13:36:06 -0600 Subject: [PATCH 1/2] SOLR-17467: Start solr in Cloud mode, introduce --user-managed switch for User Managed mode (#2729) Flip the default start mode to SolrCloud. Update the docs and the tests and the tutorials. This PR doesn't do anything to help an existing setup upgrade however. --- dev-docs/running-in-docker.adoc | 4 ++-- solr/CHANGES.txt | 2 ++ solr/bin/solr | 22 +++++++---------- solr/bin/solr.cmd | 21 ++++++++-------- .../org/apache/solr/cli/RunExampleTool.java | 15 ++++++------ .../src/java/org/apache/solr/cli/SolrCLI.java | 2 +- .../solr/cli/TestSolrCLIRunExample.java | 20 +++++++++++----- solr/docker/gradle-help.txt | 4 ++-- solr/docker/scripts/solr-create | 2 +- solr/docker/scripts/solr-demo | 2 +- solr/docker/scripts/solr-precreate | 2 +- solr/docker/scripts/start-local-solr | 2 +- .../cloud_multi_node_embedded_zk/test.sh | 4 ++-- .../cases/prometheus-exporter-cloud/test.sh | 2 +- solr/docker/tests/cases/user_volume/test.sh | 2 +- .../test/test_adminconsole_urls.bats | 2 +- solr/packaging/test/test_assert.bats | 4 ++-- solr/packaging/test/test_auth.bats | 2 +- solr/packaging/test/test_basic_auth.bats | 2 +- solr/packaging/test/test_bats.bats | 2 +- solr/packaging/test/test_config.bats | 2 +- solr/packaging/test/test_create.bats | 4 ++-- .../test/test_create_collection.bats | 2 +- .../test/test_delete_collection.bats | 2 +- solr/packaging/test/test_export.bats | 4 ++-- solr/packaging/test/test_extraction.bats | 6 ++--- solr/packaging/test/test_healthcheck.bats | 4 ++-- solr/packaging/test/test_modules.bats | 6 ++--- solr/packaging/test/test_packages.bats | 6 ++--- .../packaging/test/test_placement_plugin.bats | 4 ++-- solr/packaging/test/test_post.bats | 2 +- solr/packaging/test/test_postlogs.bats | 2 +- solr/packaging/test/test_prometheus.bats | 2 +- .../packaging/test/test_security_manager.bats | 2 +- solr/packaging/test/test_snapshots.bats | 2 +- solr/packaging/test/test_ssl.bats | 24 +++++++++---------- solr/packaging/test/test_start_solr.bats | 8 ++++++- solr/packaging/test/test_zk.bats | 2 +- .../pages/package-manager-internals.adoc | 2 +- .../pages/package-manager.adoc | 2 +- .../pages/collection-management.adoc | 2 +- .../pages/kerberos-authentication-plugin.adoc | 2 +- .../pages/replica-management.adoc | 2 +- .../pages/shard-management.adoc | 2 +- .../pages/solr-control-script-reference.adoc | 2 +- .../deployment-guide/pages/solr-on-hdfs.adoc | 2 +- .../getting-started/pages/tutorial-aws.adoc | 8 +++---- .../getting-started/pages/tutorial-films.adoc | 4 ++-- .../pages/tutorial-five-minutes.adoc | 2 +- 49 files changed, 120 insertions(+), 112 deletions(-) diff --git a/dev-docs/running-in-docker.adoc b/dev-docs/running-in-docker.adoc index 202d0379b1e..e1e96dac244 100644 --- a/dev-docs/running-in-docker.adoc +++ b/dev-docs/running-in-docker.adoc @@ -8,7 +8,7 @@ To run Solr in a container and expose the Solr port, run: In order to start Solr in cloud mode, run the following. -`docker run -p 8983:8983 solr solr-fg -c` +`docker run -p 8983:8983 solr solr-fg` For documentation on using the official docker builds, please refer to the https://hub.docker.com/_/solr[DockerHub page]. Up-to-date documentation for running locally built images of this branch can be found in the xref:_running_solr_in_docker[local reference guide]. @@ -30,4 +30,4 @@ For more info on building an image, run: `./gradlew helpDocker` == Additional Information -You can find additional information in the https://solr.apache.org/guide/solr/latest/deployment-guide/solr-in-docker.html[Solr Ref Guide Docker Page] \ No newline at end of file +You can find additional information in the https://solr.apache.org/guide/solr/latest/deployment-guide/solr-in-docker.html[Solr Ref Guide Docker Page] diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index 6a1ccd83448..1032406f538 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -10,6 +10,8 @@ New Features --------------------- * SOLR-14496: Solr CLI commands now can interact with a Solr secured using Basic Authentication. (Eric Pugh) +* SOLR-17467: Solr CLI bin/solr start defaults to starting Solr in Cloud mode, use --user-managed switch for User Managed (aka Standalone) mode. (Eric Pugh) + Improvements --------------------- diff --git a/solr/bin/solr b/solr/bin/solr index 4ab26565e92..8a993233a0a 100755 --- a/solr/bin/solr +++ b/solr/bin/solr @@ -367,14 +367,13 @@ function print_usage() { if [[ "$CMD" == "start" || "$CMD" == "restart" ]]; then echo "" - echo "Usage: solr $CMD [-f] [-c] [--host host] [-p port] [--server-dir directory] [-z zkHost] [-m memory] [-e example] [--solr-home solr.solr.home] [--data-home solr.data.home] [--jvm-opts \"jvm-opts\"] [-V]" + echo "Usage: solr $CMD [-f] [--user-managed] [--host host] [-p port] [--server-dir directory] [-z zkHost] [-m memory] [-e example] [--solr-home solr.solr.home] [--data-home solr.data.home] [--jvm-opts \"jvm-opts\"] [--verbose]" echo "" echo " -f Start Solr in foreground; default starts Solr in the background" echo " and sends stdout / stderr to solr-PORT-console.log" echo "" - echo " -c or --cloud Start Solr in SolrCloud mode; if -z not supplied and ZK_HOST not defined in" - echo " solr.in.sh, an embedded ZooKeeper instance is started on Solr port+1000," - echo " such as 9983 if Solr is bound to 8983" + echo " --user-managed Start Solr in user managed aka standalone mode" + echo " See the Ref Guide for more details: https://solr.apache.org/guide/solr/latest/deployment-guide/cluster-types.html" echo "" echo " --host Specify the hostname for this Solr instance" echo "" @@ -385,7 +384,7 @@ function print_usage() { echo "" echo " --server-dir Specify the Solr server directory; defaults to server" echo "" - echo " -z/--zk-host Zookeeper connection string; only used when running in SolrCloud mode using -c" + echo " -z/--zk-host Zookeeper connection string; ignored when running in User Managed (--user-managed) mode." echo " If neither ZK_HOST is defined in solr.in.sh nor the -z parameter is specified," echo " an embedded ZooKeeper instance will be launched." echo " Set the ZK_CREATE_CHROOT environment variable to true if your ZK host has a chroot path, and you want to create it automatically." @@ -733,13 +732,14 @@ FORCE=false SOLR_OPTS=(${SOLR_OPTS:-}) SCRIPT_SOLR_OPTS=() PASS_TO_RUN_EXAMPLE=() +SOLR_MODE="solrcloud" if [ $# -gt 0 ]; then while true; do case "${1:-}" in - -c|--cloud|-cloud) - SOLR_MODE="solrcloud" - PASS_TO_RUN_EXAMPLE+=("-c") + --user-managed) + SOLR_MODE="user-managed" + PASS_TO_RUN_EXAMPLE+=("--user-managed") shift ;; -d|--dir|-dir|--server-dir) @@ -821,7 +821,6 @@ if [ $# -gt 0 ]; then exit 1 fi ZK_HOST="$2" - SOLR_MODE="solrcloud" PASS_TO_RUN_EXAMPLE+=("-z" "$ZK_HOST") shift 2 ;; @@ -1141,11 +1140,6 @@ if [ "${#GC_LOG_OPTS[@]}" -gt 0 ]; then fi fi -# If ZK_HOST is defined, the assume SolrCloud mode -if [[ -n "${ZK_HOST:-}" ]]; then - SOLR_MODE="solrcloud" -fi - if [ "${SOLR_MODE:-}" == 'solrcloud' ]; then : "${ZK_CLIENT_TIMEOUT:=30000}" CLOUD_MODE_OPTS=("-DzkClientTimeout=$ZK_CLIENT_TIMEOUT") diff --git a/solr/bin/solr.cmd b/solr/bin/solr.cmd index 84c578a10ee..f4f3d927fc0 100755 --- a/solr/bin/solr.cmd +++ b/solr/bin/solr.cmd @@ -307,14 +307,13 @@ goto done :start_usage @echo. -@echo Usage: solr %SCRIPT_CMD% [-f] [-c] [--host hostname] [-p port] [--server-dir directory] [-z zkHost] [-m memory] [-e example] [--solr-home solr.solr.home] [--data-home solr.data.home] [--jvm-opts "jvm-opts"] [-V] +@echo Usage: solr %SCRIPT_CMD% [-f] [--user-managed] [--host hostname] [-p port] [--server-dir directory] [-z zkHost] [-m memory] [-e example] [--solr-home solr.solr.home] [--data-home solr.data.home] [--jvm-opts "jvm-opts"] [--verbose] @echo. @echo -f Start Solr in foreground; default starts Solr in the background @echo and sends stdout / stderr to solr-PORT-console.log @echo. -@echo -c or --cloud Start Solr in SolrCloud mode; if -z not supplied and ZK_HOST not defined in -@echo solr.in.cmd, an embedded ZooKeeper instance is started on Solr port+1000, -@echo such as 9983 if Solr is bound to 8983 +@echo --user-managed Start Solr in user managed aka standalone mode" +@echo See the Ref Guide for more details: https://solr.apache.org/guide/solr/latest/deployment-guide/cluster-types.html @echo. @echo --host host Specify the hostname for this Solr instance @echo. @@ -401,9 +400,7 @@ IF "%1"=="--verbose" goto set_verbose IF "%1"=="-v" goto set_verbose IF "%1"=="-q" goto set_warn IF "%1"=="--quiet" goto set_warn -IF "%1"=="-c" goto set_cloud_mode -IF "%1"=="-cloud" goto set_cloud_mode -IF "%1"=="--cloud" goto set_cloud_mode +IF "%1"=="--user-managed" goto set_user_managed_mode IF "%1"=="-d" goto set_server_dir IF "%1"=="--dir" goto set_server_dir IF "%1"=="--server-dir" goto set_server_dir @@ -462,8 +459,8 @@ set SOLR_LOG_LEVEL=WARN SHIFT goto parse_args -:set_cloud_mode -set SOLR_MODE=solrcloud +:set_user_managed_mode +set SOLR_MODE=user-managed SHIFT goto parse_args @@ -875,7 +872,7 @@ IF "%SCRIPT_CMD%"=="start" ( ) ) ) - + IF "%EMPTY_ADDL_JVM_ARGS%"=="true" ( set "SCRIPT_ERROR=JVM options are required when using the -a or --jvm-opts option!" goto err @@ -907,6 +904,7 @@ if !JAVA_MAJOR_VERSION! LSS 9 ( ) IF NOT "%ZK_HOST%"=="" set SOLR_MODE=solrcloud +IF NOT "%SOLR_MODE%"=="" set SOLR_MODE=solrcloud IF "%SOLR_MODE%"=="solrcloud" ( IF "%ZK_CLIENT_TIMEOUT%"=="" set "ZK_CLIENT_TIMEOUT=30000" @@ -942,7 +940,8 @@ IF "%SOLR_MODE%"=="solrcloud" ( IF EXIST "%SOLR_HOME%\collection1\core.properties" set "CLOUD_MODE_OPTS=!CLOUD_MODE_OPTS! -Dbootstrap_confdir=./solr/collection1/conf -Dcollection.configName=myconf -DnumShards=1" ) ELSE ( - set CLOUD_MODE_OPTS= + REM change Cloud mode to User Managed mode with flag + set "CLOUD_MODE_OPTS=--user-managed" IF NOT EXIST "%SOLR_HOME%\solr.xml" ( IF "%SOLR_SOLRXML_REQUIRED%"=="true" ( set "SCRIPT_ERROR=Solr home directory %SOLR_HOME% must contain solr.xml!" 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 a4dfc37d9d5..3c82cc53feb 100644 --- a/solr/core/src/java/org/apache/solr/cli/RunExampleTool.java +++ b/solr/core/src/java/org/apache/solr/cli/RunExampleTool.java @@ -167,11 +167,10 @@ public List