summaryrefslogtreecommitdiff
path: root/alot/db/manager.py
diff options
context:
space:
mode:
Diffstat (limited to 'alot/db/manager.py')
-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()