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

dhruba borthakur commented on HADOOP-4663:
------------------------------------------

Hairong, I understand your point of view.  A bug in the generation-stamp 
protocol could cause data corruption.

The alternative is to not promote blocks to the main storage when the datanode 
restarts. In this case, the data that was written by the client to that 
datanode is lost. This is data written by an application, and it would be nice 
if HDFS can make every effort to recover this data instead of deleting it. This 
is true with most other file systems. For example, if an application writes 
some data to an ext3 file and then dies before closing/fsync it, the OS/FS does 
not delete the data that was cached in the OS pages. It makes every effort to 
persist it. If we can have similar semantics for HDFS, it will be a more 
powerful system, isn't it? An HDFS application that does not issue a "fsync", 
cannot rely on the fact that all the data it has written will be persisted, but 
as long as HDFS makes a good effort to keep all the data, that will be nice, 
isn't it? 

So, this issue all boils down to the tradeoff of having a "file system that 
never persists data unless the writer explicitly invoked a fsync"  verses  
"complexity of the namenode thereby introducing buggy code". 

I can vote for one application that we run inhouse that would definitely like 
the behaviour where HDFS makes every effort to persist data (rather than 
invoking sync frequently). HBase can use this feature too (in the future) to 
recover HBase transactions that lie beyond the sync point (good to have, not a 
hard requirement).



> Datanode should delete files under tmp when upgraded from 0.17
> --------------------------------------------------------------
>
>                 Key: HADOOP-4663
>                 URL: https://issues.apache.org/jira/browse/HADOOP-4663
>             Project: Hadoop Core
>          Issue Type: Bug
>          Components: dfs
>    Affects Versions: 0.18.0
>            Reporter: Raghu Angadi
>            Assignee: dhruba borthakur
>            Priority: Blocker
>             Fix For: 0.19.1
>
>         Attachments: deleteTmp.patch, deleteTmp2.patch, deleteTmp_0.18.patch, 
> handleTmp1.patch
>
>
> Before 0.18, when Datanode restarts, it deletes files under data-dir/tmp  
> directory since these files are not valid anymore. But in 0.18 it moves these 
> files to normal directory incorrectly making them valid blocks. One of the 
> following would work :
> - remove the tmp files during upgrade, or
> - if the files under /tmp are in pre-18 format (i.e. no generation), delete 
> them.
> Currently effect of this bug is that, these files end up failing block 
> verification and eventually get deleted. But cause incorrect over-replication 
> at the namenode before that.
> Also it looks like our policy regd treating files under tmp needs to be 
> defined better. Right now there are probably one or two more bugs with it. 
> Dhruba, please file them if you rememeber.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to