Class RateLimitedDirectoryWrapper
- java.lang.Object
-
- org.apache.lucene.store.Directory
-
- org.apache.lucene.store.FilterDirectory
-
- org.apache.lucene.store.RateLimitedDirectoryWrapper
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
public final class RateLimitedDirectoryWrapper extends FilterDirectory
-
-
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
Constructors Constructor Description RateLimitedDirectoryWrapper(Directory wrapped)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
copy(Directory to, String src, String dest, IOContext context)
Copies the file src toDirectory
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 anDirectory.IndexInputSlicer
for the given file name.Double
getMaxWriteMBPerSec(IOContext.Context context)
void
setMaxWriteMBPerSec(Double mbPerSec, IOContext.Context context)
Sets the maximum (approx) MB/sec allowed by all write IO performed byIndexOutput
created with the givenIOContext.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 givencontext
.-
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
-
-
-
-
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 classFilterDirectory
- Throws:
IOException
-
createSlicer
public Directory.IndexInputSlicer createSlicer(String name, IOContext context) throws IOException
Description copied from class:Directory
Creates anDirectory.IndexInputSlicer
for the given file name. IndexInputSlicer allows otherDirectory
implementations to efficiently open one or more slicedIndexInput
instances from a single file handle. The underlying file handle is kept open until theDirectory.IndexInputSlicer
is closed.- Must throw
FileNotFoundException
if the file does not exist (notjava.nio.file.NoSuchFileException
of Java 7).- Overrides:
createSlicer
in classDirectory
- Throws:
IOException
- if anIOException
occurs
- Must throw
-
copy
public void copy(Directory to, String src, String dest, IOContext context) throws IOException
Description copied from class:Directory
Copies the file src toDirectory
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 classDirectory
- Throws:
IOException
-
setMaxWriteMBPerSec
public void setMaxWriteMBPerSec(Double mbPerSec, IOContext.Context context)
Sets the maximum (approx) MB/sec allowed by all write IO performed byIndexOutput
created with the givenIOContext.Context
. Passnull
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 createdIndexOutput
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 isnull
AlreadyClosedException
- if theDirectory
is 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
. Passnull
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 isnull
AlreadyClosedException
- if theDirectory
is already closed
-
getMaxWriteMBPerSec
public Double getMaxWriteMBPerSec(IOContext.Context context)
- Throws:
IllegalArgumentException
- if context isnull
AlreadyClosedException
- if theDirectory
is already closed
-
-