You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-dev@hadoop.apache.org by "Alexander Shorin (JIRA)" <ji...@apache.org> on 2016/03/03 13:09:18 UTC

[jira] [Created] (HDFS-9896) WebHDFS API may return invalid JSON

Alexander Shorin created HDFS-9896:
--------------------------------------

             Summary: WebHDFS API may return invalid JSON
                 Key: HDFS-9896
                 URL: https://issues.apache.org/jira/browse/HDFS-9896
             Project: Hadoop HDFS
          Issue Type: Bug
          Components: webhdfs
         Environment: FreeBSD 10.2
Hadoop 2.6.0

            Reporter: Alexander Shorin


{code}
>>> import requests
>>> resp = requests.get('http://server:50000/webhdfs/v1/tmp/test/\x00/not_found.txt?op=GETFILESTATUS')
>>> resp.content
'{"RemoteException":{"exception":"FileNotFoundException","javaClassName":"java.io.FileNotFoundException","message":"File does not exist: /tmp/test/\x00/not_found.txt"}}'
>>> resp.json()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/sandbox/project/venv/lib/python2.7/site-packages/requests/models.py", line 800, in json
    self.content.decode(encoding), **kwargs
  File "/usr/local/lib/python2.7/json/__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "/usr/local/lib/python2.7/json/decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/local/lib/python2.7/json/decoder.py", line 382, in raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Invalid control character at: line 1 column 147 (char 146)
{code}

The null byte {{\x00}} should be encoded according JSON rules as {{\u0000}}. It seems like WebHDFS returns path back as is without any processing breaking the content type.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)