Don't use singleton in routes.middleware.RoutesMiddleware
It seems that using default singleton=True in the routes.middleware.RoutesMiddleware which is leading to use thread-local RequestConfig singleton object is not working well with eventlet monkeypatching of threading library which we are doing in Neutron. As a result it leaks memory in neutron-api workers every time when API request to not existing API endpoint is made by user. To avoid that memory leak, let's use singletone=False in that RoutesMiddleware object, at least until problem with thread-local singleton and eventlet monkey patching will be solved. Closes-Bug: #1942179 Change-Id: Id3a529248d3984506f0166bdc32e334127a01b7b
This commit is contained in:
parent
c235232501
commit
e610a5eb9e
@ -200,8 +200,13 @@ class ExtensionMiddleware(base.ConfigurableMiddleware):
|
||||
controller = req_controllers[request_ext.key]
|
||||
controller.add_handler(request_ext.handler)
|
||||
|
||||
# NOTE(slaweq): It seems that using singleton=True in conjunction
|
||||
# with eventlet monkey patching of the threading library doesn't work
|
||||
# well and there is memory leak. See
|
||||
# https://bugs.launchpad.net/neutron/+bug/1942179 for details
|
||||
self._router = routes.middleware.RoutesMiddleware(self._dispatch,
|
||||
mapper)
|
||||
mapper,
|
||||
singleton=False)
|
||||
super(ExtensionMiddleware, self).__init__(application)
|
||||
|
||||
@classmethod
|
||||
|
Loading…
x
Reference in New Issue
Block a user