[ https://issues.apache.org/jira/browse/HDFS-4258?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13573185#comment-13573185 ]
Aaron T. Myers commented on HDFS-4258: -------------------------------------- Thanks a lot for the pointer to the test, Brandon. Two things: # It looks to me like that test doesn't actually exercise the scenario described in the description of this JIRA, since the test doesn't write to the file before the rename. It creates a file, then a parent of that empty file is renamed, then a new empty file is created with the same name, and then the first client writes to the recreated file. I suppose we can consider that a bug as well, since the first FSOutputStream can now still write to the empty file, but it's not nearly so bad as was first described by this JIRA, since we're not ending up with data in the file from two different clients. # I think Daryn makes a really good point - to address this issue of clients still writing to renamed files, can't we just revoke the relevant leases at rename time? That seems like a way simpler way to fix this bug than adding an INode ID and threading that through a bunch of RPCs in the ClientProtocol, and has the other advantage Daryn mentioned. > Rename of Being Written Files > ----------------------------- > > Key: HDFS-4258 > URL: https://issues.apache.org/jira/browse/HDFS-4258 > Project: Hadoop HDFS > Issue Type: Bug > Components: hdfs-client, namenode > Affects Versions: 3.0.0 > Reporter: Tsz Wo (Nicholas), SZE > Assignee: Brandon Li > Attachments: HDFS-4258.patch, HDFS-4258.patch, HDFS-4258.patch, > HDFS-4258.patch > > > When a being written file or it's ancestor directories is renamed, the path > in the file lease is also renamed. Then the writer of the file usually will > fail since the file path in the writer is not updated. > Moreover, I think there is a bug as follow: > # Client writes 0's to F_0="/foo/file" and writes 1's to F_1="/bar/file" at > the same time. > # Rename /bar to /baz > # Rename /foo to /bar > Then, writing to F_0 will fail since /foo/file does not exist anymore but > writing to F_1 may succeed since /bar/file exits as a different file. In > such case, the content of /bar/file could be partly 0's and partly 1's. -- 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