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

Colin Patrick McCabe commented on HDFS-2551:
--------------------------------------------

bq. There's no way to do our own reference counting? (ie we don't have any clue 
when an fd gets duped?).

FUSE doesn't give us that info.

I did start out on a patch to add a file name -> hdfsFile cache in fuse_dfs a 
few weeks ago, but it started getting really complex (cache invalidation is not 
easy.)  Also, it doesn't really solve the problem 100%.  I could have code like 
this:

{code}
computer A                  |     computer B
============================+==========================
fd = open(FILE_NAME)        |
write(fd, ...)              |
close(fd)                   |
send-RPC-to-remote-PC       |
                            |     receive RPC
                            |     open(fd, FILE_NAME) => error, already open
[actual fuse release]       |
{code}
                
> fuse-dfs's close() is asynchronous
> ----------------------------------
>
>                 Key: HDFS-2551
>                 URL: https://issues.apache.org/jira/browse/HDFS-2551
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>          Components: fuse-dfs
>    Affects Versions: 0.20.205.0, 0.23.0
>            Reporter: Todd Lipcon
>
> FUSE's "release" operation is called asynchronously when a file is closed 
> from userspace. This means that, if a program writes a file, closes it, and 
> immediately re-opens it, it might not succeed. We should figure out some 
> workaround or trick to make close synchronous, if possible.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to