Beispiel #1
0
 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))
Beispiel #2
0
 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))
Beispiel #3
0
 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))
Beispiel #4
0
    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