You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by an...@apache.org on 2014/12/17 23:34:48 UTC
svn commit: r1646352 - in /lucene/dev/branches/branch_5x: ./ solr/
solr/core/ solr/core/src/test/org/apache/solr/cloud/ solr/solrj/
solr/solrj/src/java/org/apache/solr/client/solrj/request/
Author: anshum
Date: Wed Dec 17 22:34:47 2014
New Revision: 1646352
URL: http://svn.apache.org/r1646352
Log:
SOLR-5922: Add support for adding core properties to SolrJ Collection Admin Request calls (merge from trunk)
Modified:
lucene/dev/branches/branch_5x/ (props changed)
lucene/dev/branches/branch_5x/solr/ (props changed)
lucene/dev/branches/branch_5x/solr/CHANGES.txt (contents, props changed)
lucene/dev/branches/branch_5x/solr/core/ (props changed)
lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/CollectionsAPIDistributedZkTest.java
lucene/dev/branches/branch_5x/solr/solrj/ (props changed)
lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java
Modified: lucene/dev/branches/branch_5x/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/CHANGES.txt?rev=1646352&r1=1646351&r2=1646352&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_5x/solr/CHANGES.txt Wed Dec 17 22:34:47 2014
@@ -465,6 +465,9 @@ Other Changes
* SOLR-6861: post.sh from exampledocs directory has been removed as there no longer is a default update
URL. (Anshum Gupta)
+* SOLR-5922: Add support for adding core properties to SolrJ Collection Admin Request calls.
+ (Varun Thacker via Anshum Gupta).
+
================== 4.10.3 ==================
Bug Fixes
Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/CollectionsAPIDistributedZkTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/CollectionsAPIDistributedZkTest.java?rev=1646352&r1=1646351&r2=1646352&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/CollectionsAPIDistributedZkTest.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/CollectionsAPIDistributedZkTest.java Wed Dec 17 22:34:47 2014
@@ -17,11 +17,9 @@ package org.apache.solr.cloud;
* limitations under the License.
*/
-import static org.apache.solr.common.cloud.ZkStateReader.MAX_SHARDS_PER_NODE;
-import static org.apache.solr.cloud.OverseerCollectionProcessor.NUM_SLICES;
-import static org.apache.solr.common.cloud.ZkStateReader.REPLICATION_FACTOR;
-import static org.apache.solr.common.cloud.ZkNodeProps.makeMap;
-
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+import javax.management.ObjectName;
import java.io.File;
import java.io.IOException;
import java.lang.management.ManagementFactory;
@@ -36,6 +34,7 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
+import java.util.Properties;
import java.util.Set;
import java.util.concurrent.CompletionService;
import java.util.concurrent.ExecutorCompletionService;
@@ -44,13 +43,8 @@ import java.util.concurrent.SynchronousQ
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
-import javax.management.MBeanServer;
-import javax.management.MBeanServerFactory;
-import javax.management.ObjectName;
-
import org.apache.lucene.util.LuceneTestCase.Slow;
import org.apache.lucene.util.TestUtil;
-import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.SolrServer;
@@ -78,6 +72,7 @@ import org.apache.solr.common.cloud.ZkCo
import org.apache.solr.common.cloud.ZkNodeProps;
import org.apache.solr.common.cloud.ZkStateReader;
import org.apache.solr.common.params.CollectionParams.CollectionAction;
+import org.apache.solr.common.params.CoreAdminParams;
import org.apache.solr.common.params.MapSolrParams;
import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.util.NamedList;
@@ -93,6 +88,11 @@ import org.apache.solr.util.DefaultSolrT
import org.junit.Before;
import org.junit.BeforeClass;
+import static org.apache.solr.cloud.OverseerCollectionProcessor.NUM_SLICES;
+import static org.apache.solr.common.cloud.ZkNodeProps.makeMap;
+import static org.apache.solr.common.cloud.ZkStateReader.MAX_SHARDS_PER_NODE;
+import static org.apache.solr.common.cloud.ZkStateReader.REPLICATION_FACTOR;
+
/**
* Tests the Cloud Collections API.
*/
@@ -199,6 +199,7 @@ public class CollectionsAPIDistributedZk
@Override
public void doTest() throws Exception {
testSolrJAPICalls();
+ testPropertyParamsForCreate();
testNodesUsedByCreate();
testCollectionsAPI();
testCollectionsAPIAddRemoveStress();
@@ -210,12 +211,60 @@ public class CollectionsAPIDistributedZk
addReplicaTest();
// last
deleteCollectionWithDownNodes();
-
+
if (DEBUG) {
super.printLayout();
}
}
-
+
+ private void testPropertyParamsForCreate() throws Exception {
+ String collectionName = "solrj_test_core_props";
+ SolrServer server = createNewSolrServer("", getBaseUrl((HttpSolrServer) clients.get(0)));
+
+ File tmpDir = createTempDir("testPropertyParamsForCreate").toFile();
+ File instanceDir = new File(tmpDir, "instanceDir-" + TestUtil.randomSimpleString(random(), 1, 5));
+ File dataDir = new File(tmpDir, "dataDir-" + TestUtil.randomSimpleString(random(), 1, 5));
+ File ulogDir = new File(tmpDir, "ulogDir-" + TestUtil.randomSimpleString(random(), 1, 5));
+
+ Properties properties = new Properties();
+ properties.put(CoreAdminParams.INSTANCE_DIR, instanceDir.getAbsolutePath());
+ properties.put(CoreAdminParams.DATA_DIR, dataDir.getAbsolutePath());
+ properties.put(CoreAdminParams.ULOG_DIR, ulogDir.getAbsolutePath());
+
+ CollectionAdminRequest.Create createReq = new CollectionAdminRequest.Create();
+ createReq.setCollectionName(collectionName);
+ createReq.setNumShards(1);
+ createReq.setConfigName("conf1");
+ createReq.setProperties(properties);
+
+ CollectionAdminResponse response = createReq.process( server );
+ assertEquals(0, response.getStatus());
+ assertTrue(response.isSuccess());
+ Map<String, NamedList<Integer>> coresStatus = response.getCollectionCoresStatus();
+ assertEquals(1, coresStatus.size());
+
+ DocCollection testcoll = getCommonCloudSolrServer().getZkStateReader()
+ .getClusterState().getCollection(collectionName);
+
+ Replica replica1 = testcoll.getReplica("core_node1");
+
+ HttpSolrServer replica1Server = new HttpSolrServer(replica1.getStr("base_url"));
+ try {
+ CoreAdminResponse status = CoreAdminRequest.getStatus(replica1.getStr("core"), replica1Server);
+ NamedList<Object> coreStatus = status.getCoreStatus(replica1.getStr("core"));
+ String dataDirStr = (String) coreStatus.get("dataDir");
+ String instanceDirStr = (String) coreStatus.get("instanceDir");
+ assertEquals("Instance dir does not match param passed in property.instanceDir syntax",
+ new File(instanceDirStr).getAbsolutePath(), instanceDir.getAbsolutePath());
+ assertEquals("Data dir does not match param given in property.dataDir syntax",
+ new File(dataDirStr).getAbsolutePath(), dataDir.getAbsolutePath());
+
+ } finally {
+ replica1Server.shutdown();
+ }
+
+ }
+
private void deleteCollectionRemovesStaleZkCollectionsNode() throws Exception {
// we can use this client because we just want base url
@@ -1338,7 +1387,7 @@ public class CollectionsAPIDistributedZk
System.clearProperty("numShards");
System.clearProperty("zkHost");
System.clearProperty("solr.xml.persist");
-
+
// insurance
DirectUpdateHandler2.commitOnClose = true;
}
Modified: lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java?rev=1646352&r1=1646351&r2=1646352&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java (original)
+++ lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java Wed Dec 17 22:34:47 2014
@@ -17,6 +17,13 @@
package org.apache.solr.client.solrj.request;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Properties;
+import java.util.concurrent.TimeUnit;
+
import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
@@ -30,10 +37,6 @@ import org.apache.solr.common.params.Sha
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.ContentStream;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.concurrent.TimeUnit;
-
/**
* This class is experimental and subject to change.
*
@@ -45,6 +48,18 @@ public class CollectionAdminRequest exte
protected CollectionAction action = null;
protected String asyncId = null;
+ private static String PROPERTY_PREFIX = "property.";
+
+ protected void addProperties(ModifiableSolrParams params, Properties props) {
+ Iterator<Map.Entry<Object, Object>> iter = props.entrySet().iterator();
+ while(iter.hasNext()) {
+ Map.Entry<Object, Object> prop = iter.next();
+ String key = (String) prop.getKey();
+ String value = (String) prop.getValue();
+ params.set(PROPERTY_PREFIX + key, value);
+ }
+ }
+
protected static class CollectionShardAdminRequest extends CollectionAdminRequest {
protected String shardName = null;
@@ -76,6 +91,8 @@ public class CollectionAdminRequest exte
protected Integer numShards;
protected Integer maxShardsPerNode;
protected Integer replicationFactor;
+
+ private Properties properties;
protected Boolean autoAddReplicas;
@@ -102,6 +119,14 @@ public class CollectionAdminRequest exte
public Integer getReplicationFactor() { return replicationFactor; }
public Boolean getAutoAddReplicas() { return autoAddReplicas; }
+ public Properties getProperties() {
+ return properties;
+ }
+
+ public void setProperties(Properties properties) {
+ this.properties = properties;
+ }
+
@Override
public SolrParams getParams() {
ModifiableSolrParams params = (ModifiableSolrParams) super.getParams();
@@ -138,6 +163,10 @@ public class CollectionAdminRequest exte
params.set(ZkStateReader.AUTO_ADD_REPLICAS, autoAddReplicas);
}
+ if(properties != null) {
+ addProperties(params, properties);
+ }
+
return params;
}
}
@@ -159,9 +188,23 @@ public class CollectionAdminRequest exte
//a create shard collection request
public static class CreateShard extends CollectionShardAdminRequest {
protected String nodeSet;
+ private Properties properties;
- public void setNodeSet(String nodeSet) { this.nodeSet = nodeSet; }
- public String getNodeSet() { return nodeSet; }
+ public void setNodeSet(String nodeSet) {
+ this.nodeSet = nodeSet;
+ }
+
+ public String getNodeSet() {
+ return nodeSet;
+ }
+
+ public Properties getProperties() {
+ return properties;
+ }
+
+ public void setProperties(Properties properties) {
+ this.properties = properties;
+ }
public CreateShard() {
action = CollectionAction.CREATESHARD;
@@ -171,6 +214,9 @@ public class CollectionAdminRequest exte
public SolrParams getParams() {
ModifiableSolrParams params = getCommonParams();
params.set( "createNodeSet", nodeSet);
+ if(properties != null) {
+ addProperties(params, properties);
+ }
return params;
}
}
@@ -179,9 +225,19 @@ public class CollectionAdminRequest exte
public static class SplitShard extends CollectionShardAdminRequest {
protected String ranges;
+ private Properties properties;
+
public void setRanges(String ranges) { this.ranges = ranges; }
public String getRanges() { return ranges; }
+ public Properties getProperties() {
+ return properties;
+ }
+
+ public void setProperties(Properties properties) {
+ this.properties = properties;
+ }
+
public SplitShard() {
action = CollectionAction.SPLITSHARD;
}
@@ -190,6 +246,10 @@ public class CollectionAdminRequest exte
public SolrParams getParams() {
ModifiableSolrParams params = getCommonParams();
params.set( "ranges", ranges);
+
+ if(properties != null) {
+ addProperties(params, properties);
+ }
return params;
}
}
@@ -258,11 +318,20 @@ public class CollectionAdminRequest exte
private String routeKey;
private String instanceDir;
private String dataDir;
+ private Properties properties;
public AddReplica() {
action = CollectionAction.ADDREPLICA;
}
+ public Properties getProperties() {
+ return properties;
+ }
+
+ public void setProperties(Properties properties) {
+ this.properties = properties;
+ }
+
public String getNode() {
return node;
}
@@ -314,6 +383,9 @@ public class CollectionAdminRequest exte
if (dataDir != null) {
params.add("dataDir", dataDir);
}
+ if (properties != null) {
+ addProperties(params, properties);
+ }
return params;
}
}