← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1440493] [NEW] Crash with python-memcached==1.54

 

Public bug reported:

There's some magic going on at line:
https://github.com/openstack/keystone/blob/2014.2.2/keystone/common/cache/_memcache_pool.py#L46

This magic is broken due to the fact that python-memcached added a super(...) initalization at
https://github.com/linsomniac/python-memcached/blob/master/memcache.py#L218
https://github.com/linsomniac/python-memcached/commit/45403325e0249ff0f61d6ae449a7daeeb7e852e5

Due to this change, keystone can no longer work with the latest python-
memcached version:

Traceback (most recent call last):
  File ""keystone/common/wsgi.py", line 223, in __call__
    result = method(context, **params)
  File ""keystone/identity/controllers.py", line 76, in create_user
    self.assignment_api.get_project(default_project_id)
  File ""dogpile/cache/region.py", line 1040, in decorate
    should_cache_fn)
  File ""dogpile/cache/region.py", line 651, in get_or_create
    async_creator) as value:
  File ""dogpile/core/dogpile.py", line 158, in __enter__
    return self._enter()
  File ""dogpile/core/dogpile.py", line 91, in _enter
    value = value_fn()
  File ""dogpile/cache/region.py", line 604, in get_value
    value = self.backend.get(key)
  File ""dogpile/cache/backends/memcached.py", line 149, in get
    value = self.client.get(key)
  File ""keystone/common/cache/backends/memcache_pool.py", line 35, in _run_method
    with self.client_pool.acquire() as client:
  File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__
    return self.gen.next()
  File ""keystone/common/cache/_memcache_pool.py", line 97, in acquire
    conn = self.get(timeout=self._connection_get_timeout)
  File ""eventlet/queue.py", line 293, in get
    return self._get()
  File ""keystone/common/cache/_memcache_pool.py", line 155, in _get
    conn = ConnectionPool._get(self)
  File ""keystone/common/cache/_memcache_pool.py", line 120, in _get
    conn = self._create_connection()
  File ""keystone/common/cache/_memcache_pool.py", line 149, in _create_connection
    return _MemcacheClient(self.urls, **self._arguments)
  File ""memcache.py", line 228, in __init__
    super(Client, self).__init__()
TypeError: super(type, obj): obj must be an instance or subtype of type

** Affects: keystone
     Importance: Undecided
         Status: New

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

Title:
  Crash with python-memcached==1.54

Status in OpenStack Identity (Keystone):
  New

Bug description:
  There's some magic going on at line:
  https://github.com/openstack/keystone/blob/2014.2.2/keystone/common/cache/_memcache_pool.py#L46

  This magic is broken due to the fact that python-memcached added a super(...) initalization at
  https://github.com/linsomniac/python-memcached/blob/master/memcache.py#L218
  https://github.com/linsomniac/python-memcached/commit/45403325e0249ff0f61d6ae449a7daeeb7e852e5

  Due to this change, keystone can no longer work with the latest
  python-memcached version:

  Traceback (most recent call last):
    File ""keystone/common/wsgi.py", line 223, in __call__
      result = method(context, **params)
    File ""keystone/identity/controllers.py", line 76, in create_user
      self.assignment_api.get_project(default_project_id)
    File ""dogpile/cache/region.py", line 1040, in decorate
      should_cache_fn)
    File ""dogpile/cache/region.py", line 651, in get_or_create
      async_creator) as value:
    File ""dogpile/core/dogpile.py", line 158, in __enter__
      return self._enter()
    File ""dogpile/core/dogpile.py", line 91, in _enter
      value = value_fn()
    File ""dogpile/cache/region.py", line 604, in get_value
      value = self.backend.get(key)
    File ""dogpile/cache/backends/memcached.py", line 149, in get
      value = self.client.get(key)
    File ""keystone/common/cache/backends/memcache_pool.py", line 35, in _run_method
      with self.client_pool.acquire() as client:
    File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__
      return self.gen.next()
    File ""keystone/common/cache/_memcache_pool.py", line 97, in acquire
      conn = self.get(timeout=self._connection_get_timeout)
    File ""eventlet/queue.py", line 293, in get
      return self._get()
    File ""keystone/common/cache/_memcache_pool.py", line 155, in _get
      conn = ConnectionPool._get(self)
    File ""keystone/common/cache/_memcache_pool.py", line 120, in _get
      conn = self._create_connection()
    File ""keystone/common/cache/_memcache_pool.py", line 149, in _create_connection
      return _MemcacheClient(self.urls, **self._arguments)
    File ""memcache.py", line 228, in __init__
      super(Client, self).__init__()
  TypeError: super(type, obj): obj must be an instance or subtype of type

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


Follow ups

References