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:
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
Given this ring:
Request to get a list of
2nodes for the key14:Expected result is 2 nodes:
Actual result is one node:
Forgive me if I'm misreading
HashRing.key_to_nodes/3but it sounds like if you ask for2nodes 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