diff --git a/keystonemiddleware/auth_token/_cache.py b/keystonemiddleware/auth_token/_cache.py index b2e90362..18f48829 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 6fa1ef2d..542f9a16 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({})