diff options
author | wangxiyuan <wangxiyuan@huawei.com> | 2018-02-08 17:19:28 +0800 |
---|---|---|
committer | wangxiyuan <wangxiyuan@huawei.com> | 2018-02-22 16:27:31 +0800 |
commit | ce06c0ce1035964ecf117bd56f769174508dc269 (patch) | |
tree | 5b926ea3e21d84dd6f1975d3d2df11bda11da49f /keystonemiddleware | |
parent | 2a6a905949cd456667eaec6fb1cf5f09d03a97e2 (diff) | |
download | keystonemiddleware-ce06c0ce1035964ecf117bd56f769174508dc269.tar.gz |
Add arguments for MemcacheClientPool init
Now keystonemiddleware use oslo.cache to init the
MemcacheClientPool. The MemcacheClientPool in
Olso.cache needs (urls, arguments, **kwargs) parameter
to init, but keystonemiddleware passed only
(urls, **kwargs). Then it leads the error:
__init__() takes exactly 3 arguments (2 given)
This patch fixed this issue.
Please note that even this error is fixed, set
"memcache_use_advanced_pool = True" will lead another
error, see bug #1747565 for the detail. It will be
fixed in the following patch.
Closes-bug: #1748160
Change-Id: I642f959ab8b010207314312a6b6a06a6de23e92c
Diffstat (limited to 'keystonemiddleware')
-rw-r--r-- | keystonemiddleware/auth_token/_cache.py | 11 | ||||
-rw-r--r-- | keystonemiddleware/tests/unit/auth_token/test_cache.py | 9 |
2 files changed, 18 insertions, 2 deletions
diff --git a/keystonemiddleware/auth_token/_cache.py b/keystonemiddleware/auth_token/_cache.py index b2e9036..18f4882 100644 --- a/keystonemiddleware/auth_token/_cache.py +++ b/keystonemiddleware/auth_token/_cache.py @@ -88,11 +88,12 @@ class _CachePool(list): class _MemcacheClientPool(object): """An advanced memcached client pool that is eventlet safe.""" - def __init__(self, memcache_servers, **kwargs): + def __init__(self, memcache_servers, arguments, **kwargs): # NOTE(sileht): This will import python-memcached, we don't want # it as hard dependency, so lazy load it. from oslo_cache import _memcache_pool self._pool = _memcache_pool.MemcacheClientPool(memcache_servers, + arguments, **kwargs) @contextlib.contextmanager @@ -120,12 +121,17 @@ class TokenCache(object): def __init__(self, log, cache_time=None, env_cache_name=None, memcached_servers=None, - use_advanced_pool=False, **kwargs): + use_advanced_pool=False, dead_retry=None, socket_timeout=None, + **kwargs): self._LOG = log self._cache_time = cache_time self._env_cache_name = env_cache_name self._memcached_servers = memcached_servers self._use_advanced_pool = use_advanced_pool + self._arguments = { + 'dead_retry': dead_retry, + 'socket_timeout': socket_timeout + } self._memcache_pool_options = kwargs self._cache_pool = None @@ -137,6 +143,7 @@ class TokenCache(object): elif self._use_advanced_pool and self._memcached_servers: return _MemcacheClientPool(self._memcached_servers, + self._arguments, **self._memcache_pool_options) else: diff --git a/keystonemiddleware/tests/unit/auth_token/test_cache.py b/keystonemiddleware/tests/unit/auth_token/test_cache.py index 6fa1ef2..542f9a1 100644 --- a/keystonemiddleware/tests/unit/auth_token/test_cache.py +++ b/keystonemiddleware/tests/unit/auth_token/test_cache.py @@ -150,3 +150,12 @@ class TestLiveMemcache(base.BaseAuthTokenTestCase): token_cache.initialize({}) token_cache.set(token, data) self.assertEqual(token_cache.get(token), data) + + def test_memcache_pool_init(self): + conf = { + 'memcached_servers': ','.join(MEMCACHED_SERVERS), + 'memcache_use_advanced_pool': True + } + + token_cache = self.create_simple_middleware(conf=conf)._token_cache + token_cache.initialize({}) |