Config dict arguments.url must be a list

For memcache, arguments.url is assumed to be a list, this means
that the underlying memcache library could not handle a case where
a string (comma separated) was passed in. The idea is to force a
split on ',' in the special case of backend_argument=url:...
so that a list is passed to the backend.

Change-Id: I65afb46455423d7f96e17c471330c8d74dc17cac
Closes-Bug: #1743036
This commit is contained in:
Morgan Fainberg 2018-10-16 10:50:33 -07:00
parent 92cb9a02e0
commit 685a05edfe
2 changed files with 12 additions and 0 deletions

View File

@ -120,6 +120,8 @@ def _build_cache_config(conf):
continue continue
arg_key = '.'.join([prefix, 'arguments', argname]) arg_key = '.'.join([prefix, 'arguments', argname])
if argname == 'url':
argvalue = argvalue.split(',')
conf_dict[arg_key] = argvalue conf_dict[arg_key] = argvalue
_LOG.debug('Oslo Cache Config: %s', conf_dict) _LOG.debug('Oslo Cache Config: %s', conf_dict)

View File

@ -0,0 +1,10 @@
---
other:
- >
[`bug 1743036 <https://bugs.launchpad.net/oslo.cache+bug/1743036>`_]
The `backend_argument` value(s) for `url` when configuring memcache did not
properly handle multiple servers. This is because the URL was passed as
a string (comma delimited) instead of a list to the memcache
library/client. The `url` argument is now special cased and will split
the string on a comma so that it mirrors the behavior of the ListOpt used
by `memcache_servers` option.