Skip to content

Commit

Permalink
[API-702] v5 SQL: Remove unused load balancer methods (#458)
Browse files Browse the repository at this point in the history
* v5 SQL: Remove unused load balancer methods

These methods were specially added for 4.2 SQL, but they are unused
in v5. Hence, we are removing the unused methods and reverting the
changes we made around the load balancer implementations and tests.

Note that, it is perfectly safe to remove these methods in Python.
If there were users that implemented these methods, they can use
their code without changing anything.

* add explicit mappings
  • Loading branch information
mdumandag committed Aug 31, 2021
1 parent 4ea8a19 commit d613fc8
Show file tree
Hide file tree
Showing 3 changed files with 131 additions and 122 deletions.
53 changes: 6 additions & 47 deletions hazelcast/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -276,61 +276,18 @@ def next(self):
"""
raise NotImplementedError("next")

def next_data_member(self):
"""Returns the next data member to route to.
Returns:
hazelcast.core.MemberInfo: The next data member or
``None`` if no data member is available.
"""
return None

def can_get_next_data_member(self):
"""Returns whether this instance supports getting data members
through a call to :func:`next_data_member`.
Returns:
bool: ``True`` if this instance supports getting data members.
"""
return False


class _Members(object):
__slots__ = ("members", "data_members")

def __init__(self, members, data_members):
self.members = members
self.data_members = data_members


class _AbstractLoadBalancer(LoadBalancer):
def __init__(self):
self._cluster_service = None
self._members = _Members([], [])
self._members = []

def init(self, cluster_service):
self._cluster_service = cluster_service
cluster_service.add_listener(self._listener, self._listener, True)

def next(self):
members = self._members.members
return self._next(members)

def next_data_member(self):
members = self._members.data_members
return self._next(members)

def can_get_next_data_member(self):
return True

def _listener(self, _):
members = self._cluster_service.get_members()
data_members = [member for member in members if not member.lite_member]

self._members = _Members(members, data_members)

def _next(self, members):
raise NotImplementedError("_next")
self._members = self._cluster_service.get_members()


class RoundRobinLB(_AbstractLoadBalancer):
Expand All @@ -345,7 +302,8 @@ def __init__(self):
super(RoundRobinLB, self).__init__()
self._idx = 0

def _next(self, members):
def next(self):
members = self._members
if not members:
return None

Expand All @@ -358,7 +316,8 @@ def _next(self, members):
class RandomLB(_AbstractLoadBalancer):
"""A load balancer that selects a random member to route to."""

def _next(self, members):
def next(self):
members = self._members
if not members:
return None
idx = random.randrange(0, len(members))
Expand Down

0 comments on commit d613fc8

Please sign in to comment.