Class RateLimitedDirectoryWrapper
- All Implemented Interfaces:
Closeable
,AutoCloseable
-
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 -
Method Summary
Modifier and TypeMethodDescriptionvoid
Copies the file src toDirectory
to under the new file name dest.createOutput
(String name, IOContext context) Creates a new, empty file in the directory with the given name.createSlicer
(String name, IOContext context) Creates anDirectory.IndexInputSlicer
for the given file name.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 Details
-
RateLimitedDirectoryWrapper
-
-
Method Details
-
createOutput
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
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
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
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
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
- Throws:
IllegalArgumentException
- if context isnull
AlreadyClosedException
- if theDirectory
is already closed
-