You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2013/10/11 04:33:07 UTC
svn commit: r1531174 - in /lucene/dev/branches/lucene_solr_4_5: ./ solr/
solr/core/ solr/core/src/java/org/apache/solr/core/
solr/core/src/java/org/apache/solr/handler/admin/
solr/core/src/test/org/apache/solr/cloud/ solr/solrj/
solr/solrj/src/java/org...
Author: markrmiller
Date: Fri Oct 11 02:33:07 2013
New Revision: 1531174
URL: http://svn.apache.org/r1531174
Log:
SOLR-5306: Extra collection creation parameters like collection.configName are not being respected.
Modified:
lucene/dev/branches/lucene_solr_4_5/ (props changed)
lucene/dev/branches/lucene_solr_4_5/solr/ (props changed)
lucene/dev/branches/lucene_solr_4_5/solr/CHANGES.txt (contents, props changed)
lucene/dev/branches/lucene_solr_4_5/solr/core/ (props changed)
lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/core/CoreDescriptor.java
lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
lucene/dev/branches/lucene_solr_4_5/solr/core/src/test/org/apache/solr/cloud/CollectionsAPIDistributedZkTest.java
lucene/dev/branches/lucene_solr_4_5/solr/solrj/ (props changed)
lucene/dev/branches/lucene_solr_4_5/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreAdminRequest.java
lucene/dev/branches/lucene_solr_4_5/solr/test-framework/ (props changed)
lucene/dev/branches/lucene_solr_4_5/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
Modified: lucene/dev/branches/lucene_solr_4_5/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_5/solr/CHANGES.txt?rev=1531174&r1=1531173&r2=1531174&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_5/solr/CHANGES.txt (original)
+++ lucene/dev/branches/lucene_solr_4_5/solr/CHANGES.txt Fri Oct 11 02:33:07 2013
@@ -65,6 +65,9 @@ Bug Fixes
* SOLR-5317: SolrCore persistence bugs if defining SolrCores in solr.xml.
(Mark Miller, Yago Riveiro)
+
+ * SOLR-5306: Extra collection creation parameters like collection.configName are
+ not being respected. (Mark Miller, Liang Tianyu, Nathan Neulinger)
================== 4.5.0 ==================
Modified: lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/core/CoreDescriptor.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/core/CoreDescriptor.java?rev=1531174&r1=1531173&r2=1531174&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/core/CoreDescriptor.java (original)
+++ lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/core/CoreDescriptor.java Fri Oct 11 02:33:07 2013
@@ -19,9 +19,11 @@ package org.apache.solr.core;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+
import org.apache.commons.lang.StringUtils;
import org.apache.solr.cloud.CloudDescriptor;
import org.apache.solr.common.SolrException;
+import org.apache.solr.common.params.SolrParams;
import org.apache.solr.util.IOUtils;
import org.apache.solr.util.PropertiesUtil;
@@ -132,6 +134,19 @@ public class CoreDescriptor {
*/
public CoreDescriptor(CoreContainer container, String name, String instanceDir,
Properties coreProps) {
+ this(container, name, instanceDir, coreProps, null);
+ }
+
+ /**
+ * Create a new CoreDescriptor.
+ * @param container the CoreDescriptor's container
+ * @param name the CoreDescriptor's name
+ * @param instanceDir a String containing the instanceDir
+ * @param coreProps a Properties object of the properties for this core
+ * @param params additional params
+ */
+ public CoreDescriptor(CoreContainer container, String name, String instanceDir,
+ Properties coreProps, SolrParams params) {
this.coreContainer = container;
@@ -169,6 +184,9 @@ public class CoreDescriptor {
// TODO maybe make this a CloudCoreDescriptor subclass?
if (container.isZooKeeperAware()) {
cloudDesc = new CloudDescriptor(name, coreProperties);
+ if (params != null) {
+ cloudDesc.setParams(params);
+ }
}
else {
cloudDesc = null;
Modified: lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java?rev=1531174&r1=1531173&r2=1531174&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java (original)
+++ lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java Fri Oct 11 02:33:07 2013
@@ -433,7 +433,7 @@ public class CoreAdminHandler extends Re
coreProps.setProperty(propName, propValue);
}
- return new CoreDescriptor(container, name, instancedir, coreProps);
+ return new CoreDescriptor(container, name, instancedir, coreProps, params);
}
private static String checkNotEmpty(String value, String message) {
Modified: lucene/dev/branches/lucene_solr_4_5/solr/core/src/test/org/apache/solr/cloud/CollectionsAPIDistributedZkTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_5/solr/core/src/test/org/apache/solr/cloud/CollectionsAPIDistributedZkTest.java?rev=1531174&r1=1531173&r2=1531174&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_5/solr/core/src/test/org/apache/solr/cloud/CollectionsAPIDistributedZkTest.java (original)
+++ lucene/dev/branches/lucene_solr_4_5/solr/core/src/test/org/apache/solr/cloud/CollectionsAPIDistributedZkTest.java Fri Oct 11 02:33:07 2013
@@ -248,6 +248,9 @@ public class CollectionsAPIDistributedZk
+ System.currentTimeMillis() + "halfcollection" + "_hdn";
createCmd.setDataDir(dataDir);
createCmd.setNumShards(2);
+ if (secondConfigSet) {
+ createCmd.setCollectionConfigName("conf1");
+ }
createNewSolrServer("", baseUrl).request(createCmd);
ModifiableSolrParams params = new ModifiableSolrParams();
@@ -267,6 +270,9 @@ public class CollectionsAPIDistributedZk
params.set("numShards", 2);
request = new QueryRequest(params);
request.setPath("/admin/collections");
+ if (secondConfigSet) {
+ params.set("collection.configName", "conf1");
+ }
resp = createNewSolrServer("", baseUrl).request(request);
}
@@ -274,8 +280,13 @@ public class CollectionsAPIDistributedZk
private void deleteCollectionWithDownNodes() throws Exception {
String baseUrl = getBaseUrl((HttpSolrServer) clients.get(0));
// now try to remove a collection when a couple of it's nodes are down
- createCollection(null, "halfdeletedcollection2", 3, 2, 6,
- createNewSolrServer("", baseUrl), null);
+ if (secondConfigSet) {
+ createCollection(null, "halfdeletedcollection2", 3, 2, 6,
+ createNewSolrServer("", baseUrl), null, "conf2");
+ } else {
+ createCollection(null, "halfdeletedcollection2", 3, 2, 6,
+ createNewSolrServer("", baseUrl), null);
+ }
waitForRecoveriesToFinish("halfdeletedcollection2", false);
@@ -329,6 +340,9 @@ public class CollectionsAPIDistributedZk
collectionName = "collection";
// No Name
// params.set("name", collectionName);
+ if (secondConfigSet) {
+ params.set("collection.configName", "conf1");
+ }
request = new QueryRequest(params);
request.setPath("/admin/collections");
gotExp = false;
@@ -346,6 +360,9 @@ public class CollectionsAPIDistributedZk
collectionName = "collection";
params.set("name", collectionName);
params.set("numShards", 2);
+ if (secondConfigSet) {
+ params.set("collection.configName", "conf1");
+ }
params.set(REPLICATION_FACTOR, 10);
request = new QueryRequest(params);
request.setPath("/admin/collections");
@@ -364,6 +381,9 @@ public class CollectionsAPIDistributedZk
collectionName = "acollection";
params.set("name", collectionName);
params.set(REPLICATION_FACTOR, 10);
+ if (secondConfigSet) {
+ params.set("collection.configName", "conf1");
+ }
request = new QueryRequest(params);
request.setPath("/admin/collections");
gotExp = false;
@@ -382,6 +402,9 @@ public class CollectionsAPIDistributedZk
params.set("name", collectionName);
params.set(REPLICATION_FACTOR, 10);
params.set("numShards", 0);
+ if (secondConfigSet) {
+ params.set("collection.configName", "conf1");
+ }
request = new QueryRequest(params);
request.setPath("/admin/collections");
gotExp = false;
@@ -404,6 +427,9 @@ public class CollectionsAPIDistributedZk
+ System.currentTimeMillis() + "halfcollection" + "_3n";
createCmd.setDataDir(dataDir);
createCmd.setNumShards(1);
+ if (secondConfigSet) {
+ createCmd.setCollectionConfigName("conf1");
+ }
createNewSolrServer("", baseUrl).request(createCmd);
createCmd = new Create();
@@ -413,6 +439,9 @@ public class CollectionsAPIDistributedZk
+ System.currentTimeMillis() + "halfcollection" + "_3n";
createCmd.setDataDir(dataDir);
createCmd.setNumShards(1);
+ if (secondConfigSet) {
+ createCmd.setCollectionConfigName("conf1");
+ }
createNewSolrServer("", getBaseUrl((HttpSolrServer) clients.get(1))).request(createCmd);
params = new ModifiableSolrParams();
@@ -422,6 +451,10 @@ public class CollectionsAPIDistributedZk
params.set("numShards", 2);
params.set("wt", "xml");
+ if (secondConfigSet) {
+ params.set("collection.configName", "conf1");
+ }
+
String nn1 = ((SolrDispatchFilter) jettys.get(0).getDispatchFilter().getFilter()).getCores().getZkController().getNodeName();
String nn2 = ((SolrDispatchFilter) jettys.get(1).getDispatchFilter().getFilter()).getCores().getZkController().getNodeName();
@@ -434,6 +467,9 @@ public class CollectionsAPIDistributedZk
SimpleOrderedMap success = (SimpleOrderedMap) resp.get("success");
SimpleOrderedMap failure = (SimpleOrderedMap) resp.get("failure");
+ assertNotNull(resp.toString(), success);
+ assertNotNull(resp.toString(), failure);
+
String val1 = success.getVal(0).toString();
String val2 = failure.getVal(0).toString();
assertTrue(val1.contains("SolrException") || val2.contains("SolrException"));
@@ -451,6 +487,11 @@ public class CollectionsAPIDistributedZk
String collectionName = "nodes_used_collection";
params.set("name", collectionName);
+
+ if (secondConfigSet) {
+ params.set("collection.configName", "conf1");
+ }
+
QueryRequest request = new QueryRequest(params);
request.setPath("/admin/collections");
createNewSolrServer("", baseUrl).request(request);
@@ -520,9 +561,13 @@ public class CollectionsAPIDistributedZk
// and use this CloudSolrServer to create the collection
client = createCloudClient("awholynewcollection_" + i);
}
-
- createCollection(collectionInfos, "awholynewcollection_" + i,
- numShards, replicationFactor, maxShardsPerNode, client, null);
+ if (secondConfigSet) {
+ createCollection(collectionInfos, "awholynewcollection_" + i,
+ numShards, replicationFactor, maxShardsPerNode, client, null, "conf2");
+ } else {
+ createCollection(collectionInfos, "awholynewcollection_" + i,
+ numShards, replicationFactor, maxShardsPerNode, client, null);
+ }
} finally {
if (client != null) client.shutdown();
}
@@ -565,6 +610,19 @@ public class CollectionsAPIDistributedZk
ZkStateReader zkStateReader = getCommonCloudSolrServer().getZkStateReader();
for (int j = 0; j < cnt; j++) {
waitForRecoveriesToFinish("awholynewcollection_" + j, zkStateReader, false);
+
+ if (secondConfigSet) {
+ // let's see if they are using the second config set
+ byte[] data = zkStateReader.getZkClient()
+ .getData(
+ ZkStateReader.COLLECTIONS_ZKNODE + "/" + "awholynewcollection_"
+ + j, null, null, true);
+ assertNotNull(data);
+ ZkNodeProps props = ZkNodeProps.load(data);
+ String configName = props.getStr(ZkController.CONFIGNAME_PROP);
+ assertEquals("conf2", configName);
+
+ }
}
checkInstanceDirs(jettys.get(0));
@@ -658,6 +716,9 @@ public class CollectionsAPIDistributedZk
collectionName = "acollectionafterbaddelete";
params.set("name", collectionName);
+ if (secondConfigSet) {
+ params.set("collection.configName", "conf1");
+ }
request = new QueryRequest(params);
request.setPath("/admin/collections");
createNewSolrServer("", baseUrl).request(request);
@@ -688,7 +749,8 @@ public class CollectionsAPIDistributedZk
try {
exp = false;
try {
- createCollection(collectionInfos, "awholynewcollection_" + cnt, numShards, replicationFactor, maxShardsPerNode, client, null);
+ createCollection(collectionInfos, "awholynewcollection_" + cnt,
+ numShards, replicationFactor, maxShardsPerNode, client, null, "conf1");
} catch (SolrException e) {
exp = true;
}
@@ -718,7 +780,7 @@ public class CollectionsAPIDistributedZk
collectionInfos = new HashMap<String,List<Integer>>();
client = createCloudClient("awholynewcollection_" + (cnt+1));
try {
- createCollection(collectionInfos, "awholynewcollection_" + (cnt+1), numShards, replicationFactor, maxShardsPerNode, client, StrUtils.join(createNodeList, ','));
+ createCollection(collectionInfos, "awholynewcollection_" + (cnt+1), numShards, replicationFactor, maxShardsPerNode, client, StrUtils.join(createNodeList, ','), "conf1");
} finally {
client.shutdown();
}
Modified: lucene/dev/branches/lucene_solr_4_5/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreAdminRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_5/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreAdminRequest.java?rev=1531174&r1=1531173&r2=1531174&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_5/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreAdminRequest.java (original)
+++ lucene/dev/branches/lucene_solr_4_5/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreAdminRequest.java Fri Oct 11 02:33:07 2013
@@ -59,6 +59,7 @@ public class CoreAdminRequest extends So
private String coreNodeName;
private Boolean loadOnStartup;
private Boolean isTransient;
+ private String collectionConfigName;
public Create() {
action = CoreAdminAction.CREATE;
@@ -76,6 +77,7 @@ public class CoreAdminRequest extends So
public void setCoreNodeName(String coreNodeName) {this.coreNodeName = coreNodeName;}
public void setIsTransient(Boolean isTransient) { this.isTransient = isTransient; }
public void setIsLoadOnStartup(Boolean loadOnStartup) { this.loadOnStartup = loadOnStartup;}
+ public void setCollectionConfigName(String name) { this.collectionConfigName = name;}
public String getInstanceDir() { return instanceDir; }
public String getSchemaName() { return schemaName; }
@@ -88,7 +90,8 @@ public class CoreAdminRequest extends So
public String getCoreNodeName() { return coreNodeName; }
public Boolean getIsLoadOnStartup() { return loadOnStartup; }
public Boolean getIsTransient() { return isTransient; }
-
+ public String getCollectionConfigName() { return collectionConfigName;}
+
@Override
public SolrParams getParams() {
if( action == null ) {
@@ -137,6 +140,11 @@ public class CoreAdminRequest extends So
if (loadOnStartup != null) {
params.set(CoreAdminParams.LOAD_ON_STARTUP, loadOnStartup);
}
+
+ if (collectionConfigName != null) {
+ params.set("collection.configName", collectionConfigName);
+ }
+
return params;
}
Modified: lucene/dev/branches/lucene_solr_4_5/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_5/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java?rev=1531174&r1=1531173&r2=1531174&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_5/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java (original)
+++ lucene/dev/branches/lucene_solr_4_5/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java Fri Oct 11 02:33:07 2013
@@ -1538,7 +1538,10 @@ public abstract class AbstractFullDistri
createCollection(null, collectionName, numShards, numReplicas, maxShardsPerNode, null, null);
}
- protected void createCollection(Map<String,List<Integer>> collectionInfos, String collectionName, Map<String,Object> collectionProps, SolrServer client ) throws SolrServerException, IOException{
+ protected void createCollection(Map<String,List<Integer>> collectionInfos, String collectionName, Map<String,Object> collectionProps, SolrServer client) throws SolrServerException, IOException{
+ createCollection(collectionInfos, collectionName, collectionProps, client, null);
+ }
+ protected void createCollection(Map<String,List<Integer>> collectionInfos, String collectionName, Map<String,Object> collectionProps, SolrServer client, String confSetName) throws SolrServerException, IOException{
ModifiableSolrParams params = new ModifiableSolrParams();
params.set("action", CollectionAction.CREATE.toString());
for (Map.Entry<String, Object> entry : collectionProps.entrySet()) {
@@ -1553,7 +1556,11 @@ public abstract class AbstractFullDistri
if(numShards==null){
numShards = (Integer) OverseerCollectionProcessor.COLL_PROPS.get(REPLICATION_FACTOR);
}
-
+
+ if (confSetName != null) {
+ params.set("collection.configName", confSetName);
+ }
+
int clientIndex = random().nextInt(2);
List<Integer> list = new ArrayList<Integer>();
list.add(numShards);
@@ -1592,6 +1599,18 @@ public abstract class AbstractFullDistri
MAX_SHARDS_PER_NODE, maxShardsPerNode),
client);
}
+
+ protected void createCollection(Map<String,List<Integer>> collectionInfos,
+ String collectionName, int numShards, int numReplicas, int maxShardsPerNode, SolrServer client, String createNodeSetStr, String configName) throws SolrServerException, IOException {
+
+ createCollection(collectionInfos, collectionName,
+ ZkNodeProps.makeMap(
+ NUM_SLICES, numShards,
+ REPLICATION_FACTOR, numReplicas,
+ CREATE_NODE_SET, createNodeSetStr,
+ MAX_SHARDS_PER_NODE, maxShardsPerNode),
+ client, configName);
+ }
@Override
protected SolrServer createNewSolrServer(int port) {