Class DirectIOLinuxDirectory

  • All Implemented Interfaces:
    Closeable, AutoCloseable

    public class DirectIOLinuxDirectory
    extends org.apache.lucene.store.FSDirectory
    An Directory implementation that uses the Linux-specific O_DIRECT flag to bypass all OS level caching. To use this you must compile NativePosixUtil.cpp (exposes Linux-specific APIs through JNI) for your platform.

    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 (only writes small number of bytes after seek).

    WARNING: This API is experimental and might change in incompatible ways in the next release.
    • Nested Class Summary

      • Nested classes/interfaces inherited from class org.apache.lucene.store.FSDirectory

        org.apache.lucene.store.FSDirectory.FSIndexOutput
    • Field Summary

      • Fields inherited from class org.apache.lucene.store.FSDirectory

        DEFAULT_READ_CHUNK_SIZE, directory, staleFiles
      • Fields inherited from class org.apache.lucene.store.Directory

        isOpen, lockFactory
    • Constructor Summary

      Constructors 
      Constructor Description
      DirectIOLinuxDirectory​(File path, org.apache.lucene.store.LockFactory lockFactory, int forcedBufferSize)
      Create a new NIOFSDirectory for the named location.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      org.apache.lucene.store.IndexOutput createOutput​(String name)  
      org.apache.lucene.store.IndexInput openInput​(String name, int bufferSize)  
      • Methods inherited from class org.apache.lucene.store.FSDirectory

        close, deleteFile, ensureCanWrite, fileExists, fileLength, fileModified, fileModified, fsync, getDirectory, getFile, getLockID, getReadChunkSize, listAll, listAll, onIndexOutputClosed, open, open, openInput, setLockFactory, setReadChunkSize, sync, sync, toString, touchFile
      • Methods inherited from class org.apache.lucene.store.Directory

        clearLock, copy, copy, ensureOpen, getLockFactory, makeLock
    • Constructor Detail

      • DirectIOLinuxDirectory

        public DirectIOLinuxDirectory​(File path,
                                      org.apache.lucene.store.LockFactory lockFactory,
                                      int forcedBufferSize)
                               throws IOException
        Create a new NIOFSDirectory for the named location.
        Parameters:
        path - the path of the directory
        lockFactory - the lock factory to use, or null for the default (NativeFSLockFactory);
        forcedBufferSize - if this is 0, just use Lucene's default buffer size; else, force this buffer size. For best performance, force the buffer size to something fairly large (eg 1 MB), but note that this will eat up the JRE's direct buffer storage space
        Throws:
        IOException
    • Method Detail

      • openInput

        public org.apache.lucene.store.IndexInput openInput​(String name,
                                                            int bufferSize)
                                                     throws IOException
        Overrides:
        openInput in class org.apache.lucene.store.Directory
        Throws:
        IOException
      • createOutput

        public org.apache.lucene.store.IndexOutput createOutput​(String name)
                                                         throws IOException
        Overrides:
        createOutput in class org.apache.lucene.store.FSDirectory
        Throws:
        IOException