You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@solr.apache.org by "Houston Putman (Jira)" <ji...@apache.org> on 2021/12/16 18:30:00 UTC

[jira] [Updated] (SOLR-15803) Allow AssignStrategy to process multiple AssignRequests with cross-coordination

     [ https://issues.apache.org/jira/browse/SOLR-15803?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Houston Putman updated SOLR-15803:
----------------------------------
    Attachment: Screen Shot 2021-12-16 at 1.23.40 PM.png

> Allow AssignStrategy to process multiple AssignRequests with cross-coordination
> -------------------------------------------------------------------------------
>
>                 Key: SOLR-15803
>                 URL: https://issues.apache.org/jira/browse/SOLR-15803
>             Project: Solr
>          Issue Type: Improvement
>          Components: SolrCloud
>            Reporter: Houston Putman
>            Assignee: Houston Putman
>            Priority: Major
>         Attachments: Screen Shot 2021-12-16 at 1.23.40 PM.png
>
>          Time Spent: 50m
>  Remaining Estimate: 0h
>
> When doing testing for SOLR-15795, I found that if you have an empty node when running the REPLACENODE command, then many times all replicas will be placed on that same node, even if it doesn't result in an even distribution in your cluster.
> When looking at the code, it made sense. The ReplaceNodeCmd goes through a loop for every replica on the sourceNode, and uses the AssignStrategy class to assign a node for each replica, using the clusterstate. However, the clusterstate does not change between these replicas, so the most advantageous node for 1 replica, is likely going to be the most advantageous for many replicas given the same cluster state. Therefore all replicas were being scheduled for the same node in my testing.
> An easy (in theory) solution is to let AssignStrategy take a list of AssignRequests in assign(), and each request in this list will account for the replicaPlacements decided for the previous requests in the list. That way, the ReplaceNodeCmd can create it's list of AssignRequests, and issue them all at once to AssignStrategy, which will come up with the _optimal_ plan for all replicas *together*.
> Because this is an API in assignStrategy, it will work with the new autoscaling APIs or using the legacy assign strategy.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org