public final class RateLimitedDirectoryWrapper extends FilterDirectory
setRateLimiter(RateLimiter, IOContext.Context)
Directory.IndexInputSlicer
in
Constructor and Description |
---|
RateLimitedDirectoryWrapper(Directory wrapped) |
Modifier and Type | Method and Description |
---|---|
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)
|
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 . |
clearLock, close, deleteFile, fileExists, fileLength, getDelegate, getLockFactory, getLockID, listAll, makeLock, openInput, setLockFactory, sync, toString
ensureOpen
public RateLimitedDirectoryWrapper(Directory wrapped)
public IndexOutput createOutput(String name, IOContext context) throws IOException
Directory
createOutput
in class FilterDirectory
IOException
public Directory.IndexInputSlicer createSlicer(String name, IOContext context) throws IOException
Directory
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.
FileNotFoundException
if the file does not exist
(not java.nio.file.NoSuchFileException
of Java 7).createSlicer
in class Directory
IOException
- if an IOException
occurspublic void copy(Directory to, String src, String dest, IOContext context) throws IOException
Directory
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.
copy
in class Directory
IOException
public void setMaxWriteMBPerSec(Double mbPerSec, IOContext.Context context)
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.
IllegalArgumentException
- if context is null
AlreadyClosedException
- if the Directory
is already closedpublic void setRateLimiter(RateLimiter mergeWriteRateLimiter, IOContext.Context context)
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.
IllegalArgumentException
- if context is null
AlreadyClosedException
- if the Directory
is already closedpublic Double getMaxWriteMBPerSec(IOContext.Context context)
IllegalArgumentException
- if context is null
AlreadyClosedException
- if the Directory
is already closedCopyright © 2000-2014 Apache Software Foundation. All Rights Reserved.