* morituri/program/cdrdao.py:
Wrap read in an exception handler. * morituri/common/task.py: Debug exceptions more.
This commit is contained in:
@@ -1,3 +1,10 @@
|
|||||||
|
2009-09-11 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||||
|
|
||||||
|
* morituri/program/cdrdao.py:
|
||||||
|
Wrap read in an exception handler.
|
||||||
|
* morituri/common/task.py:
|
||||||
|
Debug exceptions more.
|
||||||
|
|
||||||
2009-09-11 Thomas Vander Stichele <thomas at apestaart dot org>
|
2009-09-11 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||||
|
|
||||||
* HACKING:
|
* HACKING:
|
||||||
|
|||||||
@@ -345,8 +345,8 @@ class SyncRunner(TaskRunner, ITaskListener):
|
|||||||
self.debug('done running task %r', task)
|
self.debug('done running task %r', task)
|
||||||
if task.exception:
|
if task.exception:
|
||||||
# FIXME: this gave a traceback in the logging module
|
# FIXME: this gave a traceback in the logging module
|
||||||
#self.debug('raising exception, %r',
|
self.debug('raising exception, %r',
|
||||||
# log.getExceptionMessage(self._task.exception))
|
log.getExceptionMessage(task.exception))
|
||||||
raise task.exception
|
raise task.exception
|
||||||
|
|
||||||
def _startWrap(self, task):
|
def _startWrap(self, task):
|
||||||
@@ -355,6 +355,8 @@ class SyncRunner(TaskRunner, ITaskListener):
|
|||||||
try:
|
try:
|
||||||
task.start(self)
|
task.start(self)
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
|
self.debug('exception during start: %r',
|
||||||
|
log.getExceptionMessage(e))
|
||||||
task.exception = e
|
task.exception = e
|
||||||
self.stopped(task)
|
self.stopped(task)
|
||||||
|
|
||||||
|
|||||||
@@ -260,24 +260,31 @@ class CDRDAOTask(task.Task):
|
|||||||
self.runner.schedule(1.0, self._read, runner)
|
self.runner.schedule(1.0, self._read, runner)
|
||||||
|
|
||||||
def _read(self, runner):
|
def _read(self, runner):
|
||||||
ret = self._popen.recv()
|
try:
|
||||||
|
ret = self._popen.recv()
|
||||||
|
|
||||||
if ret:
|
if ret:
|
||||||
self.log("read from stdout: %s", ret)
|
self.log("read from stdout: %s", ret)
|
||||||
self.readbytesout(ret)
|
self.readbytesout(ret)
|
||||||
|
|
||||||
ret = self._popen.recv_err()
|
ret = self._popen.recv_err()
|
||||||
|
|
||||||
if ret:
|
if ret:
|
||||||
self.log("read from stderr: %s", ret)
|
self.log("read from stderr: %s", ret)
|
||||||
self.readbyteserr(ret)
|
self.readbyteserr(ret)
|
||||||
|
|
||||||
if self._popen.poll() is None:
|
if self._popen.poll() is None:
|
||||||
# not finished yet
|
# not finished yet
|
||||||
self.runner.schedule(1.0, self._read, runner)
|
self.runner.schedule(1.0, self._read, runner)
|
||||||
return
|
return
|
||||||
|
|
||||||
self._done()
|
self._done()
|
||||||
|
except Exception, e:
|
||||||
|
self.debug('exception during _read()')
|
||||||
|
self.debug(log.getExceptionMessage(e))
|
||||||
|
import code; code.interact(local=locals())
|
||||||
|
self.exception = e
|
||||||
|
self.stop()
|
||||||
|
|
||||||
def _done(self):
|
def _done(self):
|
||||||
self.debug('Return code was %d', self._popen.returncode)
|
self.debug('Return code was %d', self._popen.returncode)
|
||||||
|
|||||||
Reference in New Issue
Block a user