#202 ipsilon-server-install fails to emit error message, fails silently
Closed: Fixed None Opened 3 years ago by jdennis.

Some error messages from ipsilon-server-install are never emitted, they do not appear either on the console nor in the log file.

For example, when this message is generated:

Hostname: jdennis-ipsilon is not a FQDN

it's simply lost, nothing is emitted on the console and nothing appears in the log file other than messages concerning plugin loading, the error is absent.

The ipsilon-server-install command appears to have done nothing with no explanation.


Fields changed

owner: => jdennis
status: new => assigned

The problem is where the log level is set:

    openlogs()
    try:
        fplugins = find_plugins()
        opts = parse_args(fplugins)

        logger.setLevel(logging.DEBUG)
        ...
    except Exception, e:  # pylint: disable=broad-except
        logger.debug(e, exc_info=1)

        if 'uninstall' in opts and opts['uninstall'] is True:
            logger.info('Uninstallation aborted.')
        else:
            logger.info('Installation aborted.')
        logger.info('See log file %s for details' % LOGFILE)

The default log level is ERROR. If code above the logger.setLevel() raises an exception then the calls to logger.debug() and logger.info() inside the exception handler will not emit anything because the default logging level of ERROR filters them out. The consequence is the program just seems to exit without any information as to why.

The solution is simple

1) the log level should be set prior to executing any code that might emit log messages

2) the exception handler should probably log the message at the info level to the console in addition to logging the error along with it's backtrace at the debug level in the logfile.

_comment0: The problem is where the log level is set:

{{{
openlogs()
try:
fplugins = find_plugins()
opts = parse_args(fplugins)

    logger.setLevel(logging.DEBUG)
    ...
except Exception, e:  # pylint: disable=broad-except
    logger.debug(e, exc_info=1)

    if 'uninstall' in opts and opts['uninstall'] is True:
        logger.info('Uninstallation aborted.')
    else:
        logger.info('Installation aborted.')
    logger.info('See log file %s for details' % LOGFILE)

}}}

The default log level is ERROR. If code above the logger.setLevel() raises an exception then the calls to logger.debug() and logger.info() inside the exception handler will not emit anything because the default logging level of ERROR filters them out. The consequence is the program just seems to exit without any information as to why.

The solution is simple

1) the log level should be set prior to executing any code that might emit log messages

2) the exception handler should probably log the message at the error level, not the debug level. => 1447361594470131

Fields changed

patch_available: 0 => 1

master: e174925

resolution: => fixed
status: assigned => closed

Metadata Update from @rcritten:
- Issue assigned to jdennis

2 years ago

Login to comment on this ticket.

Metadata