• Matt Stancliff's avatar
    Cluster: Fix trib create when masters==replicas · df4bdbf6
    Matt Stancliff authored
    This bug was introduced in 2e5c394f during a refactor.
    
    It took me a while to understand what was going on with
    the code, so I've refactored it further by:
      - Replacing boolean values with meaningful symbols
      - Replacing 'i' with a meaningful variable name
      - Adding the proper abort check
      - Factoring out now duplicated conditionals
      - Adding optional verbose logging (we're inside *four*
        different looping constructs, so it takes a while to
        figure out where all the moving parts are)
      - Updating comment for the section
    
    This fixes a problem when the number of master instances
    equaled the number of replica instances.  Before, when
    there were equal numbers of both, nodes_count would go to
    zero, but the while loop would spin in i < @replicas because
    i would never be updated (because the nodes_list of each ip
    was length == 0, which triggered an endless loop of
    next -> i = 0 -> 0 < 1? -> true -> next -> i = 0 ...)
    
    Thanks to carlo who found this problem at:
    https://groups.google.com/forum/#!topic/redis-db/_WVVqDw5B7c
    df4bdbf6
redis-trib.rb 35.9 KB