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

Simon Willnauer commented on LUCENE-3237:
-----------------------------------------

Hey mike, thanks for reopening this. I like the patch since it fixes multiple 
issues. 

 * I like the fact that we get rid of the general unsynced files stuff in 
Directory.
 * given the last point we move it in the right place inside IW that is where 
it should be
 * the problem that the current patch has is that is holds on to the buffers in 
BufferedIndexOutput. I think we need to work around this here are a couple of 
ideas:
  **  introduce a SyncHandle class that we can pull from IndexOutput that 
allows to close the IndexOutput but lets you fsync after the fact
  ** this handle can be refcounted internally and we just decrement the count 
on IndexOutput#close() as well as on SyncHandle#close() 
  ** we can just hold on to the SyncHandle until we need to sync in IW 
  ** since this will basically close the underlying FD later we might want to 
think about size-bounding the number of unsynced files and maybe let indexing 
threads fsync them concurrently? maybe something we can do later.
  ** if we know we flush for commit we can already fsync directly which might 
safe resources / time since it might be concurrent

just a couple of ideas....

> FSDirectory.fsync() may not work properly
> -----------------------------------------
>
>                 Key: LUCENE-3237
>                 URL: https://issues.apache.org/jira/browse/LUCENE-3237
>             Project: Lucene - Core
>          Issue Type: Bug
>          Components: core/store
>            Reporter: Shai Erera
>         Attachments: LUCENE-3237.patch
>
>
> Spinoff from LUCENE-3230. FSDirectory.fsync() opens a new RAF, sync() its 
> FileDescriptor and closes RAF. It is not clear that this syncs whatever was 
> written to the file by other FileDescriptors. It would be better if we do 
> this operation on the actual RAF/FileOS which wrote the data. We can add 
> sync() to IndexOutput and FSIndexOutput will do that.
> Directory-wise, we should stop syncing on file names, and instead sync on the 
> IOs that performed the write operations.



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