[lib] Protect against more unicode errors in REST logging
e.g. there are corner cases with HiveServer2 REST transport not
properly handled yet. So better to have a generic logging and no
end user failure instead.
@@ -117,6 +117,7 @@ class Resource(object):
# Output duration without content
log_length = conf.REST_RESPONSE_SIZE.get() != -1 and conf.REST_RESPONSE_SIZE.get() if log_response else 0
duration = time.time() - start_time
+ try:
message = '%s %s %s%s%s %s%s returned in %dms %s %s %s%s' % (
method,
type(self._client._session.auth) if self._client._session and self._client._session.auth else None,
@@ -131,6 +132,10 @@ class Resource(object):
smart_str(resp.content, errors='replace')[:log_length] if resp else '',
log_length and len(resp.content) > log_length and '...' or '' if resp else ''
)
+ except:
+ short_call_name = '%s %s' % (method, self._client._base_url)
+ LOG.exception('Error logging return call %s' % short_call_name)
+ message = '%s returned in %dms' % (short_call_name, duration)
self._client.logger.disabled = 0
log_if_slow_call(duration=duration, message=message, logger=self._client.logger)
