* morituri/program/cdrdao.py:

Wrap read in an exception handler.
	* morituri/common/task.py:
	  Debug exceptions more.
This commit is contained in:
Thomas Vander Stichele
2009-09-11 15:41:51 +00:00
parent e6f13ccf84
commit d30eb59a66
3 changed files with 31 additions and 15 deletions

View File

@@ -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>
* HACKING:

View File

@@ -345,8 +345,8 @@ class SyncRunner(TaskRunner, ITaskListener):
self.debug('done running task %r', task)
if task.exception:
# FIXME: this gave a traceback in the logging module
#self.debug('raising exception, %r',
# log.getExceptionMessage(self._task.exception))
self.debug('raising exception, %r',
log.getExceptionMessage(task.exception))
raise task.exception
def _startWrap(self, task):
@@ -355,6 +355,8 @@ class SyncRunner(TaskRunner, ITaskListener):
try:
task.start(self)
except Exception, e:
self.debug('exception during start: %r',
log.getExceptionMessage(e))
task.exception = e
self.stopped(task)

View File

@@ -260,24 +260,31 @@ class CDRDAOTask(task.Task):
self.runner.schedule(1.0, self._read, runner)
def _read(self, runner):
ret = self._popen.recv()
try:
ret = self._popen.recv()
if ret:
self.log("read from stdout: %s", ret)
self.readbytesout(ret)
if ret:
self.log("read from stdout: %s", ret)
self.readbytesout(ret)
ret = self._popen.recv_err()
ret = self._popen.recv_err()
if ret:
self.log("read from stderr: %s", ret)
self.readbyteserr(ret)
if ret:
self.log("read from stderr: %s", ret)
self.readbyteserr(ret)
if self._popen.poll() is None:
# not finished yet
self.runner.schedule(1.0, self._read, runner)
return
if self._popen.poll() is None:
# not finished yet
self.runner.schedule(1.0, self._read, runner)
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):
self.debug('Return code was %d', self._popen.returncode)