]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commitdiff
Allow operators to customize max header size
authorFlorent Flament <florent.flament-ext@cloudwatt.com>
Fri, 17 Jan 2014 10:54:27 +0000 (10:54 +0000)
committerGerrit Code Review <review@openstack.org>
Mon, 10 Feb 2014 09:18:25 +0000 (09:18 +0000)
HTTP messages max header line size has been increased from 8K to 16K
by default to allow using tokens including up to 14-15 catalog
entries.  The same issue
(https://bugs.launchpad.net/swift/+bug/1190149) may occur again in
the future, if keystone's catalog grows further.

Allowing operators to customize the max header size, will allow them
to have Cinder working whatever the size of the catalog (if the option
is properly set).

Change-Id: Iac269d96fadc96c1e9383dc03422f2d87196dd9d
Related-Bug: #1190149
DocImpact

cinder/wsgi.py
etc/cinder/cinder.conf.sample

index cee88a06e05d84350da4941fd8da62dc1eb6ec81..168a1a1f04b826866cd8415837a80815af0b9d82 100644 (file)
@@ -59,14 +59,21 @@ socket_opts = [
                     "the server securely"),
 ]
 
+eventlet_opts = [
+    cfg.IntOpt('max_header_line',
+               default=16384,
+               help="Maximum line size of message headers to be accepted. "
+                    "max_header_line may need to be increased when using "
+                    "large tokens (typically those generated by the "
+                    "Keystone v3 API with big service catalogs)."),
+]
+
 CONF = cfg.CONF
 CONF.register_opts(socket_opts)
+CONF.register_opts(eventlet_opts)
 
 LOG = logging.getLogger(__name__)
 
-# Raise the default from 8192 to accommodate large tokens
-eventlet.wsgi.MAX_HEADER_LINE = 16384
-
 
 class Server(object):
     """Server class to manage a WSGI server, serving a WSGI application."""
@@ -85,6 +92,8 @@ class Server(object):
         :returns: None
 
         """
+        # Allow operators to customize http requests max header line size.
+        eventlet.wsgi.MAX_HEADER_LINE = CONF.max_header_line
         self.name = name
         self.app = app
         self._host = host or "0.0.0.0"
index 069708ac28615df0cd635e92ab3c45d7c1b98302..9d1072c49afdee35332fd4d8dd2f7a33cab301ac 100644 (file)
 # Options defined in cinder.wsgi
 #
 
+# Maximum line size of message headers to be accepted.
+# max_header_line may need to be increased when using large
+# tokens (typically those generated by the Keystone v3 API
+# with big service catalogs). (integer value)
+#max_header_line=16384
+
 # Sets the value of TCP_KEEPIDLE in seconds for each server
 # socket. Not supported on OS X. (integer value)
 #tcp_keepidle=600