[ https://issues.apache.org/jira/browse/HADOOP-6223?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12755259#action_12755259 ]
Sanjay Radia commented on HADOOP-6223: -------------------------------------- @Doug >I do not yet see a case for rename2. I understand that Owen presented to you the case for rename2 and option 1 in private discussions last week and that you were not convinced. Let me summarize the case for option 1 and rename 2 for the benefit of the rest of the community. Please refer to the options 1 and options 2 above in this Jira. Further note that *both* options get us to the *same end state*: a new parallel stack where applications call FileContext which in turn calls AFS-impls. Option 1 uses the existing FileSystem APi and implementation in the early phase as we migrate from old stack to new stack. As I have mentioned above I have been going with option1 instead of 2; my patches in HADOOP-4952 have been based on option 1. I did strongly consider option 2 but felt that it raised the risk in this project (details below). *Does the FileSystem API have to be enhanced to support FileContext?* Yes. If you look at the patches for FileContext (HADOOP-4952) they have added 3 protected methods: getInitialWorkingDir(), createAbsPerm() mkdirsAbsPerm() (btw in the latest patch the last two methods were renamed to primitveCreate() and primitiveMkdirs(). These 3 methods were all declared protected and hence not visible to the applications. Once we have the full new stack, these methods can be deleted. *What has this got to do with rename2()?* Turns out that our rename implementation is broken. Fixing the FileSystem#rename spec would potentially break applications. Given that we are introducing a new fs api (FileContext) it has been proposed that we leave the old FileSystem#rename & its spec as is and simply add a new *protected* method FileSystem#rename2() - its sole purpose is to support FileContext#rename like the other 3 protected methods mentioned above. *Why did you choose to go with Option 1 and not option 2.* Option 1 was easier to get started because it leveraged existing FileSystem to the fullest. AFS on the other hand was debated as as soon as it started and further the option 2 was questioned. I felt that the community needed some time to digest this Jira. Comments from 3 folks is very little in contrast to the large number of comments in FileContext Jira. Further, my intuition told me that there were a number details to be resolved. The FileSystem design and implementation are very messy and I didn't want to simply carry forward its design without debate. Over the weekend, as I explored option 2 , my intuition was correct: here is a list of issues to be resolved for AFS. While none of them are impossible to solve, they are not trivial either. * where should the cache go? In FC or AFS.? Is the cache keyed off the config or not (the cache is FS seems to be somewhat tied to the config. - I think we need to look at that closely). The cache has leaked through the FileSytem API - I would like to avoid that for AFS. * Delete-on-exit - should we raise it to FC or leave it in AFS. There are certain assumptions made by the current delete-on-exit that seem incorrect and should be revisited. • What do we do about the public close method? * Statistics features in FS. - where does it go in the new world. Given the above, I had felt it was wiser to go with option 1 since its only cost is a few protected methods. Further, even in option 2 these protected methods would have helped us would have simplified delegation from AFS to FileSystem. It had always been my goal that as soon as the FileContext was committed I would complete this AFS jira and perhaps even switch from option 1 to option 2 midway if there was sufficient time. So far I don't understand the objections to option1 (and to rename2) ; protected methods seems reasonable in this situation. Is this a style issue? If the objections are minor I feel it is better to give this AFS jira sufficient time for community discussion and go with option 1. If there are serious objections to Option 1 then by all means lets put all the wood behind the option 2 arrow. BTW Option 1 would have been completed by this Friday according to our original plan. Option 2 will not be completed by the freeze date on Friday but we have started work on it. > New improved FileSystem interface for those implementing new files systems. > --------------------------------------------------------------------------- > > Key: HADOOP-6223 > URL: https://issues.apache.org/jira/browse/HADOOP-6223 > Project: Hadoop Common > Issue Type: Sub-task > Reporter: Sanjay Radia > Assignee: Sanjay Radia > > The FileContext API (HADOOP-4952) provides an improved interface for the > application writer. > This lets us simplify the FileSystem API since it will no longer need to deal > with notions of default filesystem [ / ], wd, and config > defaults for blocksize, replication factor etc. Further it will not need the > many overloaded methods for create() and open() since > the FileContext API provides that convenience. > The FileSystem API can be simplified and can now be restricted to those > implementing new file systems. > This jira proposes that we create new file system API, and deprecate > FileSystem API after a few releases. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.