You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by no...@apache.org on 2017/04/27 03:11:13 UTC

lucene-solr:branch_6x: SOLR-10507: Core Admin status command to emit collection details of each core

Repository: lucene-solr
Updated Branches:
  refs/heads/branch_6x 308a2c07f -> e40044fa4


SOLR-10507: Core Admin status command to emit collection details of each core


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

Branch: refs/heads/branch_6x
Commit: e40044fa4c44e9e6e65e010b067692df58eeada0
Parents: 308a2c0
Author: Noble Paul <no...@apache.org>
Authored: Thu Apr 27 12:38:34 2017 +0930
Committer: Noble Paul <no...@apache.org>
Committed: Thu Apr 27 12:40:54 2017 +0930

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  3 ++
 .../solr/handler/admin/CoreAdminOperation.java  |  8 +++++
 .../solr/cloud/CollectionsAPISolrJTest.java     | 38 ++++++++++++++++----
 3 files changed, 43 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e40044fa/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 6fdfbc6..0c37304 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -84,6 +84,9 @@ New Features
 
 * SOLR-10537: SolrJ: Added SolrParams.toLocalParamsString() and ClientUtils.encodeLocalParamVal. (David Smiley)
 
+* SOLR-10507: Core Admin status command to emit collection details of each core (noble)
+
+
 Optimizations
 ----------------------
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e40044fa/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java
index e712407..a5dad1e 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java
@@ -51,7 +51,10 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import static org.apache.solr.common.params.CommonParams.NAME;
+import static org.apache.solr.common.params.CoreAdminParams.COLLECTION;
 import static org.apache.solr.common.params.CoreAdminParams.CoreAdminAction.*;
+import static org.apache.solr.common.params.CoreAdminParams.REPLICA;
+import static org.apache.solr.common.params.CoreAdminParams.SHARD;
 import static org.apache.solr.handler.admin.CoreAdminHandler.COMPLETED;
 import static org.apache.solr.handler.admin.CoreAdminHandler.CallInfo;
 import static org.apache.solr.handler.admin.CoreAdminHandler.FAILED;
@@ -328,6 +331,11 @@ enum CoreAdminOperation implements CoreAdminOp {
           if (cores.isZooKeeperAware()) {
             info.add("lastPublished", core.getCoreDescriptor().getCloudDescriptor().getLastPublished().toString().toLowerCase(Locale.ROOT));
             info.add("configVersion", core.getSolrConfig().getZnodeVersion());
+            SimpleOrderedMap cloudInfo = new SimpleOrderedMap<>();
+            cloudInfo.add(COLLECTION, core.getCoreDescriptor().getCloudDescriptor().getCollectionName());
+            cloudInfo.add(SHARD, core.getCoreDescriptor().getCloudDescriptor().getShardId());
+            cloudInfo.add(REPLICA, core.getCoreDescriptor().getCloudDescriptor().getCoreNodeName());
+            info.add("cloud", cloudInfo);
           }
           if (isIndexInfoNeeded) {
             RefCounted<SolrIndexSearcher> searcher = core.getSearcher();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e40044fa/solr/core/src/test/org/apache/solr/cloud/CollectionsAPISolrJTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/CollectionsAPISolrJTest.java b/solr/core/src/test/org/apache/solr/cloud/CollectionsAPISolrJTest.java
index 3e0d840..0142c7a 100644
--- a/solr/core/src/test/org/apache/solr/cloud/CollectionsAPISolrJTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/CollectionsAPISolrJTest.java
@@ -20,15 +20,19 @@ import java.io.IOException;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Map;
 
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TestUtil;
 import org.apache.solr.client.solrj.SolrServerException;
+import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.request.CollectionAdminRequest;
+import org.apache.solr.client.solrj.request.CoreAdminRequest;
 import org.apache.solr.client.solrj.request.CoreStatus;
 import org.apache.solr.client.solrj.response.CollectionAdminResponse;
+import org.apache.solr.client.solrj.response.CoreAdminResponse;
 import org.apache.solr.common.cloud.ClusterProperties;
 import org.apache.solr.common.cloud.DocCollection;
 import org.apache.solr.common.cloud.Replica;
@@ -36,6 +40,7 @@ import org.apache.solr.common.cloud.Slice;
 import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.common.params.CoreAdminParams;
 import org.apache.solr.common.util.NamedList;
+import org.apache.solr.common.util.Utils;
 import org.apache.zookeeper.KeeperException;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -90,6 +95,27 @@ public class CollectionsAPISolrJTest extends SolrCloudTestCase {
   }
 
   @Test
+  public void testCloudInfoInCoreStatus() throws IOException, SolrServerException {
+    String collectionName = "corestatus_test";
+    CollectionAdminResponse response = CollectionAdminRequest.createCollection(collectionName, "conf", 2, 2)
+        .setStateFormat(1)
+        .process(cluster.getSolrClient());
+
+    assertEquals(0, response.getStatus());
+    assertTrue(response.isSuccess());
+    String nodeName = ((NamedList) response.getResponse().get("success")).getName(0);
+    String corename = (String) ((NamedList) ((NamedList) response.getResponse().get("success")).getVal(0)).get("core");
+
+    try (HttpSolrClient coreclient = getHttpSolrClient(cluster.getSolrClient().getZkStateReader().getBaseUrlForNodeName(nodeName))) {
+      CoreAdminResponse status = CoreAdminRequest.getStatus(corename, coreclient);
+      Map m = status.getResponse().asMap(5);
+      assertEquals(collectionName, Utils.getObjectByPath(m, true, Arrays.asList("status", corename, "cloud", "collection")));
+      assertNotNull(Utils.getObjectByPath(m, true, Arrays.asList("status", corename, "cloud", "shard")));
+      assertNotNull(Utils.getObjectByPath(m, true, Arrays.asList("status", corename, "cloud", "replica")));
+    }
+  }
+
+  @Test
   public void testCreateAndDeleteShard() throws IOException, SolrServerException {
 
     // Create an implicit collection
@@ -160,7 +186,7 @@ public class CollectionsAPISolrJTest extends SolrCloudTestCase {
       }
       return true;
     });
-    
+
     // Test splitting using split.key
     response = CollectionAdminRequest.splitShard(collectionName)
         .setSplitKey("b!")
@@ -170,14 +196,14 @@ public class CollectionsAPISolrJTest extends SolrCloudTestCase {
     assertTrue(response.isSuccess());
 
     waitForState("Expected 5 slices to be active", collectionName, (n, c) -> c.getActiveSlices().size() == 5);
-    
+
   }
 
   @Test
   public void testCreateCollectionWithPropertyParam() throws Exception {
 
     String collectionName = "solrj_test_core_props";
-    
+
     Path tmpDir = createTempDir("testPropertyParamsForCreate");
     Path dataDir = tmpDir.resolve("dataDir-" + TestUtil.randomSimpleString(random(), 1, 5));
     Path ulogDir = tmpDir.resolve("ulogDir-" + TestUtil.randomSimpleString(random(), 1, 5));
@@ -225,7 +251,7 @@ public class CollectionsAPISolrJTest extends SolrCloudTestCase {
       Replica r = c.getSlice("shard1").getReplica(newReplicaName);
       return r != null && r.getNodeName().equals(node);
     });
-    
+
     // Test DELETEREPLICA
     response = CollectionAdminRequest.deleteReplica(collectionName, "shard1", newReplicaName)
         .process(cluster.getSolrClient());
@@ -246,7 +272,7 @@ public class CollectionsAPISolrJTest extends SolrCloudTestCase {
 
     ClusterProperties props = new ClusterProperties(zkClient());
     assertEquals("Cluster property was not set", props.getClusterProperty(ZkStateReader.LEGACY_CLOUD, "true"), "false");
-    
+
     // Unset ClusterProp that we set.
     CollectionAdminRequest.setClusterProperty(ZkStateReader.LEGACY_CLOUD, null).process(cluster.getSolrClient());
     assertEquals("Cluster property was not unset", props.getClusterProperty(ZkStateReader.LEGACY_CLOUD, "true"), "true");
@@ -289,7 +315,7 @@ public class CollectionsAPISolrJTest extends SolrCloudTestCase {
 
     waitForState("Expecting property 'preferredleader' to be removed from replica " + replica.getName(), collection,
         (n, c) -> c.getReplica(replica.getName()).getStr("property.preferredleader") == null);
-    
+
   }
 
   @Test