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
This commit is contained in:
parent
2a6a905949
commit
ce06c0ce10
|
@ -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:
|
||||
|
|
|
@ -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({})
|
||||
|
|
Loading…
Reference in New Issue