Michal Arbet 788d3c4969 Switch to eventlet-safe oslo.cache's MemcacheClientPool
In past days there were discussions about various issues
with memcached connections [1][2][3].

After investigation it looks like common root cause for above
problems is keystonemiddleware. More precisely said the way
how keystonemiddleware is caching tokens.

Currently it's using some home-made CachePool with direct
usage of memcached library, moreover it looks like its
approach is not eventlet-safe.
Discussion can be mainly found in [4].

Fortunately keystonemiddleware can use "advanced cache pool",
which is oslo.cache's implementation and was added long time ago [5],
but it is turned on only if memcache_use_advanced_pool=True.

This patch is switching to more elaborated oslo.cache CachePool
and adding deprecation warning about eventlet-unsafe variant
of keystonemiddleware's memcache pool.

How to reproduce ?

with memcache_use_advanced_pool=False

1. Build clean ENV of openstack
2. Deploy core projects (keystone,glance,nova,placement...)
3. Run while true; do COMMAND FOR SERVICE; done
   - several bashes, in parallel (5-7)

COMMAND FOR SERVICE:
- openstack network list
- openstack volume list
- openstack server list
- openstack image list

4. Check memcached connections (which will grow up):
    - ss | grep 11211 | wc -l   every second

How to fix and test it ?

Repeat above, to fix:
 - with memcache_use_advanced_pool=True
   OR
 - apply this patch

Compare measurements in graph.

[1] https://bugs.launchpad.net/keystonemiddleware/+bug/1892852
[2] https://bugs.launchpad.net/oslo.cache/+bug/1888394
[3] https://bugs.launchpad.net/keystonemiddleware/+bug/1883659

[4] https://review.opendev.org/c/openstack/oslo.cache/+/742193

[5] https://review.opendev.org/c/openstack/keystonemiddleware/+/268664

Closes-Bug: #1883659
Closes-Bug: #1892852
Closes-Bug: #1888394

Change-Id: I0e96334b65a0bf369ebf1d88651d13feb8d2ecac
2021-02-11 14:36:25 +00:00
2017-10-02 21:57:27 -05:00
2019-04-19 19:35:58 +00:00
2017-10-02 21:57:27 -05:00
2014-06-19 15:45:29 -07:00
2017-07-20 16:38:16 +08:00
2014-06-19 15:45:29 -07:00
2019-09-18 14:47:21 +08:00
2020-02-06 17:31:16 +00:00
2017-04-06 22:03:25 +00:00
2020-03-30 10:32:07 +00:00

Team and repository tags

image

Middleware for the OpenStack Identity API (Keystone)

Latest Version

Downloads

This package contains middleware modules designed to provide authentication and authorization features to web services other than Keystone <https://github.com/openstack/keystone>. The most prominent module is keystonemiddleware.auth_token. This package does not expose any CLI or Python API features.

For information on contributing, see CONTRIBUTING.rst.

For any other information, refer to the parent project, Keystone:

https://github.com/openstack/keystone

Description
OpenStack Identity (Keystone) Middleware
Readme 13 MiB
Languages
Python 100%