Improve performance of safe_log().

This patch addresses a minor performance regression in a recent change
to this function.  This change ensures that the deep copy is only done
if we really need to.  Previously, the deep copy was being done for all
messages that included a 'method', not just messages with a method that
contain an argument to be sanitized.

Change-Id: I190c5963ecaf70b0aea4e12a2fdc19deb5c1fea2
This commit is contained in:
Russell Bryant
2012-03-26 09:47:26 -04:00
committed by Vishvananda Ishaya
parent 785518d181
commit ada63db6be

View File

@@ -127,7 +127,12 @@ class Connection(object):
def _safe_log(log_func, msg, msg_data):
"""Sanitizes the msg_data field before logging."""
has_method = 'method' in msg_data
SANITIZE = {
'set_admin_password': ('new_pass',),
'run_instance': ('admin_password',),
}
has_method = 'method' in msg_data and msg_data['method'] in SANITIZE
has_context_token = '_context_auth_token' in msg_data
has_token = 'auth_token' in msg_data
@@ -137,10 +142,6 @@ def _safe_log(log_func, msg, msg_data):
msg_data = copy.deepcopy(msg_data)
if has_method:
SANITIZE = {
'set_admin_password': ('new_pass',),
'run_instance': ('admin_password',),
}
method = msg_data['method']
if method in SANITIZE:
args_to_sanitize = SANITIZE[method]