← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1484163] [NEW] cache.backend = keystone.cache.memcache_pool cause error

 

*** This bug is a duplicate of bug 1440493 ***
    https://bugs.launchpad.net/bugs/1440493

Public bug reported:

keystone.conf:

    [cache]
    backend=keystone.cache.memcache_pool
    memcache_servers=db0.stack:11211

with this settings, keystone makes below error when request token

2015-08-13 00:11:44.489 689 DEBUG keystone.common.cache._memcache_pool [-] Memcached pool 139851635173456, thread 139851778242368: Acquiring connection _debug_logger /opt/openstack/src/keystone/keystone/common/cache/_memcache_pool.py:91
2015-08-13 00:11:44.490 689 ERROR keystone.common.wsgi [-] super(type, obj): obj must be an instance or subtype of type
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi Traceback (most recent call last):
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/common/wsgi.py", line 223, in __call__
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     result = method(context, **params)
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/token/controllers.py", line 100, in authenticate
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     context, auth)
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/token/controllers.py", line 301, in _authenticate_local
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     tenant_id = self._get_project_id_from_auth(auth)
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/token/controllers.py", line 371, in _get_project_id_from_auth
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     tenant_name, CONF.identity.default_domain_id)
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/dogpile/cache/region.py", line 1040, in decorate
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     should_cache_fn)
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/dogpile/cache/region.py", line 651, in get_or_create
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     async_creator) as value:
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/dogpile/core/dogpile.py", line 158, in __enter__
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     return self._enter()
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/dogpile/core/dogpile.py", line 91, in _enter
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     value = value_fn()
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/dogpile/cache/region.py", line 604, in get_value
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     value = self.backend.get(key)
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/dogpile/cache/backends/memcached.py", line 149, in get
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     value = self.client.get(key)
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/common/cache/backends/memcache_pool.py", line 35, in _run_method
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     with self.client_pool.acquire() as client:
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/pyenv/versions/2.7.9/lib/python2.7/contextlib.py", line 17, in __enter__
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     return self.gen.next()
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/common/cache/_memcache_pool.py", line 97, in acquire
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     conn = self.get(timeout=self._connection_get_timeout)
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/eventlet/eventlet/queue.py", line 287, in get
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     return self._get()
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/common/cache/_memcache_pool.py", line 155, in _get
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     conn = ConnectionPool._get(self)
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/common/cache/_memcache_pool.py", line 120, in _get
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     conn = self._create_connection()
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/common/cache/_memcache_pool.py", line 149, in _create_connection
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     return _MemcacheClient(self.urls, **self._arguments)
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/memcache.py", line 228, in __init__
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     super(Client, self).__init__()
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi TypeError: super(type, obj): obj must be an instance or subtype of type
2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi

when I change with

--- a/keystone/common/cache/_memcache_pool.py
+++ b/keystone/common/cache/_memcache_pool.py
-_MemcacheClient = type('_MemcacheClient', (object,),
+memcache.Client = type('memcache.Client', (object,),
                        dict(memcache.Client.__dict__))

 _PoolItem = collections.namedtuple('_PoolItem', ['ttl', 'connection'])
@@ -146,7 +146,7 @@ class MemcacheClientPool(ConnectionPool):
         self._hosts_deaduntil = [0] * len(urls)

     def _create_connection(self):
-        return _MemcacheClient(self.urls, **self._arguments)
+        return memcache.Client(self.urls, **self._arguments)

     def _destroy_connection(self, conn):
         conn.disconnect_all()

It works well

** Affects: keystone
     Importance: Undecided
         Status: Invalid

** Description changed:

  keystone.conf:
  
-     [cache]
-     backend=keystone.cache.memcache_pool
-     memcache_servers=db0.stack:11211
+     [cache]
+     backend=keystone.cache.memcache_pool
+     memcache_servers=db0.stack:11211
  
  with this settings, keystone makes below error when request token
  
  2015-08-13 00:11:44.489 689 DEBUG keystone.common.cache._memcache_pool [-] Memcached pool 139851635173456, thread 139851778242368: Acquiring connection _debug_logger /opt/openstack/src/keystone/keystone/common/cache/_memcache_pool.py:91
  2015-08-13 00:11:44.490 689 ERROR keystone.common.wsgi [-] super(type, obj): obj must be an instance or subtype of type
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi Traceback (most recent call last):
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/common/wsgi.py", line 223, in __call__
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     result = method(context, **params)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/token/controllers.py", line 100, in authenticate
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     context, auth)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/token/controllers.py", line 301, in _authenticate_local
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     tenant_id = self._get_project_id_from_auth(auth)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/token/controllers.py", line 371, in _get_project_id_from_auth
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     tenant_name, CONF.identity.default_domain_id)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/dogpile/cache/region.py", line 1040, in decorate
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     should_cache_fn)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/dogpile/cache/region.py", line 651, in get_or_create
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     async_creator) as value:
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/dogpile/core/dogpile.py", line 158, in __enter__
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     return self._enter()
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/dogpile/core/dogpile.py", line 91, in _enter
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     value = value_fn()
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/dogpile/cache/region.py", line 604, in get_value
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     value = self.backend.get(key)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/dogpile/cache/backends/memcached.py", line 149, in get
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     value = self.client.get(key)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/common/cache/backends/memcache_pool.py", line 35, in _run_method
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     with self.client_pool.acquire() as client:
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/pyenv/versions/2.7.9/lib/python2.7/contextlib.py", line 17, in __enter__
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     return self.gen.next()
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/common/cache/_memcache_pool.py", line 97, in acquire
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     conn = self.get(timeout=self._connection_get_timeout)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/eventlet/eventlet/queue.py", line 287, in get
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     return self._get()
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/common/cache/_memcache_pool.py", line 155, in _get
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     conn = ConnectionPool._get(self)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/common/cache/_memcache_pool.py", line 120, in _get
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     conn = self._create_connection()
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/common/cache/_memcache_pool.py", line 149, in _create_connection
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     return _MemcacheClient(self.urls, **self._arguments)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/memcache.py", line 228, in __init__
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     super(Client, self).__init__()
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi TypeError: super(type, obj): obj must be an instance or subtype of type
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi
  
- 
- when I chane with
+ when I change with
  
  -_MemcacheClient = type('_MemcacheClient', (object,),
  +memcache.Client = type('memcache.Client', (object,),
-                         dict(memcache.Client.__dict__))
+                         dict(memcache.Client.__dict__))
  
-  _PoolItem = collections.namedtuple('_PoolItem', ['ttl', 'connection'])
+  _PoolItem = collections.namedtuple('_PoolItem', ['ttl', 'connection'])
  @@ -146,7 +146,7 @@ class MemcacheClientPool(ConnectionPool):
-          self._hosts_deaduntil = [0] * len(urls)
+          self._hosts_deaduntil = [0] * len(urls)
  
-      def _create_connection(self):
+      def _create_connection(self):
  -        return _MemcacheClient(self.urls, **self._arguments)
  +        return memcache.Client(self.urls, **self._arguments)
  
-      def _destroy_connection(self, conn):
-          conn.disconnect_all()
- 
+      def _destroy_connection(self, conn):
+          conn.disconnect_all()
  
  It works well

** Description changed:

  keystone.conf:
  
      [cache]
      backend=keystone.cache.memcache_pool
      memcache_servers=db0.stack:11211
  
  with this settings, keystone makes below error when request token
  
  2015-08-13 00:11:44.489 689 DEBUG keystone.common.cache._memcache_pool [-] Memcached pool 139851635173456, thread 139851778242368: Acquiring connection _debug_logger /opt/openstack/src/keystone/keystone/common/cache/_memcache_pool.py:91
  2015-08-13 00:11:44.490 689 ERROR keystone.common.wsgi [-] super(type, obj): obj must be an instance or subtype of type
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi Traceback (most recent call last):
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/common/wsgi.py", line 223, in __call__
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     result = method(context, **params)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/token/controllers.py", line 100, in authenticate
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     context, auth)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/token/controllers.py", line 301, in _authenticate_local
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     tenant_id = self._get_project_id_from_auth(auth)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/token/controllers.py", line 371, in _get_project_id_from_auth
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     tenant_name, CONF.identity.default_domain_id)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/dogpile/cache/region.py", line 1040, in decorate
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     should_cache_fn)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/dogpile/cache/region.py", line 651, in get_or_create
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     async_creator) as value:
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/dogpile/core/dogpile.py", line 158, in __enter__
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     return self._enter()
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/dogpile/core/dogpile.py", line 91, in _enter
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     value = value_fn()
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/dogpile/cache/region.py", line 604, in get_value
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     value = self.backend.get(key)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/dogpile/cache/backends/memcached.py", line 149, in get
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     value = self.client.get(key)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/common/cache/backends/memcache_pool.py", line 35, in _run_method
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     with self.client_pool.acquire() as client:
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/pyenv/versions/2.7.9/lib/python2.7/contextlib.py", line 17, in __enter__
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     return self.gen.next()
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/common/cache/_memcache_pool.py", line 97, in acquire
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     conn = self.get(timeout=self._connection_get_timeout)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/eventlet/eventlet/queue.py", line 287, in get
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     return self._get()
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/common/cache/_memcache_pool.py", line 155, in _get
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     conn = ConnectionPool._get(self)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/common/cache/_memcache_pool.py", line 120, in _get
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     conn = self._create_connection()
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/common/cache/_memcache_pool.py", line 149, in _create_connection
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     return _MemcacheClient(self.urls, **self._arguments)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/memcache.py", line 228, in __init__
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     super(Client, self).__init__()
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi TypeError: super(type, obj): obj must be an instance or subtype of type
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi
  
  when I change with
  
+ --- a/keystone/common/cache/_memcache_pool.py
+ +++ b/keystone/common/cache/_memcache_pool.py
  -_MemcacheClient = type('_MemcacheClient', (object,),
  +memcache.Client = type('memcache.Client', (object,),
                          dict(memcache.Client.__dict__))
  
   _PoolItem = collections.namedtuple('_PoolItem', ['ttl', 'connection'])
  @@ -146,7 +146,7 @@ class MemcacheClientPool(ConnectionPool):
           self._hosts_deaduntil = [0] * len(urls)
  
       def _create_connection(self):
  -        return _MemcacheClient(self.urls, **self._arguments)
  +        return memcache.Client(self.urls, **self._arguments)
  
       def _destroy_connection(self, conn):
           conn.disconnect_all()
  
  It works well

** Changed in: keystone
       Status: New => Invalid

** This bug has been marked a duplicate of bug 1440493
   Crash with python-memcached==1.5.4

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to Keystone.
https://bugs.launchpad.net/bugs/1484163

Title:
  cache.backend = keystone.cache.memcache_pool cause error

Status in Keystone:
  Invalid

Bug description:
  keystone.conf:

      [cache]
      backend=keystone.cache.memcache_pool
      memcache_servers=db0.stack:11211

  with this settings, keystone makes below error when request token

  2015-08-13 00:11:44.489 689 DEBUG keystone.common.cache._memcache_pool [-] Memcached pool 139851635173456, thread 139851778242368: Acquiring connection _debug_logger /opt/openstack/src/keystone/keystone/common/cache/_memcache_pool.py:91
  2015-08-13 00:11:44.490 689 ERROR keystone.common.wsgi [-] super(type, obj): obj must be an instance or subtype of type
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi Traceback (most recent call last):
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/common/wsgi.py", line 223, in __call__
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     result = method(context, **params)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/token/controllers.py", line 100, in authenticate
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     context, auth)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/token/controllers.py", line 301, in _authenticate_local
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     tenant_id = self._get_project_id_from_auth(auth)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/token/controllers.py", line 371, in _get_project_id_from_auth
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     tenant_name, CONF.identity.default_domain_id)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/dogpile/cache/region.py", line 1040, in decorate
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     should_cache_fn)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/dogpile/cache/region.py", line 651, in get_or_create
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     async_creator) as value:
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/dogpile/core/dogpile.py", line 158, in __enter__
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     return self._enter()
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/dogpile/core/dogpile.py", line 91, in _enter
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     value = value_fn()
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/dogpile/cache/region.py", line 604, in get_value
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     value = self.backend.get(key)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/dogpile/cache/backends/memcached.py", line 149, in get
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     value = self.client.get(key)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/common/cache/backends/memcache_pool.py", line 35, in _run_method
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     with self.client_pool.acquire() as client:
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/pyenv/versions/2.7.9/lib/python2.7/contextlib.py", line 17, in __enter__
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     return self.gen.next()
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/common/cache/_memcache_pool.py", line 97, in acquire
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     conn = self.get(timeout=self._connection_get_timeout)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/eventlet/eventlet/queue.py", line 287, in get
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     return self._get()
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/common/cache/_memcache_pool.py", line 155, in _get
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     conn = ConnectionPool._get(self)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/common/cache/_memcache_pool.py", line 120, in _get
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     conn = self._create_connection()
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/src/keystone/keystone/common/cache/_memcache_pool.py", line 149, in _create_connection
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     return _MemcacheClient(self.urls, **self._arguments)
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi   File "/opt/openstack/lib/python2.7/site-packages/memcache.py", line 228, in __init__
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi     super(Client, self).__init__()
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi TypeError: super(type, obj): obj must be an instance or subtype of type
  2015-08-13 00:11:44.490 689 TRACE keystone.common.wsgi

  when I change with

  --- a/keystone/common/cache/_memcache_pool.py
  +++ b/keystone/common/cache/_memcache_pool.py
  -_MemcacheClient = type('_MemcacheClient', (object,),
  +memcache.Client = type('memcache.Client', (object,),
                          dict(memcache.Client.__dict__))

   _PoolItem = collections.namedtuple('_PoolItem', ['ttl', 'connection'])
  @@ -146,7 +146,7 @@ class MemcacheClientPool(ConnectionPool):
           self._hosts_deaduntil = [0] * len(urls)

       def _create_connection(self):
  -        return _MemcacheClient(self.urls, **self._arguments)
  +        return memcache.Client(self.urls, **self._arguments)

       def _destroy_connection(self, conn):
           conn.disconnect_all()

  It works well

To manage notifications about this bug go to:
https://bugs.launchpad.net/keystone/+bug/1484163/+subscriptions