Removing logging calls from signal handlers

Seeing an issue in production where this signal handler is being handled
in a way that causes the eventlet hub to *not* be able to properly switch back
to its runloop properly.

My hunch is that this is happening due to the use of the threadpool and signal
handlers being forced to execute on the primary thread. That said, no repro
case whatsoever. HEISENBUG!

Change-Id: Id303e3755d89d7e2aab06dde17719fef843b01a2
This commit is contained in:
R. Tyler Croy 2011-04-11 10:18:40 -07:00
parent cae56173cd
commit 778ec46d08
1 changed files with 5 additions and 2 deletions

View File

@ -120,7 +120,6 @@ class Controller(object):
def spawn_children(self, number=1):
parent_pid = os.getpid()
self.log.debug('Controller.spawn_children(number=%d)' % number)
for i in range(number):
child_side, parent_side = os.pipe()
@ -209,8 +208,12 @@ class Controller(object):
raise
def handle_deadlychild(self, *args, **kwargs):
"""
SIGUSR1 handler, will spin up an extra child to handle the load
left over after a previously running child stops taking connections
and "dies" gracefully
"""
if self.keep_going:
self.log.debug('A child intends to die, starting replacement before it dies')
self.spawn_children(number=1)
def run(self):