Class RateLimitedDirectoryWrapper
- java.lang.Object
-
- org.apache.lucene.store.Directory
-
- org.apache.lucene.store.FilterDirectory
-
- org.apache.lucene.store.RateLimitedDirectoryWrapper
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable
public final class RateLimitedDirectoryWrapper extends FilterDirectory
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.lucene.store.Directory
Directory.IndexInputSlicer
-
-
Constructor Summary
Constructors Constructor Description RateLimitedDirectoryWrapper(Directory wrapped)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcopy(Directory to, java.lang.String src, java.lang.String dest, IOContext context)Copies the file src toDirectoryto under the new file name dest.IndexOutputcreateOutput(java.lang.String name, IOContext context)Creates a new, empty file in the directory with the given name.Directory.IndexInputSlicercreateSlicer(java.lang.String name, IOContext context)Creates anDirectory.IndexInputSlicerfor the given file name.java.lang.DoublegetMaxWriteMBPerSec(IOContext.Context context)voidsetMaxWriteMBPerSec(java.lang.Double mbPerSec, IOContext.Context context)Sets the maximum (approx) MB/sec allowed by all write IO performed byIndexOutputcreated with the givenIOContext.Context.voidsetRateLimiter(RateLimiter mergeWriteRateLimiter, IOContext.Context context)Sets the rate limiter to be used to limit (approx) MB/sec allowed by all IO performed with the givencontext.-
Methods inherited from class org.apache.lucene.store.FilterDirectory
clearLock, close, deleteFile, fileExists, fileLength, getDelegate, getLockFactory, getLockID, listAll, makeLock, openInput, setLockFactory, sync, toString
-
-
-
-
Constructor Detail
-
RateLimitedDirectoryWrapper
public RateLimitedDirectoryWrapper(Directory wrapped)
-
-
Method Detail
-
createOutput
public IndexOutput createOutput(java.lang.String name, IOContext context) throws java.io.IOException
Description copied from class:DirectoryCreates a new, empty file in the directory with the given name. Returns a stream writing this file.- Overrides:
createOutputin classFilterDirectory- Throws:
java.io.IOException
-
createSlicer
public Directory.IndexInputSlicer createSlicer(java.lang.String name, IOContext context) throws java.io.IOException
Description copied from class:DirectoryCreates anDirectory.IndexInputSlicerfor the given file name. IndexInputSlicer allows otherDirectoryimplementations to efficiently open one or more slicedIndexInputinstances from a single file handle. The underlying file handle is kept open until theDirectory.IndexInputSliceris closed.- Must throw
FileNotFoundExceptionif the file does not exist (notjava.nio.file.NoSuchFileExceptionof Java 7).- Overrides:
createSlicerin classDirectory- Throws:
java.io.IOException- if anIOExceptionoccurs
- Must throw
-
copy
public void copy(Directory to, java.lang.String src, java.lang.String dest, IOContext context) throws java.io.IOException
Description copied from class:DirectoryCopies the file src toDirectoryto 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.
-
setMaxWriteMBPerSec
public void setMaxWriteMBPerSec(java.lang.Double mbPerSec, IOContext.Context context)Sets the maximum (approx) MB/sec allowed by all write IO performed byIndexOutputcreated with the givenIOContext.Context. Passnullto have no limit.NOTE: For already created
IndexOutputinstances there is no guarantee this new rate will apply to them; it will only be guaranteed to apply for new createdIndexOutputinstances.NOTE: this is an optional operation and might not be respected by all Directory implementations. Currently only
bufferedDirectory implementations use rate-limiting.- Throws:
java.lang.IllegalArgumentException- if context isnullAlreadyClosedException- if theDirectoryis already closed
-
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 givencontext. Passnullto 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:
java.lang.IllegalArgumentException- if context isnullAlreadyClosedException- if theDirectoryis already closed
-
getMaxWriteMBPerSec
public java.lang.Double getMaxWriteMBPerSec(IOContext.Context context)
- Throws:
java.lang.IllegalArgumentException- if context isnullAlreadyClosedException- if theDirectoryis already closed
-
-