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

Robert Collins robertc at robertcollins.net
Tue Sep 2 21:33:47 UTC 2014


The implementation in ceilometer is very different to the Ironic one -
are you saying the test you linked fails with Ironic, or that it fails
with the ceilometer code today?

The Ironic hash_ring implementation uses a hash:
    def _get_partition(self, data):
        try:
            return (struct.unpack_from('>I', hashlib.md5(data).digest())[0]
                    >> self.partition_shift)
        except TypeError:
            raise exception.Invalid(
                    _("Invalid data supplied to HashRing.get_hosts."))


so I don't see the fixed size thing you're referring to. Could you
point a little more specifically? Thanks!

-Rob

On 1 September 2014 19:48, Nejc Saje <nsaje at redhat.com> wrote:
> 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
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev



-- 
Robert Collins <rbtcollins at hp.com>
Distinguished Technologist
HP Converged Cloud



More information about the OpenStack-dev mailing list