Houston Putman created SOLR-15803:
-------------------------------------

             Summary: 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
      Security Level: Public (Default Security Level. Issues are Public)
          Components: SolrCloud
            Reporter: Houston Putman
            Assignee: Houston Putman


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

Reply via email to