[openstack-dev] [Ironic] (Non-)consistency of the Ironic hash ring implementation

Nejc Saje nsaje at redhat.com
Mon Sep 1 07:48:46 UTC 2014


Hey guys,

in Ceilometer we're using consistent hash rings to do workload 
partitioning[1]. We've considered generalizing your hash ring 
implementation and moving it up to oslo, but unfortunately your 
implementation is not actually consistent, which is our requirement.

Since you divide your ring into a number of equal sized partitions, 
instead of hashing hosts onto the ring, when you add a new host,
an unbound amount of keys get re-mapped to different hosts (instead of 
the 1/#nodes remapping guaranteed by hash ring). I've confirmed this 
with the test in aforementioned patch[2].

If this is good enough for your use-case, great, otherwise we can get a 
generalized hash ring implementation into oslo for use in both projects 
or we can both use an external library[3].

Cheers,
Nejc

[1] https://review.openstack.org/#/c/113549/
[2] 
https://review.openstack.org/#/c/113549/21/ceilometer/tests/test_utils.py
[3] https://pypi.python.org/pypi/hash_ring



More information about the OpenStack-dev mailing list