This is an automated email from the ASF dual-hosted git repository.

epugh pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/solr.git

commit 6db5cf75886b5a73e28a1f10d74b6a75b7dc4b3a
Author: Eric Pugh <[email protected]>
AuthorDate: Mon Oct 28 09:10:02 2024 -0400

    SOLR-17511: Deprecate -i CLI usages (#2794)
    
    Co-authored-by: Christos Malliaridis <[email protected]>
    (cherry picked from commit 76d3341df10aef4f686a17838621545fc28a3c70)
---
 .../org/apache/solr/cli/SnapshotExportTool.java     | 19 ++++++++++++++++++-
 solr/packaging/test/test_prometheus.bats            |  3 ++-
 solr/prometheus-exporter/bin/solr-exporter          |  2 +-
 solr/prometheus-exporter/bin/solr-exporter.cmd      |  2 +-
 .../solr/prometheus/exporter/SolrExporter.java      | 21 ++++++++++++++++++++-
 .../apache/solr/prometheus/scraper/SolrScraper.java |  3 ++-
 .../monitoring-with-prometheus-and-grafana.adoc     |  2 +-
 .../pages/solr-control-script-reference.adoc        |  4 ++--
 8 files changed, 47 insertions(+), 9 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/cli/SnapshotExportTool.java 
b/solr/core/src/java/org/apache/solr/cli/SnapshotExportTool.java
index c7a1578ca5e..9cc5668d6c3 100644
--- a/solr/core/src/java/org/apache/solr/cli/SnapshotExportTool.java
+++ b/solr/core/src/java/org/apache/solr/cli/SnapshotExportTool.java
@@ -20,6 +20,7 @@ import java.io.PrintStream;
 import java.util.List;
 import java.util.Optional;
 import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.DeprecatedAttributes;
 import org.apache.commons.cli.Option;
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.request.CollectionAdminRequest;
@@ -78,6 +79,19 @@ public class SnapshotExportTool extends ToolBase {
                 "Specifies name of the backup repository to be used during 
snapshot export preparation.")
             .build(),
         Option.builder("i")
+            .deprecated(
+                DeprecatedAttributes.builder()
+                    .setForRemoval(true)
+                    .setSince("9.8")
+                    .setDescription("Use --async-id instead")
+                    .get())
+            .argName("ID")
+            .hasArg()
+            .required(false)
+            .desc(
+                "Specifies the async request identifier to be used during 
snapshot export preparation.")
+            .build(),
+        Option.builder()
             .longOpt("async-id")
             .argName("ID")
             .hasArg()
@@ -91,12 +105,15 @@ public class SnapshotExportTool extends ToolBase {
   @Override
   public void runImpl(CommandLine cli) throws Exception {
     SolrCLI.raiseLogLevelUnlessVerbose(cli);
-    //
+
     String snapshotName = cli.getOptionValue("snapshot-name");
     String collectionName = cli.getOptionValue("name");
     String destDir = cli.getOptionValue("dest-dir");
     Optional<String> backupRepo = 
Optional.ofNullable(cli.getOptionValue("backup-repo-name"));
     Optional<String> asyncReqId = 
Optional.ofNullable(cli.getOptionValue("async-id"));
+    if (cli.hasOption("i")) {
+      asyncReqId = Optional.ofNullable(cli.getOptionValue("i"));
+    }
 
     try (var solrClient = SolrCLI.getSolrClient(cli)) {
       exportSnapshot(solrClient, collectionName, snapshotName, destDir, 
backupRepo, asyncReqId);
diff --git a/solr/packaging/test/test_prometheus.bats 
b/solr/packaging/test/test_prometheus.bats
index 66526f79484..52d74aa3549 100644
--- a/solr/packaging/test/test_prometheus.bats
+++ b/solr/packaging/test/test_prometheus.bats
@@ -38,7 +38,7 @@ teardown() {
   assert_output --partial "Created new core 'COLL_NAME'"
  
   echo "# starting solr-exporter on ${SOLR_EXPORTER_PORT}" >&3
-  run solr-exporter -p $SOLR_EXPORTER_PORT -b 
http://localhost:${SOLR_PORT}/solr >&3 &
+  run solr-exporter --cluster-id bats-test -p $SOLR_EXPORTER_PORT -b 
http://localhost:${SOLR_PORT}/solr >&3 &
 
   sleep 5
 
@@ -46,4 +46,5 @@ teardown() {
   
   assert_output --partial 'solr_metrics_core_query_requests_total'
   assert_output --partial 'core="COLL_NAME"'
+  assert_output --partial 'bats-test'
 }
diff --git a/solr/prometheus-exporter/bin/solr-exporter 
b/solr/prometheus-exporter/bin/solr-exporter
index 87109649151..452e597ab55 100755
--- a/solr/prometheus-exporter/bin/solr-exporter
+++ b/solr/prometheus-exporter/bin/solr-exporter
@@ -126,7 +126,7 @@ elif [[ -n "$SOLR_URL" ]]; then
 fi
 
 if [[ -n "$CLUSTER_ID" ]]; then
-  EXPORTER_ARGS+=(-i "$CLUSTER_ID")
+  EXPORTER_ARGS+=(--cluster-id "$CLUSTER_ID")
 fi
 
 if [[ -n "$CREDENTIALS" ]]; then
diff --git a/solr/prometheus-exporter/bin/solr-exporter.cmd 
b/solr/prometheus-exporter/bin/solr-exporter.cmd
index aa861da7c97..7e9dd2a91f2 100644
--- a/solr/prometheus-exporter/bin/solr-exporter.cmd
+++ b/solr/prometheus-exporter/bin/solr-exporter.cmd
@@ -82,7 +82,7 @@ IF NOT "%SCRAPE_INTERVAL%"=="" set 
EXPORTER_ARGS=%EXPORTER_ARGS% --scrape-interv
 IF NOT "%NUM_THREADS%"=="" set EXPORTER_ARGS=%EXPORTER_ARGS% --num-threads 
%NUM_THREADS%
 IF NOT "%ZK_HOST%"=="" set EXPORTER_ARGS=%EXPORTER_ARGS% -z %ZK_HOST%
 IF NOT "%SOLR_URL%"=="" set EXPORTER_ARGS=%EXPORTER_ARGS% -b %SOLR_URL%
-IF NOT "%CLUSTER_ID%"=="" set EXPORTER_ARGS=%EXPORTER_ARGS% -i "%CLUSTER_ID%"
+IF NOT "%CLUSTER_ID%"=="" set EXPORTER_ARGS=%EXPORTER_ARGS% --cluster-id 
"%CLUSTER_ID%"
 IF NOT "%CREDENTIALS%"=="" set EXPORTER_ARGS=%EXPORTER_ARGS% -u "%CREDENTIALS%"
 IF NOT "%SSL_ENABLED%"=="" set EXPORTER_ARGS=%EXPORTER_ARGS% -ssl 
"%SSL_ENABLED%"
 goto endInit
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/SolrExporter.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/SolrExporter.java
index 4c40b08e849..2a839b0c794 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/SolrExporter.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/SolrExporter.java
@@ -203,7 +203,7 @@ public class SolrExporter {
     mainOptions.addOption(helpOption);
 
     Option clusterIdOption =
-        Option.builder("i")
+        Option.builder()
             .longOpt("cluster-id")
             .hasArg()
             .argName("CLUSTER_ID")
@@ -213,6 +213,22 @@ public class SolrExporter {
             .build();
     mainOptions.addOption(clusterIdOption);
 
+    Option clusterIdDepOption =
+        Option.builder("i")
+            .deprecated(
+                DeprecatedAttributes.builder()
+                    .setForRemoval(true)
+                    .setSince("9.8")
+                    .setDescription("Use --cluster-id instead")
+                    .get())
+            .hasArg()
+            .argName("CLUSTER_ID")
+            .type(String.class)
+            .desc(
+                "Specify a unique identifier for the cluster, which can be 
used to select between multiple clusters in Grafana. By default this ID will be 
equal to a hash of the -b or -z argument")
+            .build();
+    deprecatedOptions.addOption(clusterIdDepOption);
+
     Option numThreadsOption =
         Option.builder()
             .longOpt("num-threads")
@@ -356,6 +372,9 @@ public class SolrExporter {
 
       int port = commandLine.getParsedOptionValue(portOption, DEFAULT_PORT);
       String clusterId = commandLine.getOptionValue(clusterIdOption, 
DEFAULT_CLUSTER_ID);
+      if (commandLine.hasOption("i")) {
+        clusterId = commandLine.getOptionValue("i");
+      }
       if (StrUtils.isNullOrEmpty(clusterId)) {
         clusterId = defaultClusterId;
       }
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrScraper.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrScraper.java
index 273f6826176..5bc4d720b1b 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrScraper.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrScraper.java
@@ -184,7 +184,8 @@ public abstract class SolrScraper implements Closeable {
             labelValues.add(zkHostLabelValue);
           }
 
-          // Add the unique cluster ID, either as specified on cmdline -i or 
baseUrl/zkHost
+          // Add the unique cluster ID, either as specified on cmdline 
--cluster-id or
+          // baseUrl/zkHost
           labelNames.add(CLUSTER_ID_LABEL);
           labelValues.add(clusterId);
 
diff --git 
a/solr/solr-ref-guide/modules/deployment-guide/pages/monitoring-with-prometheus-and-grafana.adoc
 
b/solr/solr-ref-guide/modules/deployment-guide/pages/monitoring-with-prometheus-and-grafana.adoc
index 7ca6497ea03..b3c51cc0b12 100644
--- 
a/solr/solr-ref-guide/modules/deployment-guide/pages/monitoring-with-prometheus-and-grafana.adoc
+++ 
b/solr/solr-ref-guide/modules/deployment-guide/pages/monitoring-with-prometheus-and-grafana.adoc
@@ -171,7 +171,7 @@ The `solr-exporter` collects metrics from Solr every few 
seconds controlled by t
 These metrics are cached and returned regardless of how frequently prometheus 
is configured to pull metrics from this tool.
 The freshness of the metrics can be improved by reducing the scrape interval 
but do not set it to a very low value because metrics collection can be 
expensive and can execute arbitrary searches to ping Solr.
 
-`-i`, `--cluster-id`, `$CLUSTER_ID`::
+`--cluster-id`, `$CLUSTER_ID`::
 +
 [%autowidth,frame=none]
 |===
diff --git 
a/solr/solr-ref-guide/modules/deployment-guide/pages/solr-control-script-reference.adoc
 
b/solr/solr-ref-guide/modules/deployment-guide/pages/solr-control-script-reference.adoc
index 2cfa4438d2d..52d7e73ebd1 100644
--- 
a/solr/solr-ref-guide/modules/deployment-guide/pages/solr-control-script-reference.adoc
+++ 
b/solr/solr-ref-guide/modules/deployment-guide/pages/solr-control-script-reference.adoc
@@ -1985,10 +1985,10 @@ Use the export command to take :
 
 [,console]
 ----
-$ bin/solr snapshot-export [--backup-repo-name <DIR>] -c <NAME> --dest-dir 
<DIR> [-i <ID>] --snapshot-name <NAME>
+$ bin/solr snapshot-export [--backup-repo-name <DIR>] -c <NAME> --dest-dir 
<DIR> [--async-id <ID>] --snapshot-name <NAME>
 ----
 
-The `-i` parameter specifies that this is an asynchronous process.
+The `--async-id` parameter specifies that this is an asynchronous process.
 
 
 === Delete a Snapshot

Reply via email to