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

Uwe Schindler reassigned LUCENE-4848:
-------------------------------------

    Assignee: Uwe Schindler

Hi Michael,
thank you very much for the directory implementations.

I already thought about that a while before, but I was not aware, that the 
WindowsFileChannelFactory 
(http://www.docjar.com/html/api/sun/nio/fs/WindowsChannelFactory.java.html) 
automatically passes FILE_SHARE_DELETE by default to the windows open syscall. 
So this is indeed an improvement, because it allows to delete files that are 
opened like that. I have not yet verified this, but I trust you and will take 
it under consideration. But be warned: FILE_SHARE_DELETE does *not* completely 
emulate delete-after-last-close semantics from POSIX. It looks like the file 
keeps valid and disappears from the directory, but in contrast to POSIX, you 
cannot delete the directory the file is in, nor can you create a new file with 
the same name as the still open, but deleted one. This should not be an issue 
for Lucene, as it never recreates files with the same name which it keept open 
before.

About your classes in general. The *new* directory implementation (the Async 
one), could go into Lucene 5.0, once we moved to Java 7, so this would be a 
start in the direction on doing the move. We had a discussion on the 
mailinglist and all committers +1.

About the NIOFSDirectory and MMapDirectory: Those are 100% clones of the 
originals and we dont want to have 100% clones of same classes in Lucene core, 
so I would restructure them. The good thing here is: The really only change in 
those clones is the part that opens a FileChannel from a file name. And that 
involves only 3 calls to Java 7 APIs. My idea was to simply insert that code 
(using reflection for Lucene 4.x into the original MMapDirectory and 
NIOFSDirectory) into a helper function for opening (File in, FileChannel out) 
that creates a RAF on Java 6 and directly allocates FileChannel on Java 7 - 
Problem solved. Introducting new Java 7 symbols like "Path" into Lucene makes 
no sense at the moment, so its hidden as implementation detail.

I will provide a patch for NIOFS and MMap later.

Thanks in any case, this issue brought me to the right track of maybe solving 
the delete on windows problem - I am still not sure if this really helps and 
does not break the semantics Lucene expects from the underlying FS.
                
> Add Directory implementations using NIO2 APIs
> ---------------------------------------------
>
>                 Key: LUCENE-4848
>                 URL: https://issues.apache.org/jira/browse/LUCENE-4848
>             Project: Lucene - Core
>          Issue Type: Task
>            Reporter: Michael Poindexter
>            Assignee: Uwe Schindler
>            Priority: Minor
>         Attachments: jdk7directory.zip
>
>
> I have implemented 3 Directory subclasses using NIO2 API's (available on 
> JDK7).  These may be suitable for inclusion in a Lucene contrib module.
> See the mailing list at http://lucene.markmail.org/thread/lrv7miivzmjm3ml5 
> for more details about this code and the advantages it provides.
> The code is attached as a zip to this issue.  I'll be happy to make any 
> changes requested.  I've included some minimal smoke tests, but any help in 
> how to use the normal Lucene tests to perform more thorough testing would be 
> appreciated.

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

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

Reply via email to