Issue 32014: multiprocessing Server's shutdown method useless send message to manager (original) (raw)

When shutdown the manager, Server's handle_request will send back message to the manager, so is useless for the Server's shutdown method send back "None" to the manager?

Source code from Lib/multiprocessing/managers.py:

def shutdown(self, c):
    '''
    Shutdown this process
    '''
    try:
        util.debug('manager received shutdown message')
        # Is useless here?
        c.send(('#RETURN', None))
    except:
        import traceback
        traceback.print_exc()
    finally:
        self.stop_event.set()

Server's handle_request may throw and catch exception because the conn is closed in _finalize_manager() after Server's shutdown method returns.

code from handle_request():

    try:
        c.send(msg)
    except Exception as e:
        try:
            c.send(('#TRACEBACK', format_exc()))
        except Exception:
            pass

code from _finalize_manager():

        try:
            conn = _Client(address, authkey=authkey)
            try:
                dispatch(conn, None, 'shutdown')
            finally:
                conn.close()
        except Exception:
            pass

Also the Server's shutdown method only used by manager class.