[
https://issues.apache.org/jira/browse/LUCENE-753?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Michael McCandless updated LUCENE-753:
--------------------------------------
Attachment: LUCENE-753.patch
New patch attached. Matthew if you could try this version out on your
index, that'd be awesome.
I didn't like how we were still copying the hairy readBytes & refill
methods from BufferedIndexInput, so I made some small additional mods
to BufferedIndexInput to notify subclass when a byte[] buffer gets
allocated, which then allowed us to fully inherit these methods.
But, then I realized we were duplicating alot of code from
FSIndexInput, so I switched to subclassing that instead and that made
things even simpler.
Some other things also fixed:
* We were ignoring bufferSize (eg setBufferSize).
* We weren't closing the FileChannel
* clone() now lazily clones the buffer again
To test this, I made NIOFSDirectory the default IMPL in
FSDirectory.getDirectory and ran all tests. One test failed at first
(because we were ignoring setBufferSize calls); with the new patch,
all tests pass.
I also built first 150K docs of wikipedia and ran various searches
using NIOFSDirectory and all seems good.
The class is quite a bit simpler now, however there's one thing I
don't like: when you use CFS, the NIOFSIndexInput.readInternal method
will wrap the CSIndexInput's byte[] (from it's parent
BufferedIndexInput class) for every call (every 1024 bytes read from
the file). I'd really like to find a clean way to reuse a single
ByteBuffer. Not yet sure how to do that though...
> Use NIO positional read to avoid synchronization in FSIndexInput
> ----------------------------------------------------------------
>
> Key: LUCENE-753
> URL: https://issues.apache.org/jira/browse/LUCENE-753
> Project: Lucene - Java
> Issue Type: New Feature
> Components: Store
> Reporter: Yonik Seeley
> Assignee: Michael McCandless
> Fix For: 2.4
>
> Attachments: FileReadTest.java, FileReadTest.java, FileReadTest.java,
> FileReadTest.java, FileReadTest.java, FileReadTest.java, FileReadTest.java,
> FSDirectoryPool.patch, FSIndexInput.patch, FSIndexInput.patch,
> LUCENE-753.patch, LUCENE-753.patch, LUCENE-753.patch, LUCENE-753.patch,
> lucene-753.patch, lucene-753.patch
>
>
> As suggested by Doug, we could use NIO pread to avoid synchronization on the
> underlying file.
> This could mitigate any MT performance drop caused by reducing the number of
> files in the index format.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]