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

Uwe Schindler commented on LUCENE-5570:
---------------------------------------

Patch looks fine, only the APPEND is not needed:
{code:java}
FileChannel.open(fullFile.toPath(), StandardOpenOption.WRITE);
{code}

WRITE does not zero the file, to empty it you need to use TRUNCATE_EXISTING or 
CREATE.
APPEND is just there to initially set the file pointer.

But in any case, +1 to commit.

We can only use this with Lucene 4.7.x if we use crazy reflection and detect 
Java 7. Another approach for Java 6 (4.7.x) would be to use a "non-atomic" 
check to first try to open the file for read and if that works, close and 
reopen RW - both as RandomAccessFile).

> FSDirectory's fsync() is lenient
> --------------------------------
>
>                 Key: LUCENE-5570
>                 URL: https://issues.apache.org/jira/browse/LUCENE-5570
>             Project: Lucene - Core
>          Issue Type: Bug
>          Components: core/store
>            Reporter: Robert Muir
>         Attachments: LUCENE-5570.patch, LUCENE-5570.patch, 
> LUCENE-5570_zerobyte.patch
>
>
> This method has a lot of problems:
> 1. it tracks 'stale files' as it writes (this seems pointless), and only 
> actually fsyncs the intersection of that 'stale files' and the filenames 
> passed as argument to sync(). So any bogus names passed to sync() are just 
> silently ignored
> 2. if "something bad happens" (e.g. two indexwriters/dirs on the same path, 
> or some other shenanigans), and the file is actually in stale files, but was 
> say actually deleted on the filesystem, the underlying fsync() call will 
> create a new 0-byte file and fsync that.
> In my opinion we should do none of this. we should throw exceptions when this 
> stuff is wrong.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to