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

ASF GitHub Bot commented on HADOOP-19555:
-----------------------------------------

GauthamBanasandra opened a new pull request, #7654:
URL: https://github.com/apache/hadoop/pull/7654

   <!--
     Thanks for sending a pull request!
       1. If this is your first time, please read our contributor guidelines: 
https://cwiki.apache.org/confluence/display/HADOOP/How+To+Contribute
       2. Make sure your PR title starts with JIRA issue id, e.g., 
'HADOOP-17799. Your PR title ...'.
   -->
   
   ### Description of PR
   
   The Apache Commons Net FTP library is used for `FTPFileSystem`. In 
`TestFTPFileSystem#testRenameFileWithFullQualifiedPath()`, the FS operations 
(such as touch and rename) are made using absolute paths. However, the library 
expects relative paths.
   This caused `FTPFileSystem#getFileStatus()` to throw `FileNotFoundException` 
since the library was trying to look for the absolute path under which the 
FileSystem was mounted.
   
   This worked fine on Linux as it just appended the absolute path under the 
FileSystem's mount path -
   
![image](https://github.com/user-attachments/assets/7ebf1d96-76ca-4388-8549-ee5a4942394f)
   
   However, this fails on Windows since suffixing the absolute path under the 
FileSystem's mount path doesn't yield a valid path due to the drive letter in 
the absolute path.
   
   Consider the following illustration -
   ## On Linux
   ```
   path1 => /mnt/d/a/b
   path2 => /mnt/d/x/y
   path1 + path2 yields a valid path => /mnt/d/a/b/mnt/d/x/y
   ```
   
   ## On Windows
   
   ```
   path1 => C:\a\b
   path2 => C:\x\y
   path1 + path2 doesn't yield a valid path => C:\a\b\C:\x\y
   ```
   
   So, to fix this, we need to treat the FS operations as purely relative.
   
   ### How was this patch tested?
   
   - Ran the unit tests locally.
   - Jenkins CI validation.
   
   ### For code changes:
   
   - [x] Does the title or this PR starts with the corresponding JIRA issue id 
(e.g. 'HADOOP-17799. Your PR title ...')?
   - [ ] Object storage: have the integration tests been executed and the 
endpoint declared according to the connector-specific documentation?
   - [ ] If adding new dependencies to the code, are these dependencies 
licensed in a way that is compatible for inclusion under [ASF 
2.0](http://www.apache.org/legal/resolved.html#category-a)?
   - [ ] If applicable, have you updated the `LICENSE`, `LICENSE-binary`, 
`NOTICE-binary` files?
   
   




> Fix testRenameFileWithFullQualifiedPath on Windows
> --------------------------------------------------
>
>                 Key: HADOOP-19555
>                 URL: https://issues.apache.org/jira/browse/HADOOP-19555
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: hadoop-common
>    Affects Versions: 3.5.0
>         Environment: Windows 10
>            Reporter: Gautham Banasandra
>            Assignee: Gautham Banasandra
>            Priority: Critical
>             Fix For: 3.5.0
>
>         Attachments: image-2025-04-27-23-05-05-212.png
>
>
> The Apache Commons Net FTP library is used for FTPFileSystem. In 
> *TestFTPFileSystem#testRenameFileWithFullQualifiedPath()*, the FS operations 
> (such as touch and rename) are made using absolute paths. However, the 
> library expects relative paths.
> This caused *FTPFileSystem#getFileStatus()* to throw FileNotFoundException 
> since the library was trying to look for the absolute path under which the 
> FileSystem was mounted.
> This worked fine on Linux as it just appended the absolute path under the 
> FileSystem's mount path -
>  !image-2025-04-27-23-05-05-212.png! 
> However, this fails on Windows since suffixing the absolute path under the 
> FileSystem's mount path doesn't yield a valid path due to the drive letter in 
> the absolute path.
> Consider the following illustration -
> +On Linux+
> {text}
> path1 => /mnt/d/a/b
> path2 => /mnt/d/x/y
> path1 + path2 yields a valid path => /mnt/d/a/b/mnt/d/x/y
> {text}
> +On Windows+
> {text}
> path1 => C:\a\b
> path2 => C:\x\y
> path1 + path2 doesn't yield a valid path => C:\a\b\C:\x\y
> {text}
> So, to fix this, we need to treat the FS operations as purely relative.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org

Reply via email to