From eda257421f21f78fb4d5b9818995567d88d7d5b0 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 30 Jun 2018 08:37:36 +0530 Subject: [PATCH] Show conversion log on exceptions --- src/calibre/srv/jobs.py | 1 + src/calibre/utils/ipc/simple_worker.py | 7 ++++++- src/pyj/book_list/convert_book.pyj | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/calibre/srv/jobs.py b/src/calibre/srv/jobs.py index 3447991131..3398cd42a0 100644 --- a/src/calibre/srv/jobs.py +++ b/src/calibre/srv/jobs.py @@ -45,6 +45,7 @@ class Job(Thread): except WorkerError as err: import traceback self.traceback = err.orig_tb or traceback.format_exc() + self.log_path = getattr(err, 'log_path', None) else: self.result, self.log_path = result['result'], result['stdout_stderr'] self.done = True diff --git a/src/calibre/utils/ipc/simple_worker.py b/src/calibre/utils/ipc/simple_worker.py index a54213d0d4..d754cec621 100644 --- a/src/calibre/utils/ipc/simple_worker.py +++ b/src/calibre/utils/ipc/simple_worker.py @@ -20,9 +20,10 @@ from calibre.utils.ipc.launch import Worker class WorkerError(Exception): - def __init__(self, msg, orig_tb=''): + def __init__(self, msg, orig_tb='', log_path=None): Exception.__init__(self, msg) self.orig_tb = orig_tb + self.log_path = log_path class ConnectedWorker(Thread): @@ -225,6 +226,10 @@ def fork_job(mod_name, func_name, args=(), kwargs={}, timeout=300, # seconds communicate(ans, w, listener, (mod_name, func_name, args, kwargs, module_is_source_code), timeout=timeout, heartbeat=heartbeat, abort=abort) + except WorkerError as e: + if not no_output: + e.log_path = w.log_path + raise finally: t = Thread(target=w.kill) t.daemon=True diff --git a/src/pyj/book_list/convert_book.pyj b/src/pyj/book_list/convert_book.pyj index 483792d736..75bce2bc2f 100644 --- a/src/pyj/book_list/convert_book.pyj +++ b/src/pyj/book_list/convert_book.pyj @@ -92,7 +92,7 @@ def show_failure(response): if response.traceback: log += response.traceback if response.log: - log += '\n\n' + _('Conversion log') + log += '\n\n' + _('Conversion log') + '\n\n' log += response.log c.appendChild(E.pre(log))