示例#1
0
    def fix_unclean_shutdown(self, args: Namespace,
                             chain_config: ChainConfig) -> None:
        self.logger.info("Cleaning up unclean shutdown...")

        self.logger.info("Searching for process id files in %s..." %
                         chain_config.data_dir)
        pidfiles = tuple(chain_config.data_dir.glob('*.pid'))
        if len(pidfiles) > 1:
            self.logger.info(
                'Found %d processes from a previous run. Closing...' %
                len(pidfiles))
        elif len(pidfiles) == 1:
            self.logger.info('Found 1 process from a previous run. Closing...')
        else:
            self.logger.info(
                'Found 0 processes from a previous run. No processes to kill.')

        for pidfile in pidfiles:
            process_id = int(pidfile.read_text())
            kill_process_id_gracefully(process_id, time.sleep, self.logger)
            try:
                pidfile.unlink()
                self.logger.info(
                    'Manually removed %s after killing process id %d' %
                    (pidfile, process_id))
            except FileNotFoundError:
                self.logger.debug(
                    'pidfile %s was gone after killing process id %d' %
                    (pidfile, process_id))

        db_ipc = chain_config.database_ipc_path
        try:
            db_ipc.unlink()
            self.logger.info(
                'Removed a dangling IPC socket file for database connections at %s',
                db_ipc)
        except FileNotFoundError:
            self.logger.debug(
                'The IPC socket file for database connections at %s was already gone',
                db_ipc)

        jsonrpc_ipc = chain_config.jsonrpc_ipc_path
        try:
            jsonrpc_ipc.unlink()
            self.logger.info(
                'Removed a dangling IPC socket file for JSON-RPC connections at %s',
                jsonrpc_ipc,
            )
        except FileNotFoundError:
            self.logger.debug(
                'The IPC socket file for JSON-RPC connections at %s was already gone',
                jsonrpc_ipc,
            )
示例#2
0
def fix_unclean_shutdown(chain_config: ChainConfig,
                         logger: logging.Logger) -> None:
    logger.info("Cleaning up unclean shutdown...")

    pidfiles = tuple(chain_config.data_dir.glob('*.pid'))
    if len(pidfiles) > 1:
        logger.info('Found %d processes from a previous run. Closing...' %
                    len(pidfiles))
    elif len(pidfiles) == 1:
        logger.info('Found 1 process from a previous run. Closing...')
    else:
        logger.info('Found 0 processes from a previous run. Nothing to do.')

    for pidfile in pidfiles:
        process_id = int(pidfile.read_text())
        kill_process_id_gracefully(process_id, time.sleep, logger)
        try:
            pidfile.unlink()
        except FileNotFoundError:
            logger.info('file %s was gone after killing process id %d' %
                        (pidfile, process_id))