On Tue, Sep 22, 2020 at 11:15:39AM -0500, Eric Blake wrote:
When using nbdsh for scripting, it is convenient to let nbdsh fail with status 1 when encountering an API failure. However, doing so by letting the nbd.Error exception leak all the way causes ABRT (at least on Fedora 32 with abrt-python3-handler installed) to assume the program crashed from a programming error, and needlessly complicates clients to have to add try: blocks. Better is if nbdsh itself handles the problem, and only prints a stack trace when debugging is in effect, but otherwise just prints the error message. In this way, the user is not presented with a wall of python stack trace, and ABRT does not think that the exception was unhandled.
See https://github.com/libguestfs/nbdkit/commit/e13048fd9 for an example of client cleanup made more verbose if we don't patch libnbd. ---
On IRC, we decided that printing the stack trace can be useful when debugging (if -c triggers calls through some deeply-nested python code), but generally gets in the way for default behavior.
python/nbdsh.py | 20 ++++++++++++++++---- sh/test-error.sh | 23 ++++++++++++++++++++++- 2 files changed, 38 insertions(+), 5 deletions(-)
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|