Skip to content

Commit

Permalink
Ensure glance-api application is "greened"
Browse files Browse the repository at this point in the history
Fixes bug 1052640

Avoid unresponsiveness during long-lived I/O-bound operations by
ensuring that the standard socket libraries are monkey-patched in
all code-paths.

Change-Id: If672c26f2b462d1abcfc86e20256957f73f98fde
  • Loading branch information
Eoghan Glynn committed Sep 19, 2012
1 parent 923b901 commit 8f42dac
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions glance/common/wsgi.py
Expand Up @@ -193,7 +193,7 @@ def hup(*args):

if CONF.workers == 0:
# Useful for profiling, test, debug etc.
self.pool = eventlet.GreenPool(size=self.threads)
self.pool = self.create_pool()
self.pool.spawn_n(self._single_run, self.app_func(), self.sock)
return
else:
Expand All @@ -204,6 +204,10 @@ def hup(*args):
while len(self.children) < CONF.workers:
self.run_child()

def create_pool(self):
eventlet.patcher.monkey_patch(all=False, socket=True)
return eventlet.GreenPool(size=self.threads)

def wait_on_children(self):
while self.running:
try:
Expand Down Expand Up @@ -266,8 +270,7 @@ def run_server(self):
except Exception:
msg = _("eventlet 'poll' hub is not available on this platform")
raise exception.WorkerCreationFailure(reason=msg)
eventlet.patcher.monkey_patch(all=False, socket=True)
self.pool = eventlet.GreenPool(size=self.threads)
self.pool = self.create_pool()
try:
eventlet.wsgi.server(self.sock, self.app_func(),
log=WritableLogger(self.logger), custom_pool=self.pool)
Expand Down

0 comments on commit 8f42dac

Please sign in to comment.