You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Shalin Shekhar Mangar (JIRA)" <ji...@apache.org> on 2013/10/09 05:22:49 UTC
[jira] [Assigned] (SOLR-5319) Collection ZK nodes do not reflect
the correct router chosen
[ https://issues.apache.org/jira/browse/SOLR-5319?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Shalin Shekhar Mangar reassigned SOLR-5319:
-------------------------------------------
Assignee: Shalin Shekhar Mangar
> Collection ZK nodes do not reflect the correct router chosen
> ------------------------------------------------------------
>
> Key: SOLR-5319
> URL: https://issues.apache.org/jira/browse/SOLR-5319
> Project: Solr
> Issue Type: Bug
> Components: SolrCloud
> Affects Versions: 4.4, 4.5, 5.0
> Reporter: Jessica Cheng
> Assignee: Shalin Shekhar Mangar
> Labels: solrcloud, zookeeper
>
> In ZkController.createCollectionZkNode, the doc router is determined by this code snippet:
> if (collectionProps.get(DocCollection.DOC_ROUTER) == null) {
> Object numShards = collectionProps.get(ZkStateReader.NUM_SHARDS_PROP);
> if (numShards == null) {
> numShards = System.getProperty(ZkStateReader.NUM_SHARDS_PROP);
> }
> if (numShards == null) {
> collectionProps.put(DocCollection.DOC_ROUTER, ImplicitDocRouter.NAME);
> } else {
> collectionProps.put(DocCollection.DOC_ROUTER, DocRouter.DEFAULT_NAME);
> }
> }
> Since OverseerCollectionProcessor never passes on any params prefixed with "collection" other than "collection.configName" in its create core commands, collectionProps.get(DocCollection.DOC_ROUTER) will never be non-null. Thus, it needs to figure out if the router is implicit or compositeID based on if numShards is passed in. However, collectionProps.get(ZkStateReader.NUM_SHARDS_PROP) will also always be null for the same reason collectionProps.get(DocCollection.DOC_ROUTER) is null, and it isn't explicitly set in the code above, so the only way for numShards not to be null is if it's passed in as a system property.
> As an example, here's a cluster state that's created as compositeId router, but the collection ZK node says it's implicit:
> in clusterstate.json:
> "example":{
> "shards":{"shard1":{
> "range":"80000000-7fffffff",
> "state":"active",
> "replicas":{"core_node1":{
> "state":"active",
> "core":"example_shard1_replica1",
> "node_name":"localhost:8983_solr",
> "base_url":"http://localhost:8983/solr",
> "leader":"true"}}}},
> "router":"compositeId"},
> in /collections/example data:
> {
> "configName":"myconf",
> "router":"implicit"}
> I've not sure if the collection ZK node router info is actually used anywhere, so it may not matter, but it's confusing.
> I think the best fix is for OverseerCollectionProcessor to pass on params prefixed with "collection." to the core creation requests. Otherwise, ZkController.createCollectionZkNode can explicitly set the numShards collectionProps by cd.getNumShards() too.
--
This message was sent by Atlassian JIRA
(v6.1#6144)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org