Class NativeUnixDirectory
- All Implemented Interfaces:
Closeable,AutoCloseable
Directory implementation for all Unixes that uses
DIRECT I/O to bypass OS level IO caching during
merging. For all other cases (searching, writing) we delegate
to the provided Directory instance.
See Overview for more details.
To use this you must compile
NativePosixUtil.cpp (exposes Linux-specific APIs through
JNI) for your platform, by running ant
build-native-unix, and then putting the resulting
libNativePosixUtil.so (from
lucene/build/native) onto your dynamic
linker search path.
WARNING: this code is very new and quite easily
could contain horrible bugs. For example, here's one
known issue: if you use seek in IndexOutput, and then
write more than one buffer's worth of bytes, then the
file will be wrong. Lucene does not do this today (only writes
small number of bytes after seek), but that may change.
This directory passes Solr and Lucene tests on Linux and OS X; other Unixes should work but have not been tested! Use at your own risk.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.lucene.store.Directory
Directory.IndexInputSlicer -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intDefault buffer size before writing to disk (256 KB); larger means less IO load but more RAM and direct buffer storage space consumed during merging.static final longDefault min expected merge size before direct IO is used (10 MB):Fields inherited from class org.apache.lucene.store.FSDirectory
DEFAULT_READ_CHUNK_SIZE -
Constructor Summary
ConstructorsConstructorDescriptionNativeUnixDirectory(File path, int mergeBufferSize, long minBytesDirect, Directory delegate) Create a new NIOFSDirectory for the named location.NativeUnixDirectory(File path, Directory delegate) Create a new NIOFSDirectory for the named location. -
Method Summary
Modifier and TypeMethodDescriptioncreateOutput(String name, IOContext context) Creates an IndexOutput for the file with the given name.Returns a stream reading an existing file, with the specified read buffer size.Methods inherited from class org.apache.lucene.store.FSDirectory
close, deleteFile, fileExists, fileLength, getDirectory, getLockID, getReadChunkSize, listAll, listAll, open, open, setLockFactory, setReadChunkSize, sync, toStringMethods inherited from class org.apache.lucene.store.BaseDirectory
clearLock, getLockFactory, makeLockMethods inherited from class org.apache.lucene.store.Directory
copy, createSlicer
-
Field Details
-
DEFAULT_MERGE_BUFFER_SIZE
public static final int DEFAULT_MERGE_BUFFER_SIZEDefault buffer size before writing to disk (256 KB); larger means less IO load but more RAM and direct buffer storage space consumed during merging.- See Also:
-
DEFAULT_MIN_BYTES_DIRECT
public static final long DEFAULT_MIN_BYTES_DIRECTDefault min expected merge size before direct IO is used (10 MB):- See Also:
-
-
Constructor Details
-
NativeUnixDirectory
public NativeUnixDirectory(File path, int mergeBufferSize, long minBytesDirect, Directory delegate) throws IOException Create a new NIOFSDirectory for the named location.- Parameters:
path- the path of the directorymergeBufferSize- Size of buffer to use for merging. SeeDEFAULT_MERGE_BUFFER_SIZE.minBytesDirect- Merges, or files to be opened for reading, smaller than this will not use direct IO. SeeDEFAULT_MIN_BYTES_DIRECTdelegate- fallback Directory for non-merges- Throws:
IOException- If there is a low-level I/O error
-
NativeUnixDirectory
Create a new NIOFSDirectory for the named location.- Parameters:
path- the path of the directorydelegate- fallback Directory for non-merges- Throws:
IOException- If there is a low-level I/O error
-
-
Method Details
-
openInput
Description copied from class:DirectoryReturns a stream reading an existing file, with the specified read buffer size. The particular Directory implementation may ignore the buffer size. Currently the only Directory implementations that respect this parameter areFSDirectoryandCompoundFileDirectory.- Must throw
FileNotFoundExceptionif the file does not exist (notjava.nio.file.NoSuchFileExceptionof Java 7).- Specified by:
openInputin classDirectory- Throws:
IOException
- Must throw
-
createOutput
Description copied from class:FSDirectoryCreates an IndexOutput for the file with the given name.- Overrides:
createOutputin classFSDirectory- Throws:
IOException
-