From 15f6de65e05c91190e9d7c0d16af4c9fdfcc4d79 Mon Sep 17 00:00:00 2001 From: Julien Danjou Date: Thu, 8 Jun 2017 14:44:51 +0200 Subject: [PATCH] coordination: remove double serialization of capabilities The capabilities was meant to be a byte string only, but since now all drivers have been enhanced to serialize the data in a way or another, it accepts anything. There's no need to pass a byte string anymore. Change-Id: Ib732dccd18d67edd9e39e990b8ca3a8da7ab5663 --- tooz/coordination.py | 3 +-- tooz/partitioner.py | 22 ++++------------------ 2 files changed, 5 insertions(+), 20 deletions(-) diff --git a/tooz/coordination.py b/tooz/coordination.py index 02bb24f..14aff4a 100755 --- a/tooz/coordination.py +++ b/tooz/coordination.py @@ -277,8 +277,7 @@ class CoordinationDriver(object): :return: A :py:class:`~tooz.partitioner.Partitioner` object. """ - self.join_group_create( - group_id, capabilities=utils.dumps({'weight': weight})) + self.join_group_create(group_id, capabilities={'weight': weight}) return partitioner.Partitioner(self, group_id, partitions=partitions) def leave_partitioned_group(self, partitioner): diff --git a/tooz/partitioner.py b/tooz/partitioner.py index 7ff44fa..dd5fb05 100644 --- a/tooz/partitioner.py +++ b/tooz/partitioner.py @@ -13,13 +13,7 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. -import logging - from tooz import hashring -from tooz import utils - - -LOG = logging.getLogger(__name__) class Partitioner(object): @@ -45,20 +39,12 @@ class Partitioner(object): self._coord.watch_leave_group(self.group_id, self._on_member_leave) self.ring = hashring.HashRing([], partitions=self.partitions) for m_id, cap in caps: - self.ring.add_node(m_id, utils.loads(cap.get()).get("weight", 1)) + self.ring.add_node(m_id, cap.get().get("weight", 1)) def _on_member_join(self, event): - try: - weight = utils.loads(self._coord.get_member_capabilities( - self.group_id, event.member_id).get()).get("weight", 1) - except utils.SerializationError: - # This node does not seem to have joined with the partitioner - # system, so just ignore it. - LOG.warning( - "Node %s did not join group %s in partition mode, ignoring", - self.group_id, event.member_id) - else: - self.ring.add_node(event.member_id, weight) + weight = self._coord.get_member_capabilities( + self.group_id, event.member_id).get().get("weight", 1) + self.ring.add_node(event.member_id, weight) def _on_member_leave(self, event): self.ring.remove_node(event.member_id)