
First off, this is an ugly hack, but we're dealing with code that essentially monkey-patches a monkey-patch. You reap what you sow. Per the linked bug, our connection pool client explodes on python 3 with eventlet monkey-patching in force: TypeError: object() takes no parameters This is due to the way __new__ is overridden in the class. We need to strip arguments from the call before they get to object(), which doesn't accept args. Unfortunately, when we're _not_ monkey-patched, adding the new override implementation fails with: TypeError: object.__new__(_MemcacheClient) is not safe, use Client.__new__() As such, we need different implementations depending on whether we are monkey-patched or not. This change passes both with and without monkey-patching and adds a unit test that exposes the bug. Note that this is a temporary, backportable fix that will ultimately be replaced by a switch to the pymemcache library which does not have the threading.local problem being worked around here. Change-Id: I039dffadeebd0ff4479b9c870c257772c43aba53 Partial-Bug: 1812935
Team and repository tags
oslo.cache
oslo.cache aims to provide a generic caching mechanism for OpenStack projects by wrapping the dogpile.cache library. The dogpile.cache library provides support memoization, key value storage and interfaces to common caching backends such as Memcached.
- Free software: Apache license
- Documentation: https://docs.openstack.org/oslo.cache/latest/
- Source: https://git.openstack.org/cgit/openstack/oslo.cache/
- Bugs: https://bugs.launchpad.net/oslo.cache
- Release notes: https://docs.openstack.org/releasenotes/oslo.cache/
Description
Languages
Python
99.7%
Shell
0.3%