summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Totzke <patricktotzke@gmail.com>2013-01-22 21:09:10 +0000
committerPatrick Totzke <patricktotzke@gmail.com>2013-01-22 21:09:10 +0000
commitd99c7151ac1c32bbac4976096689be32ff79cb02 (patch)
treed22f4158055fd5098c1eed22d6e80a1787a6a2b6
parent94b508293106659b044f9fb84f09adc0fa5fd29e (diff)
parent27f2051c44a3dd614b391e3f5ae7dca97257f64b (diff)
Merge branch '0.3.3-fix-411'
-rw-r--r--alot/db/manager.py18
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()