@ThreadSafe
public class FileSystemContext
extends java.lang.Object
implements java.io.Closeable
FileSystem operations.
Typically, a single JVM should only need one instance of a FileSystem to connect to
Alluxio. The reference to that client object should be shared among threads.
A second FileSystemContext object should only be created when a user needs to connect to
Alluxio with a different Subject and/or AlluxioConfiguration.
FileSystemContext instances should be created sparingly because each instance creates
its own thread pools of FileSystemMasterClient and BlockMasterClient which can
lead to inefficient use of client machine resources.
A FileSystemContext should be closed once the user is done performing operations with
Alluxio and no more connections need to be made. Once a FileSystemContext is closed it
is preferred that the user of the class create a new instance with
create(alluxio.conf.AlluxioConfiguration, java.util.List<java.net.InetSocketAddress>) to create a new context, rather than reinitializing using the
init(alluxio.ClientContext, alluxio.master.MasterInquireClient) method.
NOTE: Each context maintains a pool of file system master clients that is already thread-safe.
Synchronizing FileSystemContext methods could lead to deadlock: thread A attempts to
acquire a client when there are no clients left in the pool and blocks holding a lock on the
FileSystemContext, when thread B attempts to release a client it owns it is unable to do
so, because thread A holds the lock on FileSystemContext.| Modifier and Type | Method and Description |
|---|---|
CloseableResource<BlockMasterClient> |
acquireBlockMasterClientResource()
Acquires a block master client resource from the block master client pool.
|
CloseableResource<BlockWorkerClient> |
acquireBlockWorkerClient(WorkerNetAddress workerNetAddress)
Acquires a block worker client from the client pools.
|
CloseableResource<FileSystemMasterClient> |
acquireMasterClientResource()
Acquires a file system master client from the file system master client pool.
|
FileSystemContextReinitializer.ReinitBlockerResource |
blockReinit()
Acquires the resource to block reinitialization.
|
void |
close()
Closes all the resources associated with the context.
|
static FileSystemContext |
create()
Creates a
FileSystemContext with an empty subject, default config
and a null local block worker. |
static FileSystemContext |
create(AlluxioConfiguration conf)
Creates a
FileSystemContext with an empty subject
and a null local block worker. |
static FileSystemContext |
create(AlluxioConfiguration conf,
java.util.List<java.net.InetSocketAddress> masterAddresses)
Creates a
FileSystemContext with an empty subject
, a null local block worker, and the given master addresses. |
static FileSystemContext |
create(ClientContext clientContext) |
static FileSystemContext |
create(ClientContext ctx,
BlockWorker blockWorker) |
static FileSystemContext |
create(ClientContext ctx,
BlockWorker blockWorker,
java.util.List<java.net.InetSocketAddress> masterAddresses) |
static FileSystemContext |
create(javax.security.auth.Subject subject,
AlluxioConfiguration conf) |
static FileSystemContext |
create(javax.security.auth.Subject subject,
MasterInquireClient masterInquireClient,
AlluxioConfiguration alluxioConf)
This method is provided for testing, use the
create(alluxio.conf.AlluxioConfiguration, java.util.List<java.net.InetSocketAddress>) methods. |
java.util.List<BlockWorkerInfo> |
getCachedWorkers()
Gets the cached worker information list.
|
ClientContext |
getClientContext() |
AlluxioConfiguration |
getClusterConf() |
java.lang.String |
getId() |
java.net.InetSocketAddress |
getMasterAddress() |
MasterClientContext |
getMasterClientContext() |
WorkerNetAddress |
getNodeLocalWorker() |
AlluxioConfiguration |
getPathConf(AlluxioURI path)
The path level configuration is a
SpecificPathConfiguration. |
java.util.Optional<BlockWorker> |
getProcessLocalWorker()
Acquires the internal block worker as a gateway for worker internal clients to communicate
with the local worker directly without going through external RPC frameworks.
|
BlockLocationPolicy |
getReadBlockLocationPolicy(AlluxioConfiguration alluxioConf)
Gets the readBlockLocationPolicy.
|
boolean |
getUriValidationEnabled() |
BlockLocationPolicy |
getWriteBlockLocationPolicy(AlluxioConfiguration alluxioConf)
Gets the writeBlockLocationPolicy.
|
boolean |
hasNodeLocalWorker() |
boolean |
hasProcessLocalWorker() |
void |
reinit(boolean updateClusterConf,
boolean updatePathConf)
Closes the context, updates configuration from meta master, then re-initializes the context.
|
public static FileSystemContext create(AlluxioConfiguration conf, java.util.List<java.net.InetSocketAddress> masterAddresses)
FileSystemContext with an empty subject
, a null local block worker, and the given master addresses.conf - Alluxio configurationmasterAddresses - the master addresses to use, this addresses will be
used across reinitializationpublic static FileSystemContext create()
FileSystemContext with an empty subject, default config
and a null local block worker.public static FileSystemContext create(AlluxioConfiguration conf)
FileSystemContext with an empty subject
and a null local block worker.conf - Alluxio configurationpublic static FileSystemContext create(javax.security.auth.Subject subject, AlluxioConfiguration conf)
subject - the parent subjectconf - Alluxio configurationpublic static FileSystemContext create(ClientContext clientContext)
clientContext - the ClientContext containing the subject and configurationFileSystemContextpublic static FileSystemContext create(ClientContext ctx, @Nullable BlockWorker blockWorker)
ctx - client contextblockWorker - block workerpublic static FileSystemContext create(ClientContext ctx, @Nullable BlockWorker blockWorker, @Nullable java.util.List<java.net.InetSocketAddress> masterAddresses)
ctx - client contextblockWorker - block workermasterAddresses - is non-null then the addresses used to connect to the masterpublic static FileSystemContext create(javax.security.auth.Subject subject, MasterInquireClient masterInquireClient, AlluxioConfiguration alluxioConf)
create(alluxio.conf.AlluxioConfiguration, java.util.List<java.net.InetSocketAddress>) methods. The
returned context object will not be cached automatically.subject - the parent subjectmasterInquireClient - the client to use for determining the master; note that if the
context is reset, this client will be replaced with a new masterInquireClient based on
the original configuration.alluxioConf - Alluxio configurationpublic void close()
throws java.io.IOException
FileSystem associated with this FileSystemContext.close in interface java.io.Closeableclose in interface java.lang.AutoCloseablejava.io.IOExceptionpublic FileSystemContextReinitializer.ReinitBlockerResource blockReinit()
public void reinit(boolean updateClusterConf,
boolean updatePathConf)
throws UnavailableException,
java.io.IOException
updateClusterConf - whether cluster level configuration should be updatedupdatePathConf - whether path level configuration should be updatedUnavailableException - when failed to load configuration from masterjava.io.IOException - when failed to close the contextpublic java.lang.String getId()
public MasterClientContext getMasterClientContext()
MasterClientContext backing this contextpublic ClientContext getClientContext()
ClientContext backing this FileSystemContextpublic AlluxioConfiguration getClusterConf()
FileSystemContextpublic AlluxioConfiguration getPathConf(AlluxioURI path)
SpecificPathConfiguration.
If path level configuration has never been loaded from meta master yet, it will be loaded.path - the path to get the configuration forpublic java.net.InetSocketAddress getMasterAddress()
throws UnavailableException
UnavailableException - if the master address cannot be determinedpublic boolean getUriValidationEnabled()
true if URI validation is enabledpublic CloseableResource<FileSystemMasterClient> acquireMasterClientResource()
Closeable.public CloseableResource<BlockMasterClient> acquireBlockMasterClientResource()
Closeable.public CloseableResource<BlockWorkerClient> acquireBlockWorkerClient(WorkerNetAddress workerNetAddress) throws java.io.IOException
workerNetAddress - the network address of the channeljava.io.IOExceptionpublic boolean hasProcessLocalWorker()
public java.util.Optional<BlockWorker> getProcessLocalWorker()
public boolean hasNodeLocalWorker()
throws java.io.IOException
java.io.IOExceptionpublic WorkerNetAddress getNodeLocalWorker() throws java.io.IOException
java.io.IOExceptionpublic java.util.List<BlockWorkerInfo> getCachedWorkers() throws java.io.IOException
getAllWorkers() instead.java.io.IOExceptionpublic BlockLocationPolicy getReadBlockLocationPolicy(AlluxioConfiguration alluxioConf)
alluxioConf - Alluxio configurationpublic BlockLocationPolicy getWriteBlockLocationPolicy(AlluxioConfiguration alluxioConf)
alluxioConf - Alluxio configurationCopyright © 2022. All Rights Reserved.