Ben Nemec f4a25f6429 Fix memcache pool client in monkey-patched environments
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
2019-02-27 16:19:34 +00:00
2018-07-03 16:10:58 +07:00
2018-12-20 20:09:03 +01:00
2017-04-08 22:33:53 +08:00
2017-07-11 21:51:41 +08:00
2018-07-03 16:10:58 +07:00
2018-06-21 13:15:06 +08:00
2019-02-09 21:05:56 -06:00
2017-03-03 00:02:46 +00:00
2018-07-03 16:10:58 +07:00
2018-10-09 13:32:34 +00:00

Team and repository tags

image

oslo.cache

Latest Version

Downloads

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.

Description
An oslo.config enabled dogpile.cache.
Readme 5.6 MiB
Languages
Python 99.7%
Shell 0.3%