[
https://issues.apache.org/jira/browse/SOLR-4114?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Per Steffensen updated SOLR-4114:
---------------------------------
Attachment: SOLR-4114.patch
About SOLR-4114.patch:
* It fits on top of revision 1412602 of branch lucene_solr_4_0
* The shard allocation algorithm explained
** Shards are allocated to Solr servers one by one. The next shard is always
assigned to the next server in a shuffled list of live servers. Whenever you
reach the end of the list of live servers you start over again.
** Replica for a certain shard are allocated to the #replication-factor next
servers in the list
** replication-factor is reduced if it is requested to be higher than "the
number of live servers - 1". Kinda pointless to run two shards belonging to the
same slice on the same server
*** Unfortunately only able to log the decission about such a
replication-factor reduction - no easy way to get info back to caller since the
job is handled asynchronously by the Overseer
* Besides that a bug-fix included
** OverseerCollectionProcessor.createCollection and .collectionCmd reused
params-objects too much. The same params-object was used for several submits to
ShardHandler, but since the ShardsHandler issues asynchronous jobs, the
params-object might be changed by the OverseerCollectionProcessor before the
asynchronous job is executed - resulting in a lot of fun :-) Comments added
around the fixes
*** This bug does not appear to be fixed on lucene_solr_4_0
*** It appears to be partly fixed on branch_4x - fixed in collectionCmd (used
for delete and reload) but not in createCollection (used for create)
* Besides that a little cleaning up - I know you don't like it, but my eyes
cannot handle such mess :-)
** BasicDistributedZkTest: Introduced method getCommonCloudSolrServer to be
used instead of just using solrj. The solrj variable was initialized in method
queryServer but used lots of other places. For this to work your test needs to
call queryServer before any of the other methods using solrj. This is fragile,
when you change the test, and if you (as I did) commented out parts of the test.
** HttpShardHandler: Made getURLs thread-safe so that you do not have to be so
careful using it
** General: Took a small step towards consistent usage of terms collection,
node-name, node-base-url, slice, shard and replica. All over the code the terms
are mixed up, I took the opportunity to clean up in the code nearby my changes.
IMHO you should do a lot more cleaing up in this project. I will try to sneak
in clean-ups whenever I can :-) My view on correct meaning of terms
*** collection: A big logical bucket to fill data into
*** slice: A logical part of a collection. A part of the data going into a
collection goes into a particular slice. Slices for a particular collection are
non-overlapping
*** shard: A physical instance of a slice. Running without replica there is one
shard per slice. Running with replication-factor X there are X+1 shards per
slice.
*** node-base-url: The prefix/base (up to and including the webapp-context) of
the URL for a specific Solr server
*** node-name: A logical name for the Solr server - the same as node-base-url
except /'s are replaced by _'s and the protocol part (http(s)://) is removed
If you dont want the cleaning up stuff the following parts of the patch can be
left out
* BasicDistributedZkTest: Eveything except maybe the change from "new
ZkCoreNodeProps(node).getCoreUrl()" to
"ZkCoreNodeProps.getCoreUrl(node.getStr(ZkStateReader.BASE_URL_PROP),
collection)" in method getUrlFromZk
* ShardHandler: Everything
* HttpShardHandler: Everything
* OverseerCollectionProcessor: The renaming stuff
The important stuff is in OverseerCollectionProcessor - the modified shard
allocation algoritm that allows for multiple shards from the same collection on
each Solr server, and the bug-fix dealing with too eager reuse of
params-objects.
> Collection API: Allow multiple shards from one collection on the same Solr
> server
> ---------------------------------------------------------------------------------
>
> Key: SOLR-4114
> URL: https://issues.apache.org/jira/browse/SOLR-4114
> Project: Solr
> Issue Type: New Feature
> Components: multicore, SolrCloud
> Affects Versions: 4.0
> Environment: Solr 4.0.0 release
> Reporter: Per Steffensen
> Assignee: Per Steffensen
> Labels: collection-api, multicore, shard, shard-allocation
> Attachments: SOLR-4114.patch
>
>
> We should support running multiple shards from one collection on the same
> Solr server - the run a collection with 8 shards on a 4 Solr server cluster
> (each Solr server running 2 shards).
> Performance tests at our side has shown that this is a good idea, and it is
> also a good idea for easy elasticity later on - it is much easier to move an
> entire existing shards from one Solr server to another one that just joined
> the cluter than it is to split an exsiting shard among the Solr that used to
> run it and the new Solr.
> See dev mailing list discussion "Multiple shards for one collection on the
> same Solr server"
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]