You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-dev@hadoop.apache.org by "shawn (Jira)" <ji...@apache.org> on 2024/03/27 02:01:00 UTC

[jira] [Created] (HADOOP-19130) FTPFileSystem rename with full qualified path broken

shawn created HADOOP-19130:
------------------------------

             Summary: FTPFileSystem rename with full qualified path broken
                 Key: HADOOP-19130
                 URL: https://issues.apache.org/jira/browse/HADOOP-19130
             Project: Hadoop Common
          Issue Type: Bug
          Components: fs
    Affects Versions: 3.3.6, 3.3.4, 3.3.3, 0.20.2
            Reporter: shawn
         Attachments: image-2024-03-27-09-59-12-381.png

When use fs shell to rename file in ftp server, it always get "Input/output error", when full qualified path 
is passed to it(eg. ftp://user:password@localhost/pathxxx), the reason is that
changeWorkingDirectory command underneath is being passed a string with file:// uri prefix which will not be understand 
by ftp server。

!image-2024-03-27-09-59-12-381.png!

the solution should be pass absoluteSrc.getParent().toUri().getPath().toString to avoid
file:// uri prefix, like this: 
{code:java}
--- a/FTPFileSystem.java
+++ b/FTPFileSystem.java
@@ -549,15 +549,15 @@ public class FTPFileSystem extends FileSystem {
       throw new IOException("Destination path " + dst
           + " already exist, cannot rename!");
     }
-    String parentSrc = absoluteSrc.getParent().toUri().toString();
-    String parentDst = absoluteDst.getParent().toUri().toString();
+    URI parentSrc = absoluteSrc.getParent().toUri();
+    URI parentDst = absoluteDst.getParent().toUri();
     String from = src.getName();
     String to = dst.getName();
-    if (!parentSrc.equals(parentDst)) {
+    if (!parentSrc.toString().equals(parentDst.toString())) {
       throw new IOException("Cannot rename parent(source): " + parentSrc
           + ", parent(destination):  " + parentDst);
     }
-    client.changeWorkingDirectory(parentSrc);
+    client.changeWorkingDirectory(parentSrc.getPath().toString());
     boolean renamed = client.rename(from, to);
     return renamed;
   }{code}

already related issue  as follows 
https://issues.apache.org/jira/browse/HADOOP-8653

I wonder why this bug haven't be fixed

 

 



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

---------------------------------------------------------------------
To unsubscribe, e-mail: common-dev-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-dev-help@hadoop.apache.org