Merge "Warn if read_affinity is configured but not enabled"

This commit is contained in:
Jenkins 2014-01-13 19:31:08 +00:00 committed by Gerrit Code Review
commit 7988a5e006
2 changed files with 14 additions and 4 deletions

View File

@ -1820,8 +1820,7 @@ def affinity_key_function(affinity_str):
priority values are what comes after the equals sign.
If affinity_str is empty or all whitespace, then the resulting function
will not alter the ordering of the nodes. However, if affinity_str
contains an invalid value, then None is returned.
will not alter the ordering of the nodes.
:param affinity_str: affinity config value, e.g. "r1z2=3"
or "r1=1, r2z1=2, r2z2=2"

View File

@ -148,7 +148,7 @@ class Application(object):
raise ValueError(
'Invalid request_node_count value: %r' % ''.join(value))
try:
read_affinity = conf.get('read_affinity', '')
self._read_affinity = read_affinity = conf.get('read_affinity', '')
self.read_affinity_sort_key = affinity_key_function(read_affinity)
except ValueError as err:
# make the message a little more useful
@ -210,6 +210,15 @@ class Application(object):
max_container_name_length=constraints.MAX_CONTAINER_NAME_LENGTH,
max_object_name_length=constraints.MAX_OBJECT_NAME_LENGTH)
def check_config(self):
"""
Check the configuration for possible errors
"""
if self._read_affinity and self.sorting_method != 'affinity':
self.logger.warn("sorting_method is set to '%s', not 'affinity'; "
"read_affinity setting will have no effect." %
self.sorting_method)
def get_controller(self, path):
"""
Get the controller to handle a request.
@ -543,4 +552,6 @@ def app_factory(global_conf, **local_conf):
"""paste.deploy app factory for creating WSGI proxy apps."""
conf = global_conf.copy()
conf.update(local_conf)
return Application(conf)
app = Application(conf)
app.check_config()
return app