浏览代码

[desktop] UTF8 decode byte strings before printing

This annoying bug affects unit tests. Since we're just printing out random byte
strings from random HTTP endpoints, there is no guarantee that we're getting
text. And we often don't, when we do file I/O with WebHDFS. This causes us to
log non-UTF8 safe stuff, which makes nosetest put non-UTF8 data into the XML
report file, which means that Jenkins can't parse it.
bc Wong 11 年之前
父节点
当前提交
5d13ff8
共有 1 个文件被更改,包括 8 次插入3 次删除
  1. 8 3
      desktop/core/src/desktop/lib/rest/resource.py

+ 8 - 3
desktop/core/src/desktop/lib/rest/resource.py

@@ -17,6 +17,8 @@
 import logging
 import posixpath
 
+from desktop.lib.i18n import smart_unicode
+
 LOG = logging.getLogger(__name__)
 
 
@@ -72,9 +74,12 @@ class Resource(object):
                                 allow_redirects=allow_redirects,
                                 urlencode=self._urlencode)
 
-    self._client.logger.debug(
-        "%s Got response: %s%s" %
-        (method, resp.content[:32], len(resp.content) > 32 and "..." or ""))
+    if self._client.logger.isEnabledFor(logging.DEBUG):
+      self._client.logger.debug(
+          "%s Got response: %s%s" %
+          (method,
+           smart_unicode(resp.content[:32], errors='replace'),
+           len(resp.content) > 32 and "..." or ""))
 
     return self._format_response(resp)