diff options
author | wangxiyuan <wangxiyuan@huawei.com> | 2018-02-08 17:19:28 +0800 |
---|---|---|
committer | imacdonn <iain.macdonnell@oracle.com> | 2018-07-23 21:26:25 +0000 |
commit | c21f7f43eef21f4b78273058b86fc5b9005f1d93 (patch) | |
tree | 0484d251fdbe08d25928444aa2f0776e3e28ce34 | |
parent | 3fc10b237affb9614a6591f494ab7e8490b81cce (diff) | |
download | keystonemiddleware-c21f7f43eef21f4b78273058b86fc5b9005f1d93.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.
Conflicts:
keystonemiddleware/tests/unit/auth_token/test_cache.py
Closes-bug: #1748160
Change-Id: I642f959ab8b010207314312a6b6a06a6de23e92c
(cherry picked from commit ce06c0ce1035964ecf117bd56f769174508dc269)
-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 52eb0f2..8951b37 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 @@ -123,12 +124,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 @@ -140,6 +146,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 691c429..f2f8658 100644 --- a/keystonemiddleware/tests/unit/auth_token/test_cache.py +++ b/keystonemiddleware/tests/unit/auth_token/test_cache.py @@ -153,6 +153,15 @@ class TestLiveMemcache(base.BaseAuthTokenTestCase): 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({}) + class TestMemcachePoolAbstraction(utils.TestCase): def setUp(self): |