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 2013/12/03 11:23:47 UTC
svn commit: r1547336 - in /lucene/dev/branches/branch_4x: ./ solr/ solr/core/
solr/core/src/java/org/apache/solr/cloud/OverseerCollectionProcessor.java
solr/core/src/test/org/apache/solr/cloud/OverseerCollectionProcessorTest.java
Author: noble
Date: Tue Dec 3 10:23:46 2013
New Revision: 1547336
URL: http://svn.apache.org/r1547336
Log:
SOLR-5519
Modified:
lucene/dev/branches/branch_4x/ (props changed)
lucene/dev/branches/branch_4x/solr/ (props changed)
lucene/dev/branches/branch_4x/solr/core/ (props changed)
lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionProcessor.java
lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionProcessorTest.java
Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionProcessor.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionProcessor.java?rev=1547336&r1=1547335&r2=1547336&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionProcessor.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionProcessor.java Tue Dec 3 10:23:46 2013
@@ -47,7 +47,6 @@ import org.apache.solr.common.params.Cor
import org.apache.solr.common.params.CoreAdminParams.CoreAdminAction;
import org.apache.solr.common.params.MapSolrParams;
import org.apache.solr.common.params.ModifiableSolrParams;
-import org.apache.solr.common.params.UpdateParams;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
import org.apache.solr.common.util.StrUtils;
@@ -116,7 +115,8 @@ public class OverseerCollectionProcessor
public static final Map<String,Object> COLL_PROPS = ZkNodeProps.makeMap(
ROUTER, DocRouter.DEFAULT_NAME,
REPLICATION_FACTOR, "1",
- MAX_SHARDS_PER_NODE, "1");
+ MAX_SHARDS_PER_NODE, "1",
+ "external",null );
// TODO: use from Overseer?
@@ -1392,6 +1392,7 @@ public class OverseerCollectionProcessor
+ ". This requires " + requestedShardsToCreate
+ " shards to be created (higher than the allowed number)");
}
+ String configName = createConfNode(collectionName, message);
Overseer.getInQueue(zkStateReader.getZkClient()).offer(ZkStateReader.toJSON(message));
@@ -1406,8 +1407,6 @@ public class OverseerCollectionProcessor
if (!created)
throw new SolrException(ErrorCode.SERVER_ERROR, "Could not fully createcollection: " + message.getStr("name"));
-
- String configName = message.getStr(COLL_CONF);
log.info("going to create cores replicas shardNames {} , repFactor : {}", shardNames, repFactor);
for (int i = 1; i <= shardNames.size(); i++) {
String sliceName = shardNames.get(i-1);
@@ -1462,6 +1461,37 @@ public class OverseerCollectionProcessor
}
}
+ private String createConfNode(String coll, ZkNodeProps message) throws KeeperException, InterruptedException {
+ String configName = message.getStr(OverseerCollectionProcessor.COLL_CONF);
+ if(configName == null){
+ // if there is only one conf, use that
+ List<String> configNames=null;
+ try {
+ configNames = zkStateReader.getZkClient().getChildren(ZkController.CONFIGS_ZKNODE, null, true);
+ if (configNames != null && configNames.size() == 1) {
+ configName = configNames.get(0);
+ // no config set named, but there is only 1 - use it
+ log.info("Only one config set found in zk - using it:" + configName);
+ }
+ } catch (KeeperException.NoNodeException e) {
+
+ }
+
+ }
+
+ if(configName!= null){
+ log.info("creating collections conf node {} ",ZkStateReader.COLLECTIONS_ZKNODE + "/" + coll);
+ zkStateReader.getZkClient().makePath(ZkStateReader.COLLECTIONS_ZKNODE + "/" + coll,
+ ZkStateReader.toJSON(ZkNodeProps.makeMap(ZkController.CONFIGNAME_PROP,configName)),true );
+
+ } else {
+ String msg = "Could not obtain config name";
+ log.warn(msg);
+ }
+ return configName;
+
+ }
+
private void collectionCmd(ClusterState clusterState, ZkNodeProps message, ModifiableSolrParams params, NamedList results, String stateMatcher) {
log.info("Executing Collection Cmd : " + params);
String collectionName = message.getStr("name");
Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionProcessorTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionProcessorTest.java?rev=1547336&r1=1547335&r2=1547336&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionProcessorTest.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionProcessorTest.java Tue Dec 3 10:23:46 2013
@@ -218,6 +218,16 @@ public class OverseerCollectionProcessor
}).anyTimes();
}
+ clusterStateMock.hasCollection(anyObject(String.class));
+ expectLastCall().andAnswer(new IAnswer<Boolean>() {
+ @Override
+ public Boolean answer() throws Throwable {
+ String key = (String) getCurrentArguments()[0];
+ return collectionsSet.contains(key);
+ }
+ } ).anyTimes();
+
+
clusterStateMock.getLiveNodes();
expectLastCall().andAnswer(new IAnswer<Object>() {
@Override