[ 
https://issues.apache.org/jira/browse/SOLR-5319?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13790153#comment-13790153
 ] 

Shalin Shekhar Mangar commented on SOLR-5319:
---------------------------------------------

The doc router stored in the collection zk node is not used anywhere. We should 
just remove that code.

> 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-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to