[ 
https://issues.apache.org/jira/browse/HDFS-4677?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Chris Nauroth updated HDFS-4677:
--------------------------------

    Attachment: HDFS-4677.3.patch
                HDFS-4677.3.patch

{quote}
One thing that bothers me in the latest patch is now having two constructors 
for FileJournalManager and EditLogFileOutputStream, one with conf and one 
without. Given that the one with conf is the right choice for most cases, it 
might make sense to lose the other one. However, making this change would 
further increase the scope of this simple Jira, so I’m deferring this question 
to the community.
{quote}

At first, I was going to suggest deferring removal of the old constructors to a 
separate cleanup jira.  Then, I started investigating what it would take to do 
it right now.  In the course of investigating, I ended up doing it.  :-)  It 
turned out that it wasn't a whole lot of extra work.

Rather than throw that work away, I'm attaching version 3 of the patch to share 
those changes.  I ran the changed tests for verification.  Ivan, how does this 
look to you?
                
> Editlog should support synchronous writes
> -----------------------------------------
>
>                 Key: HDFS-4677
>                 URL: https://issues.apache.org/jira/browse/HDFS-4677
>             Project: Hadoop HDFS
>          Issue Type: Bug
>    Affects Versions: 3.0.0, 1-win
>            Reporter: Ivan Mitic
>            Assignee: Ivan Mitic
>         Attachments: HDFS-4677.2.patch, HDFS-4677.3.patch, HDFS-4677.3.patch, 
> HDFS-4677.patch
>
>
> In the current implementation, NameNode editlog performs syncs to the 
> persistent storage using the {{FileChannel#force}} Java APIs. This API is 
> documented to be slower compared to an alternative where {{RandomAccessFile}} 
> is opened with "rws" flags (synchronous writes). 
> We instrumented {{FileChannel#force}} on Windows and it some 
> software/hardware configurations it can perform significantly slower than the 
> “rws” alternative.
> In terms of the Windows APIs, FileChannel#force internally calls 
> [FlushFileBuffers|http://msdn.microsoft.com/en-us/library/windows/desktop/aa364439(v=vs.85).aspx]
>  while RandomAccessFile (“rws”) opens the file with the 
> [FILE_FLAG_WRITE_THROUGH flag|http://support.microsoft.com/kb/99794]. 
> With this Jira I'd like to introduce a flag that provide means to configure 
> NameNode to use synchronous writes. There is a catch though, the behavior of 
> the "rws" flags is platform and hardware specific and might not provide the 
> same level of guarantees as {{FileChannel#force}} w.r.t. flushing the on-disk 
> cache. This is an expert level setting, and it should be documented as such.

--
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