Perhaps - one of the things they are supposed to be addressing is extendability.
nio2 does have FileSystemProvider, which would actually allow you to create a custom channel ! I have not dug in enough to know much more than that though. *But*, another really interesting thing is that in Java 7, FileDescriptors are ref counted ! (though users can't inc/dec). But, FileInputStream and OutputStream have a new constructor that takes a FileDescriptor. So possibly, you could just make one that sits around to keep the FileDescriptor valid, and get your channel off FileInputStream/FileOutputStream? And then if it goes down, make a new one using the FileDescriptor which was not actually closed because there was a still a ref to it. Possibly .... ;) Michael McCandless wrote: > Does anyone know if nio2 has improved this...? > > Mike > > On Fri, Jan 29, 2010 at 2:00 PM, Jason Rutherglen > <jason.rutherg...@gmail.com> wrote: > >> Defaulting NIOFSDir could account for some of the recent speed >> improvements users have been reporting in Lucene 2.9. So removing it >> as a default could reverse those and people could then report Lucene >> 3.X has slowed... >> >> On Thu, Jan 28, 2010 at 5:24 AM, Michael McCandless >> <luc...@mikemccandless.com> wrote: >> >>> Bummer. >>> >>> So the only viable workarounds are 1) don't use Thread.interrupt (nor, >>> things like Future.cancel, which in turn use Thread.interrupt) with >>> NIOFSDir, or 2) we fix NIOFSDir to reopen the channel AND the app must >>> make a deletion policy that keeps a commit alive if any reader is >>> using it. Or, 3) don't use NIOFSDir! >>> >>> Mike >>> >>> On Thu, Jan 28, 2010 at 7:29 AM, Simon Willnauer >>> <simon.willna...@googlemail.com> wrote: >>> >>>> On Thu, Jan 28, 2010 at 12:43 PM, Michael McCandless >>>> <luc...@mikemccandless.com> wrote: >>>> >>>>> On Thu, Jan 28, 2010 at 6:38 AM, Uwe Schindler <u...@thetaphi.de> wrote: >>>>> >>>>> >>>>>> So I checked the code of NIOFSIndexInput, my last comment was not really >>>>>> correct: >>>>>> NIOFSIndexInput extends SimpleFSIndexInput and that opens the RAF. In >>>>>> the ctor RAF.getChannel() is called. The RAF keeps open until the file >>>>>> is closed (and also the channel). >>>>>> >>>>>> So it's really simple to fix in my opinion, just call getChannel() again >>>>>> on this exception. Because the RAF should still be open? >>>>>> >>>> Short answer: >>>> public final FileChannel getChannel() { >>>> synchronized (this) { >>>> if (channel == null) >>>> channel = FileChannelImpl.open(fd, true, rw, this); >>>> return channel; >>>> } >>>> } >>>> >>>> this is not gonna work I tried it before. The RandomAccessFile buffers >>>> the channel!! >>>> >>>> simon >>>> >>>>> I think we need a definitive answer on what happens to the RAF when >>>>> the FileChannel was closed by Thread.Interrupt. Simon can you test >>>>> this? >>>>> >>>>> Mike >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org >>>>> For additional commands, e-mail: java-dev-h...@lucene.apache.org >>>>> >>>>> >>>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org >>>> For additional commands, e-mail: java-dev-h...@lucene.apache.org >>>> >>>> >>>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org >>> For additional commands, e-mail: java-dev-h...@lucene.apache.org >>> >>> >>> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org >> For additional commands, e-mail: java-dev-h...@lucene.apache.org >> >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org > For additional commands, e-mail: java-dev-h...@lucene.apache.org > > -- - Mark http://www.lucidimagination.com --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org For additional commands, e-mail: java-dev-h...@lucene.apache.org