You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2017/05/29 16:16:11 UTC

lucene-solr:feature/autoscaling: SOLR-10677: Move diagnostics API to its own subpath accessible at /autoscaling/diagnostics

Repository: lucene-solr
Updated Branches:
  refs/heads/feature/autoscaling d6b239158 -> cae6b6ef1


SOLR-10677: Move diagnostics API to its own subpath accessible at /autoscaling/diagnostics


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/cae6b6ef
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/cae6b6ef
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/cae6b6ef

Branch: refs/heads/feature/autoscaling
Commit: cae6b6ef13c5f89e0158ff00375e738b6dd63a0e
Parents: d6b2391
Author: Shalin Shekhar Mangar <sh...@apache.org>
Authored: Mon May 29 21:46:03 2017 +0530
Committer: Shalin Shekhar Mangar <sh...@apache.org>
Committed: Mon May 29 21:46:03 2017 +0530

----------------------------------------------------------------------
 .../cloud/autoscaling/AutoScalingHandler.java   | 23 ++++++++++++++++++--
 .../resources/apispec/autoscaling.Commands.json |  3 ++-
 .../autoscaling/AutoScalingHandlerTest.java     |  6 ++++-
 .../apache/solr/common/params/CommonParams.java |  2 ++
 4 files changed, 30 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cae6b6ef/solr/core/src/java/org/apache/solr/cloud/autoscaling/AutoScalingHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/AutoScalingHandler.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/AutoScalingHandler.java
index 4d3c566..b065b4a 100644
--- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/AutoScalingHandler.java
+++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/AutoScalingHandler.java
@@ -39,11 +39,13 @@ import org.apache.solr.client.solrj.impl.SolrClientDataProvider;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.cloud.ZkNodeProps;
 import org.apache.solr.common.cloud.ZkStateReader;
+import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.common.util.Utils;
 import org.apache.solr.core.CoreContainer;
 import org.apache.solr.handler.RequestHandlerBase;
 import org.apache.solr.handler.RequestHandlerUtils;
 import org.apache.solr.request.SolrQueryRequest;
+import org.apache.solr.request.SolrRequestHandler;
 import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.security.AuthorizationContext;
 import org.apache.solr.security.PermissionNameProvider;
@@ -92,9 +94,20 @@ public class AutoScalingHandler extends RequestHandlerBase implements Permission
       RequestHandlerUtils.setWt(req, JSON);
 
       if ("GET".equals(httpMethod)) {
+        String path = (String) req.getContext().get("path");
+        if (path == null) path = "/cluster/autoscaling";
+        List<String> parts = StrUtils.splitSmart(path, '/');
+        if (parts.get(0).isEmpty()) parts.remove(0);
+
+        if (parts.size() < 2 || parts.size() > 3) {
+          // invalid
+          throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Unknown path: " + path);
+        }
+
         Map<String, Object> map = zkReadAutoScalingConf(container.getZkController().getZkStateReader());
-        rsp.getValues().addAll(map);
-        if (req.getParams().getBool("diagnostics", false)) {
+        if (parts.size() == 2)  {
+          rsp.getValues().addAll(map);
+        } else if (parts.size() == 3 && "diagnostics".equals(parts.get(2))) {
           handleDiagnostics(rsp, map);
         }
       } else {
@@ -623,4 +636,10 @@ public class AutoScalingHandler extends RequestHandlerBase implements Permission
   public Boolean registerV2() {
     return Boolean.TRUE;
   }
+
+  @Override
+  public SolrRequestHandler getSubHandler(String path) {
+    if (path.equals("/diagnostics")) return this;
+    return null;
+  }
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cae6b6ef/solr/core/src/resources/apispec/autoscaling.Commands.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/autoscaling.Commands.json b/solr/core/src/resources/apispec/autoscaling.Commands.json
index 77b42cd..0174862 100644
--- a/solr/core/src/resources/apispec/autoscaling.Commands.json
+++ b/solr/core/src/resources/apispec/autoscaling.Commands.json
@@ -7,7 +7,8 @@
   ],
   "url": {
     "paths": [
-      "/cluster/autoscaling"
+      "/cluster/autoscaling",
+      "/cluster/autoscaling/diagnostics"
     ]
   },
   "commands": {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cae6b6ef/solr/core/src/test/org/apache/solr/cloud/autoscaling/AutoScalingHandlerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/AutoScalingHandlerTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/AutoScalingHandlerTest.java
index 6f65d93..1a2a5e5 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/AutoScalingHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/AutoScalingHandlerTest.java
@@ -511,7 +511,7 @@ public class AutoScalingHandlerTest extends SolrCloudTestCase {
     response = solrClient.request(req);
     assertEquals(response.get("result").toString(), "success");
 
-    SolrQuery query = new SolrQuery().setParam(CommonParams.QT, path).setParam("diagnostics", true);
+    SolrQuery query = new SolrQuery().setParam(CommonParams.QT, path);
     QueryResponse queryResponse = solrClient.query(query);
     response = queryResponse.getResponse();
 
@@ -539,6 +539,10 @@ public class AutoScalingHandlerTest extends SolrCloudTestCase {
     assertNotNull(policies.get("xyz"));
     assertNotNull(policies.get("policy1"));
 
+    query = new SolrQuery().setParam(CommonParams.QT, path + "/diagnostics");
+    queryResponse = solrClient.query(query);
+    response = queryResponse.getResponse();
+
     Map<String, Object> diagnostics = (Map<String, Object>) response.get("diagnostics");
     List sortedNodes = (List) diagnostics.get("sortedNodes");
     assertNotNull(sortedNodes);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cae6b6ef/solr/solrj/src/java/org/apache/solr/common/params/CommonParams.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/params/CommonParams.java b/solr/solrj/src/java/org/apache/solr/common/params/CommonParams.java
index efb0ac1..612b55a 100644
--- a/solr/solrj/src/java/org/apache/solr/common/params/CommonParams.java
+++ b/solr/solrj/src/java/org/apache/solr/common/params/CommonParams.java
@@ -182,6 +182,7 @@ public interface CommonParams {
   String ZK_PATH = "/admin/zookeeper";
   String METRICS_PATH = "/admin/metrics";
   String AUTOSCALING_PATH = "/admin/autoscaling";
+  String AUTOSCALING_DIAGNOSTICS_PATH = "/admin/autoscaling/diagnostics";
 
   Set<String> ADMIN_PATHS = new HashSet<>(Arrays.asList(
       CORES_HANDLER_PATH,
@@ -191,6 +192,7 @@ public interface CommonParams {
       AUTHZ_PATH,
       METRICS_PATH,
       AUTOSCALING_PATH,
+      AUTOSCALING_DIAGNOSTICS_PATH,
       "/____v2/cluster/security/authentication",
       "/____v2/cluster/security/authorization"));