* morituri/common/task.py:
Add exception traceback for easier debugging.
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
2010-06-18 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||||
|
|
||||||
|
* morituri/common/task.py:
|
||||||
|
Add exception traceback for easier debugging.
|
||||||
|
|
||||||
2010-05-23 Thomas Vander Stichele <thomas at apestaart dot org>
|
2010-05-23 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||||
|
|
||||||
* morituri.spec.in:
|
* morituri.spec.in:
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ class Task(object, log.Loggable):
|
|||||||
runner = None
|
runner = None
|
||||||
exception = None
|
exception = None
|
||||||
exceptionMessage = None
|
exceptionMessage = None
|
||||||
|
exceptionTraceback = None
|
||||||
|
|
||||||
_listeners = None
|
_listeners = None
|
||||||
|
|
||||||
@@ -124,11 +125,15 @@ class Task(object, log.Loggable):
|
|||||||
|
|
||||||
self.exception = exception
|
self.exception = exception
|
||||||
self.exceptionMessage = line
|
self.exceptionMessage = line
|
||||||
|
self.exceptionTraceback = traceback.format_exc()
|
||||||
self.debug('set exception, %r' % self.exceptionMessage)
|
self.debug('set exception, %r' % self.exceptionMessage)
|
||||||
|
|
||||||
def setException(self, exception):
|
def setException(self, exception):
|
||||||
|
import traceback
|
||||||
|
|
||||||
self.exception = exception
|
self.exception = exception
|
||||||
self.exceptionMessage = log.getExceptionMessage(exception)
|
self.exceptionMessage = log.getExceptionMessage(exception)
|
||||||
|
self.exceptionTraceback = traceback.format_exc()
|
||||||
self.debug('set exception, %r' % self.exceptionMessage)
|
self.debug('set exception, %r' % self.exceptionMessage)
|
||||||
|
|
||||||
def addListener(self, listener):
|
def addListener(self, listener):
|
||||||
@@ -386,8 +391,12 @@ class SyncRunner(TaskRunner, ITaskListener):
|
|||||||
if task.exception:
|
if task.exception:
|
||||||
# catch the exception message
|
# catch the exception message
|
||||||
# FIXME: this gave a traceback in the logging module
|
# FIXME: this gave a traceback in the logging module
|
||||||
self.debug('raising exception, %r', task.exceptionMessage)
|
self.debug('raising TaskException for %r, %r' % (
|
||||||
raise TaskException(task.exception, message=task.exceptionMessage)
|
task.exceptionMessage, task.exceptionTraceback))
|
||||||
|
msg = task.exceptionMessage
|
||||||
|
if task.exceptionTraceback:
|
||||||
|
msg += "\n" + task.exceptionTraceback
|
||||||
|
raise TaskException(task.exception, message=msg)
|
||||||
|
|
||||||
def _startWrap(self, task):
|
def _startWrap(self, task):
|
||||||
# wrap task start such that we can report any exceptions and
|
# wrap task start such that we can report any exceptions and
|
||||||
|
|||||||
Reference in New Issue
Block a user