Fix cleanup of device jobs on device yank

This commit is contained in:
Kovid Goyal 2010-05-25 09:15:04 -06:00
parent c0fbc32e4c
commit cdbfc91eff

View File

@ -37,6 +37,7 @@ class DeviceJob(BaseJob):
self.exception = None
self.job_manager = job_manager
self._details = _('No details available.')
self._aborted = False
def start_work(self):
self.start_time = time.time()
@ -55,7 +56,11 @@ class DeviceJob(BaseJob):
self.start_work()
try:
self.result = self.func(*self.args, **self.kwargs)
if self._aborted:
return
except (Exception, SystemExit), err:
if self._aborted:
return
self.failed = True
self._details = unicode(err) + '\n\n' + \
traceback.format_exc()
@ -63,6 +68,12 @@ class DeviceJob(BaseJob):
finally:
self.job_done()
def abort(self, err):
self._aborted = True
self.failed = True
self._details = unicode(err)
self.exception = err
@property
def log_file(self):
return cStringIO.StringIO(self._details.encode('utf-8'))