summaryrefslogtreecommitdiff
path: root/keystonemiddleware
diff options
context:
space:
mode:
authorwangxiyuan <wangxiyuan@huawei.com>2018-02-08 17:19:28 +0800
committerwangxiyuan <wangxiyuan@huawei.com>2018-02-22 16:27:31 +0800
commitce06c0ce1035964ecf117bd56f769174508dc269 (patch)
tree5b926ea3e21d84dd6f1975d3d2df11bda11da49f /keystonemiddleware
parent2a6a905949cd456667eaec6fb1cf5f09d03a97e2 (diff)
downloadkeystonemiddleware-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.py11
-rw-r--r--keystonemiddleware/tests/unit/auth_token/test_cache.py9
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({})