[ 
https://issues.apache.org/jira/browse/HDFS-3592?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18073698#comment-18073698
 ] 

ASF GitHub Bot commented on HDFS-3592:
--------------------------------------

hfutatzhanghb commented on code in PR #8411:
URL: https://github.com/apache/hadoop/pull/8411#discussion_r3085407487


##########
hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs/hdfs.c:
##########
@@ -2759,24 +2763,48 @@ int hdfsRename(hdfsFS fs, const char *oldPath, const 
char *newPath)
         goto done;
     }
 
-    // Rename the file
-    // TODO: use rename2 here?  (See HDFS-3592)
-    jthr = invokeMethod(env, &jVal, INSTANCE, jFS, JC_FILE_SYSTEM,
-            "rename", JMETHOD2(JPARAM(HADOOP_PATH), JPARAM
-            (HADOOP_PATH), "Z"), jOldPath, jNewPath);
+    jthr = fetchEnumInstance(env, "org/apache/hadoop/fs/Options$Rename", 
"NONE",
+            &jRenameOptionsNone);
     if (jthr) {
         errno = printExceptionAndFree(env, jthr, PRINT_EXC_ALL,
-            "hdfsRename(oldPath=%s, newPath=%s): FileSystem#rename",
-            oldPath, newPath);
+            "hdfsRename: Options.Rename.NONE");

Review Comment:
   Sir, we don't need log here because it does not invoke rename2 method here. 
We log the path at following code:
   
   ```java
       jthr = invokeMethod(env, NULL, INSTANCE, jFS, JC_FILE_SYSTEM,
               "rename", JMETHOD3(JPARAM(HADOOP_PATH), JPARAM(HADOOP_PATH),
               "[Lorg/apache/hadoop/fs/Options$Rename;", JAVA_VOID),
               jOldPath, jNewPath, jOptsArr);
       if (jthr) {
           errno = printExceptionAndFree(env, jthr, PRINT_EXC_ALL,
               "hdfsRename(oldPath=%s, newPath=%s): FileSystem#rename(rename2)",
               oldPath, newPath);
           goto done;
       }
   ``` 





> libhdfs should use ClientProtocol::rename2
> ------------------------------------------
>
>                 Key: HDFS-3592
>                 URL: https://issues.apache.org/jira/browse/HDFS-3592
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>    Affects Versions: 2.0.0-alpha, 3.0.0-alpha1
>            Reporter: Colin McCabe
>            Assignee: Colin McCabe
>            Priority: Minor
>              Labels: BB2015-05-TBR, pull-request-available
>         Attachments: HDFS-3592.001.patch
>
>
> It would be nice if libhdfs exposed rename2.  This version of rename is much 
> more verbose about any errors that occur-- it throws AccessControlException, 
> FileAlreadyExists, FileNotFoundException, ParentNotDirectoryException, etc.
> The original rename returns false in many distinct cases, making it ambiguous 
> exactly what the problem was.
> For something like fuse_dfs, it is very important to return the correct errno 
> code when an error has occurred.  rename2 would allow us to do that.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to