org.apache.lucene.store
Class RateLimitedDirectoryWrapper

java.lang.Object
  extended by org.apache.lucene.store.Directory
      extended by org.apache.lucene.store.FilterDirectory
          extended by org.apache.lucene.store.RateLimitedDirectoryWrapper
All Implemented Interfaces:
Closeable

public final class RateLimitedDirectoryWrapper
extends FilterDirectory

A Directory wrapper that allows IndexOutput rate limiting using IO context specific rate limiters.

See Also:
setRateLimiter(RateLimiter, IOContext.Context)
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.Directory
Directory.IndexInputSlicer
 
Field Summary
 
Fields inherited from class org.apache.lucene.store.FilterDirectory
in
 
Constructor Summary
RateLimitedDirectoryWrapper(Directory wrapped)
           
 
Method Summary
 void copy(Directory to, String src, String dest, IOContext context)
          Copies the file src to Directory to under the new file name dest.
 IndexOutput createOutput(String name, IOContext context)
          Creates a new, empty file in the directory with the given name.
 Directory.IndexInputSlicer createSlicer(String name, IOContext context)
          Creates an Directory.IndexInputSlicer for the given file name.
 Double getMaxWriteMBPerSec(IOContext.Context context)
          See setMaxWriteMBPerSec(java.lang.Double, org.apache.lucene.store.IOContext.Context).
 void setMaxWriteMBPerSec(Double mbPerSec, IOContext.Context context)
          Sets the maximum (approx) MB/sec allowed by all write IO performed by IndexOutput created with the given IOContext.Context.
 void setRateLimiter(RateLimiter mergeWriteRateLimiter, IOContext.Context context)
          Sets the rate limiter to be used to limit (approx) MB/sec allowed by all IO performed with the given context.
 
Methods inherited from class org.apache.lucene.store.FilterDirectory
clearLock, close, deleteFile, fileExists, fileLength, getDelegate, getLockFactory, getLockID, listAll, makeLock, openInput, setLockFactory, sync, toString
 
Methods inherited from class org.apache.lucene.store.Directory
ensureOpen
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

RateLimitedDirectoryWrapper

public RateLimitedDirectoryWrapper(Directory wrapped)
Method Detail

createOutput

public IndexOutput createOutput(String name,
                                IOContext context)
                         throws IOException
Description copied from class: Directory
Creates a new, empty file in the directory with the given name. Returns a stream writing this file.

Overrides:
createOutput in class FilterDirectory
Throws:
IOException

createSlicer

public Directory.IndexInputSlicer createSlicer(String name,
                                               IOContext context)
                                        throws IOException
Description copied from class: Directory
Creates an Directory.IndexInputSlicer for the given file name. IndexInputSlicer allows other Directory implementations to efficiently open one or more sliced IndexInput instances from a single file handle. The underlying file handle is kept open until the Directory.IndexInputSlicer is closed.
  • Must throw FileNotFoundException if the file does not exist (not java.nio.file.NoSuchFileException of Java 7).

    Overrides:
    createSlicer in class Directory
    Throws:
    IOException - if an IOException occurs

  • copy

    public void copy(Directory to,
                     String src,
                     String dest,
                     IOContext context)
              throws IOException
    Description copied from class: Directory
    Copies the file src to Directory to under the new file name dest.

    If you want to copy the entire source directory to the destination one, you can do so like this:

     Directory to; // the directory to copy to
     for (String file : dir.listAll()) {
       dir.copy(to, file, newFile, IOContext.DEFAULT); // newFile can be either file, or a new name
     }
     

    NOTE: this method does not check whether dest exist and will overwrite it if it does.

    Overrides:
    copy in class Directory
    Throws:
    IOException

    setMaxWriteMBPerSec

    public void setMaxWriteMBPerSec(Double mbPerSec,
                                    IOContext.Context context)
    Sets the maximum (approx) MB/sec allowed by all write IO performed by IndexOutput created with the given IOContext.Context. Pass null to have no limit.

    NOTE: For already created IndexOutput instances there is no guarantee this new rate will apply to them; it will only be guaranteed to apply for new created IndexOutput instances.

    NOTE: this is an optional operation and might not be respected by all Directory implementations. Currently only buffered Directory implementations use rate-limiting.

    Throws:
    IllegalArgumentException - if context is null
    AlreadyClosedException - if the Directory is already closed
    WARNING: This API is experimental and might change in incompatible ways in the next release.

    setRateLimiter

    public void setRateLimiter(RateLimiter mergeWriteRateLimiter,
                               IOContext.Context context)
    Sets the rate limiter to be used to limit (approx) MB/sec allowed by all IO performed with the given context. Pass null to have no limit.

    Passing an instance of rate limiter compared to setting it using setMaxWriteMBPerSec(Double, IOContext.Context) allows to use the same limiter instance across several directories globally limiting IO across them.

    Throws:
    IllegalArgumentException - if context is null
    AlreadyClosedException - if the Directory is already closed
    WARNING: This API is experimental and might change in incompatible ways in the next release.

    getMaxWriteMBPerSec

    public Double getMaxWriteMBPerSec(IOContext.Context context)
    See setMaxWriteMBPerSec(java.lang.Double, org.apache.lucene.store.IOContext.Context).

    Throws:
    IllegalArgumentException - if context is null
    AlreadyClosedException - if the Directory is already closed
    WARNING: This API is experimental and might change in incompatible ways in the next release.


    Copyright © 2000-2014 Apache Software Foundation. All Rights Reserved.