helix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HELIX-631) AutoRebalanceStrategy does not work correctly all the time
Date Thu, 22 Sep 2016 23:28:20 GMT

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

ASF GitHub Bot commented on HELIX-631:
--------------------------------------

Github user kanakb commented on a diff in the pull request:

    https://github.com/apache/helix/pull/52#discussion_r80157395
  
    --- Diff: helix-core/src/main/java/org/apache/helix/controller/rebalancer/strategy/AutoRebalanceStrategy.java
---
    @@ -177,15 +176,26 @@ private void assignOrphans() {
         while (it.hasNext()) {
           Replica replica = it.next();
           boolean added = false;
    -      int startIndex = computeRandomStartIndex(replica);
    -      for (int index = startIndex; index < startIndex + _liveNodesList.size(); index++)
{
    -        Node receiver = _liveNodesList.get(index % _liveNodesList.size());
    -        if (receiver.capacity > receiver.currentlyAssigned && receiver.canAdd(replica))
{
    -          receiver.currentlyAssigned = receiver.currentlyAssigned + 1;
    -          receiver.nonPreferred.add(replica);
    -          receiver.newReplicas.add(replica);
    -          added = true;
    -          break;
    +
    +      // first find if it preferred node still has capacity
    +      Node preferred = _preferredAssignment.get(replica);
    +      if (preferred.capacity > preferred.currentlyAssigned && preferred.canAdd(replica))
{
    --- End diff --
    
    Can you refactor this into a method, since this is basically the same code as below?


> AutoRebalanceStrategy does not work correctly all the time
> ----------------------------------------------------------
>
>                 Key: HELIX-631
>                 URL: https://issues.apache.org/jira/browse/HELIX-631
>             Project: Apache Helix
>          Issue Type: Bug
>            Reporter: Subbu
>            Assignee: Lei Xia
>
> I have 16 partitions, 3 replicas each, and 4 instances to distribute these on. The auto-rebalancer
assigns only 2 replicas for one of the partitions.
> Here is the code snippet to reproduce the problem
> {code}
>     final String resourceName = "something";
>     final List<String> instanceNames = null; // Initialize to 4 unique strings
>     final int nReplicas = 3;
>     List<String> partitions = new ArrayList<>(nPartitions);
>     for (int i = 0; i < nPartitions; i++) {
>       partitions.add(Integer.toString(i));
>     }
>     LinkedHashMap<String, Integer> states = new LinkedHashMap<>(2);
>     states.put("OFFLINE", 0);
>     states.put("ONLINE", nReplicas);
>     AutoRebalanceStrategy strategy = new AutoRebalanceStrategy(resourceName, partitions,
states);
>     ZNRecord znRecord = strategy.computePartitionAssignment(instanceNames, new HashMap<String,
Map<String, String>>(0), instanceNames);
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message