Skip to content

HashRing.key_to_nodes/3 gives unexpected results #39

@fireproofsocks

Description

@fireproofsocks

Given this ring:

iex> ring = HashRing.new() 
  |> HashRing.add_node(:a@localhost) 
  |> HashRing.add_node(:b@localhost)
#<Ring[:b@localhost, :a@localhost]>

Request to get a list of 2 nodes for the key 14:

iex> HashRing.key_to_nodes(ring, 14, 2)

Expected result is 2 nodes:

[:a@localhost, :b@localhost]

Actual result is one node:

[:a@localhost]

Forgive me if I'm misreading HashRing.key_to_nodes/3 but it sounds like if you ask for 2 nodes and your ring has 2 nodes, then the result should contain 2 nodes. If that's not the case, then the docs should be clarified. On the other hand, if this represents a bug in how certain nodes are calculated due to the names (?) of the nodes, then the fix is something more than just clarifying the docs.

See also: https://elixirforum.com/t/unexpected-behavior-from-libring-hashring-unlucky-number-14/69333

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions