def run_elect_coordinator(self): for group_id, hooks in six.iteritems(self._hooks_elected_leader): leader_lock = self._get_leader_lock(group_id) if leader_lock.acquire(blocking=False): # We got the lock hooks.run(coordination.LeaderElected(group_id, self._member_id))
def run_elect_coordinator(self): for group_id, hooks in six.iteritems(self._hooks_elected_leader): # Try to grab the lock, if that fails, that means someone has it # already. leader_lock = self._get_leader_lock(group_id) if leader_lock.acquire(blocking=False): # We got the lock hooks.run(coordination.LeaderElected(group_id, self._member_id))
def run_elect_coordinator(self): for group_id in six.iterkeys(self._hooks_elected_leader): leader_lock = self._get_group_leader_lock(group_id) if leader_lock.is_acquired: # Previously acquired/still leader, leave it be... continue if leader_lock.acquire(blocking=False): # We are now leader for this group self._hooks_elected_leader[group_id].run( coordination.LeaderElected(group_id, self._member_id))
def run_watchers(self): ret = [] while True: try: cb = self._watchers.get(block=False) except six.moves.queue.Empty: break ret.extend(cb()) for group_id in six.iterkeys(self._hooks_elected_leader): if self._get_group_leader_lock(group_id).acquire(blocking=False): # We are now leader for this group self._hooks_elected_leader[group_id].run( coordination.LeaderElected(group_id, self._member_id)) return ret