mirror of https://github.com/apache/lucene.git
SOLR-5306: Extra collection creation parameters like collection.configName are not being respected.
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1530772 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
52e63ba951
commit
8281cbf8af
|
@ -118,6 +118,9 @@ Bug Fixes
|
||||||
* SOLR-5314: Shard split action should use soft commits instead of hard commits
|
* SOLR-5314: Shard split action should use soft commits instead of hard commits
|
||||||
to make sub shard data visible. (Kalle Aaltonen, shalin)
|
to make sub shard data visible. (Kalle Aaltonen, shalin)
|
||||||
|
|
||||||
|
* SOLR-5306: Extra collection creation parameters like collection.configName are
|
||||||
|
not being respected. (Mark Miller, Liang Tianyu, Nathan Neulinger)
|
||||||
|
|
||||||
Security
|
Security
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
|
|
|
@ -19,9 +19,11 @@ package org.apache.solr.core;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.solr.cloud.CloudDescriptor;
|
import org.apache.solr.cloud.CloudDescriptor;
|
||||||
import org.apache.solr.common.SolrException;
|
import org.apache.solr.common.SolrException;
|
||||||
|
import org.apache.solr.common.params.SolrParams;
|
||||||
import org.apache.solr.util.IOUtils;
|
import org.apache.solr.util.IOUtils;
|
||||||
import org.apache.solr.util.PropertiesUtil;
|
import org.apache.solr.util.PropertiesUtil;
|
||||||
|
|
||||||
|
@ -132,6 +134,19 @@ public class CoreDescriptor {
|
||||||
*/
|
*/
|
||||||
public CoreDescriptor(CoreContainer container, String name, String instanceDir,
|
public CoreDescriptor(CoreContainer container, String name, String instanceDir,
|
||||||
Properties coreProps) {
|
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;
|
this.coreContainer = container;
|
||||||
|
|
||||||
|
@ -169,6 +184,9 @@ public class CoreDescriptor {
|
||||||
// TODO maybe make this a CloudCoreDescriptor subclass?
|
// TODO maybe make this a CloudCoreDescriptor subclass?
|
||||||
if (container.isZooKeeperAware()) {
|
if (container.isZooKeeperAware()) {
|
||||||
cloudDesc = new CloudDescriptor(name, coreProperties);
|
cloudDesc = new CloudDescriptor(name, coreProperties);
|
||||||
|
if (params != null) {
|
||||||
|
cloudDesc.setParams(params);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
cloudDesc = null;
|
cloudDesc = null;
|
||||||
|
|
|
@ -455,7 +455,7 @@ public class CoreAdminHandler extends RequestHandlerBase {
|
||||||
coreProps.setProperty(propName, propValue);
|
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) {
|
private static String checkNotEmpty(String value, String message) {
|
||||||
|
|
|
@ -65,6 +65,7 @@ import org.apache.solr.common.cloud.ClusterState;
|
||||||
import org.apache.solr.common.cloud.DocCollection;
|
import org.apache.solr.common.cloud.DocCollection;
|
||||||
import org.apache.solr.common.cloud.Replica;
|
import org.apache.solr.common.cloud.Replica;
|
||||||
import org.apache.solr.common.cloud.Slice;
|
import org.apache.solr.common.cloud.Slice;
|
||||||
|
import org.apache.solr.common.cloud.SolrZkClient;
|
||||||
import org.apache.solr.common.cloud.ZkCoreNodeProps;
|
import org.apache.solr.common.cloud.ZkCoreNodeProps;
|
||||||
import org.apache.solr.common.cloud.ZkNodeProps;
|
import org.apache.solr.common.cloud.ZkNodeProps;
|
||||||
import org.apache.solr.common.cloud.ZkStateReader;
|
import org.apache.solr.common.cloud.ZkStateReader;
|
||||||
|
@ -99,6 +100,7 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
|
|
||||||
CompletionService<Request> completionService;
|
CompletionService<Request> completionService;
|
||||||
Set<Future<Request>> pending;
|
Set<Future<Request>> pending;
|
||||||
|
private boolean secondConfigSet = random().nextBoolean();
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
public static void beforeThisClass2() throws Exception {
|
public static void beforeThisClass2() throws Exception {
|
||||||
|
@ -109,6 +111,34 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
@Override
|
@Override
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
super.setUp();
|
super.setUp();
|
||||||
|
|
||||||
|
if (secondConfigSet ) {
|
||||||
|
String zkHost = zkServer.getZkHost();
|
||||||
|
String zkAddress = zkServer.getZkAddress();
|
||||||
|
SolrZkClient zkClient = new SolrZkClient(zkHost, AbstractZkTestCase.TIMEOUT);
|
||||||
|
zkClient.makePath("/solr", false, true);
|
||||||
|
zkClient.close();
|
||||||
|
|
||||||
|
zkClient = new SolrZkClient(zkAddress, AbstractZkTestCase.TIMEOUT);
|
||||||
|
|
||||||
|
File solrhome = new File(TEST_HOME());
|
||||||
|
|
||||||
|
// for now, always upload the config and schema to the canonical names
|
||||||
|
AbstractZkTestCase.putConfig("conf2", zkClient, solrhome, "solrconfig.xml", "solrconfig.xml");
|
||||||
|
AbstractZkTestCase.putConfig("conf2", zkClient, solrhome, "schema.xml", "schema.xml");
|
||||||
|
|
||||||
|
AbstractZkTestCase.putConfig("conf2", zkClient, solrhome, "solrconfig.snippet.randomindexconfig.xml");
|
||||||
|
AbstractZkTestCase.putConfig("conf2", zkClient, solrhome, "stopwords.txt");
|
||||||
|
AbstractZkTestCase.putConfig("conf2", zkClient, solrhome, "protwords.txt");
|
||||||
|
AbstractZkTestCase.putConfig("conf2", zkClient, solrhome, "currency.xml");
|
||||||
|
AbstractZkTestCase.putConfig("conf2", zkClient, solrhome, "open-exchange-rates.json");
|
||||||
|
AbstractZkTestCase.putConfig("conf2", zkClient, solrhome, "mapping-ISOLatin1Accent.txt");
|
||||||
|
AbstractZkTestCase.putConfig("conf2", zkClient, solrhome, "old_synonyms.txt");
|
||||||
|
AbstractZkTestCase.putConfig("conf2", zkClient, solrhome, "synonyms.txt");
|
||||||
|
AbstractZkTestCase.putConfig("conf2", zkClient, solrhome, "elevate.xml");
|
||||||
|
zkClient.close();
|
||||||
|
}
|
||||||
|
|
||||||
System.setProperty("numShards", Integer.toString(sliceCount));
|
System.setProperty("numShards", Integer.toString(sliceCount));
|
||||||
System.setProperty("solr.xml.persist", "true");
|
System.setProperty("solr.xml.persist", "true");
|
||||||
}
|
}
|
||||||
|
@ -180,7 +210,6 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
params.set("name", collectionName);
|
params.set("name", collectionName);
|
||||||
QueryRequest request = new QueryRequest(params);
|
QueryRequest request = new QueryRequest(params);
|
||||||
request.setPath("/admin/collections");
|
request.setPath("/admin/collections");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
NamedList<Object> resp = createNewSolrServer("", baseUrl)
|
NamedList<Object> resp = createNewSolrServer("", baseUrl)
|
||||||
.request(request);
|
.request(request);
|
||||||
|
@ -205,6 +234,9 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
+ System.currentTimeMillis() + "halfcollection" + "_hdn";
|
+ System.currentTimeMillis() + "halfcollection" + "_hdn";
|
||||||
createCmd.setDataDir(dataDir);
|
createCmd.setDataDir(dataDir);
|
||||||
createCmd.setNumShards(2);
|
createCmd.setNumShards(2);
|
||||||
|
if (secondConfigSet) {
|
||||||
|
createCmd.setCollectionConfigName("conf1");
|
||||||
|
}
|
||||||
createNewSolrServer("", baseUrl).request(createCmd);
|
createNewSolrServer("", baseUrl).request(createCmd);
|
||||||
|
|
||||||
ModifiableSolrParams params = new ModifiableSolrParams();
|
ModifiableSolrParams params = new ModifiableSolrParams();
|
||||||
|
@ -224,6 +256,9 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
params.set("numShards", 2);
|
params.set("numShards", 2);
|
||||||
request = new QueryRequest(params);
|
request = new QueryRequest(params);
|
||||||
request.setPath("/admin/collections");
|
request.setPath("/admin/collections");
|
||||||
|
if (secondConfigSet) {
|
||||||
|
params.set("collection.configName", "conf1");
|
||||||
|
}
|
||||||
resp = createNewSolrServer("", baseUrl).request(request);
|
resp = createNewSolrServer("", baseUrl).request(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -231,8 +266,13 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
private void deleteCollectionWithDownNodes() throws Exception {
|
private void deleteCollectionWithDownNodes() throws Exception {
|
||||||
String baseUrl = getBaseUrl((HttpSolrServer) clients.get(0));
|
String baseUrl = getBaseUrl((HttpSolrServer) clients.get(0));
|
||||||
// now try to remove a collection when a couple of it's nodes are down
|
// now try to remove a collection when a couple of it's nodes are down
|
||||||
|
if (secondConfigSet) {
|
||||||
|
createCollection(null, "halfdeletedcollection2", 3, 2, 6,
|
||||||
|
createNewSolrServer("", baseUrl), null, "conf2");
|
||||||
|
} else {
|
||||||
createCollection(null, "halfdeletedcollection2", 3, 2, 6,
|
createCollection(null, "halfdeletedcollection2", 3, 2, 6,
|
||||||
createNewSolrServer("", baseUrl), null);
|
createNewSolrServer("", baseUrl), null);
|
||||||
|
}
|
||||||
|
|
||||||
waitForRecoveriesToFinish("halfdeletedcollection2", false);
|
waitForRecoveriesToFinish("halfdeletedcollection2", false);
|
||||||
|
|
||||||
|
@ -286,6 +326,9 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
collectionName = "collection";
|
collectionName = "collection";
|
||||||
// No Name
|
// No Name
|
||||||
// params.set("name", collectionName);
|
// params.set("name", collectionName);
|
||||||
|
if (secondConfigSet) {
|
||||||
|
params.set("collection.configName", "conf1");
|
||||||
|
}
|
||||||
request = new QueryRequest(params);
|
request = new QueryRequest(params);
|
||||||
request.setPath("/admin/collections");
|
request.setPath("/admin/collections");
|
||||||
gotExp = false;
|
gotExp = false;
|
||||||
|
@ -303,6 +346,9 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
collectionName = "collection";
|
collectionName = "collection";
|
||||||
params.set("name", collectionName);
|
params.set("name", collectionName);
|
||||||
params.set("numShards", 2);
|
params.set("numShards", 2);
|
||||||
|
if (secondConfigSet) {
|
||||||
|
params.set("collection.configName", "conf1");
|
||||||
|
}
|
||||||
params.set(REPLICATION_FACTOR, 10);
|
params.set(REPLICATION_FACTOR, 10);
|
||||||
request = new QueryRequest(params);
|
request = new QueryRequest(params);
|
||||||
request.setPath("/admin/collections");
|
request.setPath("/admin/collections");
|
||||||
|
@ -321,6 +367,9 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
collectionName = "acollection";
|
collectionName = "acollection";
|
||||||
params.set("name", collectionName);
|
params.set("name", collectionName);
|
||||||
params.set(REPLICATION_FACTOR, 10);
|
params.set(REPLICATION_FACTOR, 10);
|
||||||
|
if (secondConfigSet) {
|
||||||
|
params.set("collection.configName", "conf1");
|
||||||
|
}
|
||||||
request = new QueryRequest(params);
|
request = new QueryRequest(params);
|
||||||
request.setPath("/admin/collections");
|
request.setPath("/admin/collections");
|
||||||
gotExp = false;
|
gotExp = false;
|
||||||
|
@ -339,6 +388,9 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
params.set("name", collectionName);
|
params.set("name", collectionName);
|
||||||
params.set(REPLICATION_FACTOR, 10);
|
params.set(REPLICATION_FACTOR, 10);
|
||||||
params.set("numShards", 0);
|
params.set("numShards", 0);
|
||||||
|
if (secondConfigSet) {
|
||||||
|
params.set("collection.configName", "conf1");
|
||||||
|
}
|
||||||
request = new QueryRequest(params);
|
request = new QueryRequest(params);
|
||||||
request.setPath("/admin/collections");
|
request.setPath("/admin/collections");
|
||||||
gotExp = false;
|
gotExp = false;
|
||||||
|
@ -361,6 +413,9 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
+ System.currentTimeMillis() + "halfcollection" + "_3n";
|
+ System.currentTimeMillis() + "halfcollection" + "_3n";
|
||||||
createCmd.setDataDir(dataDir);
|
createCmd.setDataDir(dataDir);
|
||||||
createCmd.setNumShards(1);
|
createCmd.setNumShards(1);
|
||||||
|
if (secondConfigSet) {
|
||||||
|
createCmd.setCollectionConfigName("conf1");
|
||||||
|
}
|
||||||
createNewSolrServer("", baseUrl).request(createCmd);
|
createNewSolrServer("", baseUrl).request(createCmd);
|
||||||
|
|
||||||
createCmd = new Create();
|
createCmd = new Create();
|
||||||
|
@ -370,6 +425,9 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
+ System.currentTimeMillis() + "halfcollection" + "_3n";
|
+ System.currentTimeMillis() + "halfcollection" + "_3n";
|
||||||
createCmd.setDataDir(dataDir);
|
createCmd.setDataDir(dataDir);
|
||||||
createCmd.setNumShards(1);
|
createCmd.setNumShards(1);
|
||||||
|
if (secondConfigSet) {
|
||||||
|
createCmd.setCollectionConfigName("conf1");
|
||||||
|
}
|
||||||
createNewSolrServer("", getBaseUrl((HttpSolrServer) clients.get(1))).request(createCmd);
|
createNewSolrServer("", getBaseUrl((HttpSolrServer) clients.get(1))).request(createCmd);
|
||||||
|
|
||||||
params = new ModifiableSolrParams();
|
params = new ModifiableSolrParams();
|
||||||
|
@ -379,6 +437,10 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
params.set("numShards", 2);
|
params.set("numShards", 2);
|
||||||
params.set("wt", "xml");
|
params.set("wt", "xml");
|
||||||
|
|
||||||
|
if (secondConfigSet) {
|
||||||
|
params.set("collection.configName", "conf1");
|
||||||
|
}
|
||||||
|
|
||||||
String nn1 = ((SolrDispatchFilter) jettys.get(0).getDispatchFilter().getFilter()).getCores().getZkController().getNodeName();
|
String nn1 = ((SolrDispatchFilter) jettys.get(0).getDispatchFilter().getFilter()).getCores().getZkController().getNodeName();
|
||||||
String nn2 = ((SolrDispatchFilter) jettys.get(1).getDispatchFilter().getFilter()).getCores().getZkController().getNodeName();
|
String nn2 = ((SolrDispatchFilter) jettys.get(1).getDispatchFilter().getFilter()).getCores().getZkController().getNodeName();
|
||||||
|
|
||||||
|
@ -391,6 +453,9 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
SimpleOrderedMap success = (SimpleOrderedMap) resp.get("success");
|
SimpleOrderedMap success = (SimpleOrderedMap) resp.get("success");
|
||||||
SimpleOrderedMap failure = (SimpleOrderedMap) resp.get("failure");
|
SimpleOrderedMap failure = (SimpleOrderedMap) resp.get("failure");
|
||||||
|
|
||||||
|
assertNotNull(resp.toString(), success);
|
||||||
|
assertNotNull(resp.toString(), failure);
|
||||||
|
|
||||||
String val1 = success.getVal(0).toString();
|
String val1 = success.getVal(0).toString();
|
||||||
String val2 = failure.getVal(0).toString();
|
String val2 = failure.getVal(0).toString();
|
||||||
assertTrue(val1.contains("SolrException") || val2.contains("SolrException"));
|
assertTrue(val1.contains("SolrException") || val2.contains("SolrException"));
|
||||||
|
@ -408,6 +473,11 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
String collectionName = "nodes_used_collection";
|
String collectionName = "nodes_used_collection";
|
||||||
|
|
||||||
params.set("name", collectionName);
|
params.set("name", collectionName);
|
||||||
|
|
||||||
|
if (secondConfigSet) {
|
||||||
|
params.set("collection.configName", "conf1");
|
||||||
|
}
|
||||||
|
|
||||||
QueryRequest request = new QueryRequest(params);
|
QueryRequest request = new QueryRequest(params);
|
||||||
request.setPath("/admin/collections");
|
request.setPath("/admin/collections");
|
||||||
createNewSolrServer("", baseUrl).request(request);
|
createNewSolrServer("", baseUrl).request(request);
|
||||||
|
@ -477,9 +547,13 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
// and use this CloudSolrServer to create the collection
|
// and use this CloudSolrServer to create the collection
|
||||||
client = createCloudClient("awholynewcollection_" + i);
|
client = createCloudClient("awholynewcollection_" + i);
|
||||||
}
|
}
|
||||||
|
if (secondConfigSet) {
|
||||||
|
createCollection(collectionInfos, "awholynewcollection_" + i,
|
||||||
|
numShards, replicationFactor, maxShardsPerNode, client, null, "conf2");
|
||||||
|
} else {
|
||||||
createCollection(collectionInfos, "awholynewcollection_" + i,
|
createCollection(collectionInfos, "awholynewcollection_" + i,
|
||||||
numShards, replicationFactor, maxShardsPerNode, client, null);
|
numShards, replicationFactor, maxShardsPerNode, client, null);
|
||||||
|
}
|
||||||
} finally {
|
} finally {
|
||||||
if (client != null) client.shutdown();
|
if (client != null) client.shutdown();
|
||||||
}
|
}
|
||||||
|
@ -501,6 +575,19 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
ZkStateReader zkStateReader = getCommonCloudSolrServer().getZkStateReader();
|
ZkStateReader zkStateReader = getCommonCloudSolrServer().getZkStateReader();
|
||||||
for (int j = 0; j < cnt; j++) {
|
for (int j = 0; j < cnt; j++) {
|
||||||
waitForRecoveriesToFinish("awholynewcollection_" + j, zkStateReader, false);
|
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));
|
checkInstanceDirs(jettys.get(0));
|
||||||
|
@ -594,6 +681,9 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
collectionName = "acollectionafterbaddelete";
|
collectionName = "acollectionafterbaddelete";
|
||||||
|
|
||||||
params.set("name", collectionName);
|
params.set("name", collectionName);
|
||||||
|
if (secondConfigSet) {
|
||||||
|
params.set("collection.configName", "conf1");
|
||||||
|
}
|
||||||
request = new QueryRequest(params);
|
request = new QueryRequest(params);
|
||||||
request.setPath("/admin/collections");
|
request.setPath("/admin/collections");
|
||||||
createNewSolrServer("", baseUrl).request(request);
|
createNewSolrServer("", baseUrl).request(request);
|
||||||
|
@ -624,7 +714,8 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
try {
|
try {
|
||||||
exp = false;
|
exp = false;
|
||||||
try {
|
try {
|
||||||
createCollection(collectionInfos, "awholynewcollection_" + cnt, numShards, replicationFactor, maxShardsPerNode, client, null);
|
createCollection(collectionInfos, "awholynewcollection_" + cnt,
|
||||||
|
numShards, replicationFactor, maxShardsPerNode, client, null, "conf1");
|
||||||
} catch (SolrException e) {
|
} catch (SolrException e) {
|
||||||
exp = true;
|
exp = true;
|
||||||
}
|
}
|
||||||
|
@ -654,7 +745,7 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
collectionInfos = new HashMap<String,List<Integer>>();
|
collectionInfos = new HashMap<String,List<Integer>>();
|
||||||
client = createCloudClient("awholynewcollection_" + (cnt+1));
|
client = createCloudClient("awholynewcollection_" + (cnt+1));
|
||||||
try {
|
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 {
|
} finally {
|
||||||
client.shutdown();
|
client.shutdown();
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,6 +59,7 @@ public class CoreAdminRequest extends SolrRequest
|
||||||
private String coreNodeName;
|
private String coreNodeName;
|
||||||
private Boolean loadOnStartup;
|
private Boolean loadOnStartup;
|
||||||
private Boolean isTransient;
|
private Boolean isTransient;
|
||||||
|
private String collectionConfigName;
|
||||||
|
|
||||||
public Create() {
|
public Create() {
|
||||||
action = CoreAdminAction.CREATE;
|
action = CoreAdminAction.CREATE;
|
||||||
|
@ -76,6 +77,7 @@ public class CoreAdminRequest extends SolrRequest
|
||||||
public void setCoreNodeName(String coreNodeName) {this.coreNodeName = coreNodeName;}
|
public void setCoreNodeName(String coreNodeName) {this.coreNodeName = coreNodeName;}
|
||||||
public void setIsTransient(Boolean isTransient) { this.isTransient = isTransient; }
|
public void setIsTransient(Boolean isTransient) { this.isTransient = isTransient; }
|
||||||
public void setIsLoadOnStartup(Boolean loadOnStartup) { this.loadOnStartup = loadOnStartup;}
|
public void setIsLoadOnStartup(Boolean loadOnStartup) { this.loadOnStartup = loadOnStartup;}
|
||||||
|
public void setCollectionConfigName(String name) { this.collectionConfigName = name;}
|
||||||
|
|
||||||
public String getInstanceDir() { return instanceDir; }
|
public String getInstanceDir() { return instanceDir; }
|
||||||
public String getSchemaName() { return schemaName; }
|
public String getSchemaName() { return schemaName; }
|
||||||
|
@ -88,6 +90,7 @@ public class CoreAdminRequest extends SolrRequest
|
||||||
public String getCoreNodeName() { return coreNodeName; }
|
public String getCoreNodeName() { return coreNodeName; }
|
||||||
public Boolean getIsLoadOnStartup() { return loadOnStartup; }
|
public Boolean getIsLoadOnStartup() { return loadOnStartup; }
|
||||||
public Boolean getIsTransient() { return isTransient; }
|
public Boolean getIsTransient() { return isTransient; }
|
||||||
|
public String getCollectionConfigName() { return collectionConfigName;}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SolrParams getParams() {
|
public SolrParams getParams() {
|
||||||
|
@ -137,6 +140,11 @@ public class CoreAdminRequest extends SolrRequest
|
||||||
if (loadOnStartup != null) {
|
if (loadOnStartup != null) {
|
||||||
params.set(CoreAdminParams.LOAD_ON_STARTUP, loadOnStartup);
|
params.set(CoreAdminParams.LOAD_ON_STARTUP, loadOnStartup);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (collectionConfigName != null) {
|
||||||
|
params.set("collection.configName", collectionConfigName);
|
||||||
|
}
|
||||||
|
|
||||||
return params;
|
return params;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1538,6 +1538,9 @@ public abstract class AbstractFullDistribZkTestBase extends AbstractDistribZkTes
|
||||||
}
|
}
|
||||||
|
|
||||||
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();
|
ModifiableSolrParams params = new ModifiableSolrParams();
|
||||||
params.set("action", CollectionAction.CREATE.toString());
|
params.set("action", CollectionAction.CREATE.toString());
|
||||||
for (Map.Entry<String, Object> entry : collectionProps.entrySet()) {
|
for (Map.Entry<String, Object> entry : collectionProps.entrySet()) {
|
||||||
|
@ -1553,6 +1556,10 @@ public abstract class AbstractFullDistribZkTestBase extends AbstractDistribZkTes
|
||||||
numShards = (Integer) OverseerCollectionProcessor.COLL_PROPS.get(REPLICATION_FACTOR);
|
numShards = (Integer) OverseerCollectionProcessor.COLL_PROPS.get(REPLICATION_FACTOR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (confSetName != null) {
|
||||||
|
params.set("collection.configName", confSetName);
|
||||||
|
}
|
||||||
|
|
||||||
int clientIndex = random().nextInt(2);
|
int clientIndex = random().nextInt(2);
|
||||||
List<Integer> list = new ArrayList<Integer>();
|
List<Integer> list = new ArrayList<Integer>();
|
||||||
list.add(numShards);
|
list.add(numShards);
|
||||||
|
@ -1592,6 +1599,18 @@ public abstract class AbstractFullDistribZkTestBase extends AbstractDistribZkTes
|
||||||
client);
|
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
|
@Override
|
||||||
protected SolrServer createNewSolrServer(int port) {
|
protected SolrServer createNewSolrServer(int port) {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -102,27 +102,26 @@ public abstract class AbstractZkTestCase extends SolrTestCaseJ4 {
|
||||||
zkClient.makePath("/collections/control_collection/shards", CreateMode.PERSISTENT, true);
|
zkClient.makePath("/collections/control_collection/shards", CreateMode.PERSISTENT, true);
|
||||||
|
|
||||||
// for now, always upload the config and schema to the canonical names
|
// for now, always upload the config and schema to the canonical names
|
||||||
putConfig(zkClient, solrhome, config, "solrconfig.xml");
|
putConfig("conf1", zkClient, solrhome, config, "solrconfig.xml");
|
||||||
putConfig(zkClient, solrhome, schema, "schema.xml");
|
putConfig("conf1", zkClient, solrhome, schema, "schema.xml");
|
||||||
|
|
||||||
putConfig(zkClient, solrhome, "solrconfig.snippet.randomindexconfig.xml");
|
|
||||||
putConfig(zkClient, solrhome, "stopwords.txt");
|
|
||||||
putConfig(zkClient, solrhome, "protwords.txt");
|
|
||||||
putConfig(zkClient, solrhome, "currency.xml");
|
|
||||||
putConfig(zkClient, solrhome, "open-exchange-rates.json");
|
|
||||||
putConfig(zkClient, solrhome, "mapping-ISOLatin1Accent.txt");
|
|
||||||
putConfig(zkClient, solrhome, "old_synonyms.txt");
|
|
||||||
putConfig(zkClient, solrhome, "synonyms.txt");
|
|
||||||
|
|
||||||
|
putConfig("conf1", zkClient, solrhome, "solrconfig.snippet.randomindexconfig.xml");
|
||||||
|
putConfig("conf1", zkClient, solrhome, "stopwords.txt");
|
||||||
|
putConfig("conf1", zkClient, solrhome, "protwords.txt");
|
||||||
|
putConfig("conf1", zkClient, solrhome, "currency.xml");
|
||||||
|
putConfig("conf1", zkClient, solrhome, "open-exchange-rates.json");
|
||||||
|
putConfig("conf1", zkClient, solrhome, "mapping-ISOLatin1Accent.txt");
|
||||||
|
putConfig("conf1", zkClient, solrhome, "old_synonyms.txt");
|
||||||
|
putConfig("conf1", zkClient, solrhome, "synonyms.txt");
|
||||||
zkClient.close();
|
zkClient.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void putConfig(SolrZkClient zkClient, File solrhome, final String name)
|
public static void putConfig(String confName, SolrZkClient zkClient, File solrhome, final String name)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
putConfig(zkClient, solrhome, name, name);
|
putConfig(confName, zkClient, solrhome, name, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void putConfig(SolrZkClient zkClient, File solrhome, final String srcName, String destName)
|
public static void putConfig(String confName, SolrZkClient zkClient, File solrhome, final String srcName, String destName)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
File file = new File(solrhome, "collection1"
|
File file = new File(solrhome, "collection1"
|
||||||
+ File.separator + "conf" + File.separator + srcName);
|
+ File.separator + "conf" + File.separator + srcName);
|
||||||
|
@ -131,7 +130,7 @@ public abstract class AbstractZkTestCase extends SolrTestCaseJ4 {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
String destPath = "/configs/conf1/" + destName;
|
String destPath = "/configs/" + confName + "/" + destName;
|
||||||
log.info("put " + file.getAbsolutePath() + " to " + destPath);
|
log.info("put " + file.getAbsolutePath() + " to " + destPath);
|
||||||
zkClient.makePath(destPath, file, false, true);
|
zkClient.makePath(destPath, file, false, true);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue