Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-762

Load balancing does not account for the load of the moving node

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Low
    • Resolution: Fixed
    • Fix Version/s: 0.5
    • Component/s: None
    • Labels:
      None
    • Severity:
      Low

      Description

      Given a node A (with load 10 gb) and a node B (with load 20 gb), running the loadbalance command against node A will:
      1. Remove node A from the ring

      • Recalculates pending ranges so that node B is responsible for the entire ring
        2. Pick the most loaded node
      • node B is still reporting 20 gb load, because that is all it has locally
        3. Choose a token that divides the range of the most loaded node in half

      Since the token calculation doesn't take into account the load that node B is 'inheriting' from node A, the token will divide node B's load in half and swap the loads. Instead, the token calculation needs to pretend that B has already inherited the 10 gb from node A, for a total of 30 gb. The token that should be chosen falls at 15 gb of the total load, or 5 gb into node B's load.

        Attachments

          Activity

            People

            • Assignee:
              stuhood Stu Hood
              Reporter:
              stuhood Stu Hood
              Authors:
              Stu Hood
            • Votes:
              1 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: