[
https://issues.apache.org/jira/browse/HDFS-9903?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alexander Shorin updated HDFS-9903:
-----------------------------------
Summary: File can be created, but still couldn't be found when path is sort
of Unicode (was: File could be created, but still not found when path is sort
of Unicode)
> File can be created, but still couldn't be found when path is sort of Unicode
> -----------------------------------------------------------------------------
>
> Key: HDFS-9903
> URL: https://issues.apache.org/jira/browse/HDFS-9903
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: webhdfs
> Affects Versions: 2.6.0
> Reporter: Alexander Shorin
>
> {code}
> >>> import requests
> >>> requests.put('http://localhost:50070/webhdfs/v1/tmp/bug/%E1%BF%B9?user.name=test&op=MKDIRS')
> <Response [200]>
> >>> requests.get('http://localhost:50070/webhdfs/v1/tmp/bug/%E1%BF%B9?user.name=test&op=GETFILESTATUS')
> <Response [200]>
> >>> resp =
> >>> requests.put('http://localhost:50070/webhdfs/v1/tmp/bug/%E1%BF%B9/test.txt?user.name=test&op=CREATE',
> >>> allow_redirects=False)
> >>> resp
> <Response [307]>
> >>> loc = resp.headers['location']
> >>> resp = requests.put(loc, data='bug')
> >>> resp
> <Response [201]>
> >>> resp =
> >>> requests.get('http://localhost:50070/webhdfs/v1/tmp/bug/%E1%BF%B9/test.txt?user.name=test&op=GETFILESTATUS')
> >>> resp.content
> '{"RemoteException":{"exception":"FileNotFoundException","javaClassName":"java.io.FileNotFoundException","message":"File
> does not exist: /tmp/bug/\xe1\xbf\xb9/test.txt"}}'
> >> resp = requests.put(loc, data='bug')
> >>> resp
> <Response [403]>
> >>> resp.content
> '{"RemoteException":{"exception":"FileAlreadyExistsException","javaClassName":"org.apache.hadoop.fs.FileAlreadyExistsException","message":"/tmp/bug/?/test.txt
> for client 127.0.0.1 already exists\\n\\tat
> org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInternal(FSNamesystem.java:2782)\\n\\tat
>
> org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInt(FSNamesystem.java:2674)\\n\\tat
>
> org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFile(FSNamesystem.java:2559)\\n\\tat
>
> org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.create(NameNodeRpcServer.java:592)\\n\\tat
>
> org.apache.hadoop.hdfs.server.namenode.AuthorizationProviderProxyClientProtocol.create(AuthorizationProviderProxyClientProtocol.java:110)\\n\\tat
>
> org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.create(ClientNamenodeProtocolServerSideTranslatorPB.java:395)\\n\\tat
>
> org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)\\n\\tat
>
> org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:617)\\n\\tat
> org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1060)\\n\\tat
> org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2086)\\n\\tat
> org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2082)\\n\\tat
> java.security.AccessController.doPrivileged(Native Method)\\n\\tat
> javax.security.auth.Subject.doAs(Subject.java:415)\\n\\tat
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1671)\\n\\tat
> org.apache.hadoop.ipc.Server$Handler.run(Server.java:2080)\\n"}}'
> {code}
> Things to notice:
> 1. While we receive HTTP 201 Created on file creation, it couldn't be found
> via API. Physically it exists and really created.
> 2. The GETFILESTATUS against the file returns, again, not the best JSON, but
> Python can parse UTF-8 bits there;
> 3. The second attempt to create the file on the same location borks the
> Unicode in path within the error message;
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)