コード例 #1
0
ファイル: manager.py プロジェクト: jxdn/confluent
def follow_leader(remote):
    global currentleader
    cfm.follow_channel(remote)
    # The leader has folded, time to startup again...
    cfm.stop_following()
    currentleader = None
    eventlet.spawn_n(start_collective)
コード例 #2
0
def follow_leader(remote, leader):
    global currentleader
    cleanexit = False
    try:
        cfm.follow_channel(remote)
    except greenlet.GreenletExit:
        cleanexit = True
    finally:
        if cleanexit:
            log.log({
                'info': 'Previous following cleanly closed',
                'subsystem': 'collective'
            })
            return
        log.log({
            'info':
            'Current leader ({0}) has disappeared, restarting '
            'collective membership'.format(leader),
            'subsystem':
            'collective'
        })
        # The leader has folded, time to startup again...
        cfm.stop_following()
        currentleader = None
        eventlet.spawn_n(start_collective)
コード例 #3
0
def follow_leader(remote, leader):
    global currentleader
    global retrythread
    global follower
    cleanexit = False
    newleader = None
    try:
        exitcause = cfm.follow_channel(remote)
        newleader = exitcause.get('newleader', None)
    except greenlet.GreenletExit:
        cleanexit = True
    finally:
        if cleanexit:
            log.log({
                'info': 'Previous following cleanly closed',
                'subsystem': 'collective'
            })
            return
        if newleader:
            log.log({
                'info':
                'Previous leader directed us to join new leader {}'.format(
                    newleader)
            })
            if connect_to_leader(None, get_myname(), newleader):
                return
        log.log({
            'info':
            'Current leader ({0}) has disappeared, restarting '
            'collective membership'.format(leader),
            'subsystem':
            'collective'
        })
        # The leader has folded, time to startup again...
        follower = None
        cfm.stop_following()
        currentleader = None
        if retrythread is None:  # start a recovery
            retrythread = eventlet.spawn_after(random.random(),
                                               start_collective)