diff options
author | Patrick Totzke <patricktotzke@gmail.com> | 2013-01-22 21:09:10 +0000 |
---|---|---|
committer | Patrick Totzke <patricktotzke@gmail.com> | 2013-01-22 21:09:10 +0000 |
commit | d99c7151ac1c32bbac4976096689be32ff79cb02 (patch) | |
tree | d22f4158055fd5098c1eed22d6e80a1787a6a2b6 | |
parent | 94b508293106659b044f9fb84f09adc0fa5fd29e (diff) | |
parent | 27f2051c44a3dd614b391e3f5ae7dca97257f64b (diff) |
Merge branch '0.3.3-fix-411'
-rw-r--r-- | alot/db/manager.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/alot/db/manager.py b/alot/db/manager.py index 535186b5..bf1581ff 100644 --- a/alot/db/manager.py +++ b/alot/db/manager.py @@ -8,6 +8,7 @@ import logging import sys import errno import signal +from twisted.internet import reactor from collections import deque @@ -312,6 +313,23 @@ class DBManager(object): process = FillPipeProcess(cbl(), pipe, fun) process.start() self.processes.append(process) + logging.debug('Worker process {0} spawned'.format(process.pid)) + + def threaded_wait(): + process.join() + + if process.exitcode < 0: + msg = 'received signal {0}'.format(-process.exitcode) + elif process.exitcode > 0: + msg = 'returned error code {0}'.format(process.exitcode) + else: + msg = 'exited successfully' + + logging.debug('Worker process {0} {1}'.format(process.pid, msg)) + self.processes.remove(process) + + reactor.callInThread(threaded_wait) + # closing the sending end in this (receiving) process guarantees # that here the apropriate EOFError is raised upon .recv in the walker sender.close() |