public class BookKeeper extends java.lang.Object implements BookKeeper
We assume there is one single writer to a ledger at any time.
There are four possible operations: start a new ledger, write to a ledger, read from a ledger and delete a ledger.
The exceptions resulting from synchronous calls and error code resulting from
asynchronous calls can be found in the class BKException
.
Modifier and Type | Class and Description |
---|---|
static class |
BookKeeper.Builder
BookKeeper Client Builder to build client instances.
|
static class |
BookKeeper.DigestType
There are 3 digest types that can be used for verification.
|
Modifier and Type | Field and Description |
---|---|
(package private) org.apache.bookkeeper.proto.BookieClient |
bookieClient |
(package private) BookieInfoReader |
bookieInfoReader |
(package private) java.util.concurrent.ScheduledExecutorService |
bookieInfoScheduler |
(package private) BookieWatcherImpl |
bookieWatcher |
(package private) boolean |
closed |
(package private) java.util.concurrent.locks.ReentrantReadWriteLock |
closeLock |
(package private) ClientConfiguration |
conf |
(package private) io.netty.channel.EventLoopGroup |
eventLoopGroup |
(package private) FeatureProvider |
featureProvider |
(package private) ClientInternalConf |
internalConf |
(package private) org.apache.bookkeeper.meta.LedgerIdGenerator |
ledgerIdGenerator |
(package private) org.apache.bookkeeper.meta.LedgerManager |
ledgerManager |
(package private) org.apache.bookkeeper.meta.LedgerManagerFactory |
ledgerManagerFactory |
(package private) org.apache.bookkeeper.common.util.OrderedExecutor |
mainWorkerPool |
(package private) org.apache.bookkeeper.meta.MetadataClientDriver |
metadataDriver |
(package private) boolean |
ownEventLoopGroup |
(package private) boolean |
ownTimer |
(package private) EnsemblePlacementPolicy |
placementPolicy |
(package private) io.netty.util.HashedWheelTimer |
requestTimer |
(package private) org.apache.bookkeeper.common.util.OrderedScheduler |
scheduler |
Constructor and Description |
---|
BookKeeper()
Allow to extend BookKeeper for mocking in unit tests.
|
BookKeeper(ClientConfiguration conf)
Create a bookkeeper client using a configuration object.
|
BookKeeper(ClientConfiguration conf,
org.apache.zookeeper.ZooKeeper zk)
Create a bookkeeper client but use the passed in zookeeper client instead
of instantiating one.
|
BookKeeper(ClientConfiguration conf,
org.apache.zookeeper.ZooKeeper zk,
io.netty.channel.EventLoopGroup eventLoopGroup)
Create a bookkeeper client but use the passed in zookeeper client and
client event loop group instead of instantiating those.
|
BookKeeper(ClientConfiguration conf,
org.apache.zookeeper.ZooKeeper zkc,
io.netty.channel.EventLoopGroup eventLoopGroup,
io.netty.buffer.ByteBufAllocator byteBufAllocator,
StatsLogger rootStatsLogger,
org.apache.bookkeeper.net.DNSToSwitchMapping dnsResolver,
io.netty.util.HashedWheelTimer requestTimer,
FeatureProvider featureProvider)
Constructor for use with the builder.
|
BookKeeper(java.lang.String servers)
Create a bookkeeper client.
|
Modifier and Type | Method and Description |
---|---|
void |
asyncCreateLedger(int ensSize,
int writeQuorumSize,
BookKeeper.DigestType digestType,
byte[] passwd,
AsyncCallback.CreateCallback cb,
java.lang.Object ctx)
Creates a new ledger asynchronously.
|
void |
asyncCreateLedger(int ensSize,
int writeQuorumSize,
int ackQuorumSize,
BookKeeper.DigestType digestType,
byte[] passwd,
AsyncCallback.CreateCallback cb,
java.lang.Object ctx,
java.util.Map<java.lang.String,byte[]> customMetadata)
Creates a new ledger asynchronously.
|
void |
asyncCreateLedgerAdv(int ensSize,
int writeQuorumSize,
int ackQuorumSize,
BookKeeper.DigestType digestType,
byte[] passwd,
AsyncCallback.CreateCallback cb,
java.lang.Object ctx,
java.util.Map<java.lang.String,byte[]> customMetadata)
Creates a new ledger asynchronously and returns
LedgerHandleAdv
which can accept entryId. |
void |
asyncCreateLedgerAdv(long ledgerId,
int ensSize,
int writeQuorumSize,
int ackQuorumSize,
BookKeeper.DigestType digestType,
byte[] passwd,
AsyncCallback.CreateCallback cb,
java.lang.Object ctx,
java.util.Map<java.lang.String,byte[]> customMetadata)
Asynchronously creates a new ledger using the interface which accepts a ledgerId as input.
|
void |
asyncDeleteLedger(long lId,
AsyncCallback.DeleteCallback cb,
java.lang.Object ctx)
Deletes a ledger asynchronously.
|
void |
asyncIsClosed(long lId,
AsyncCallback.IsClosedCallback cb,
java.lang.Object ctx)
Check asynchronously whether the ledger with identifier lId
has been closed.
|
void |
asyncOpenLedger(long lId,
BookKeeper.DigestType digestType,
byte[] passwd,
AsyncCallback.OpenCallback cb,
java.lang.Object ctx)
Open existing ledger asynchronously for reading.
|
void |
asyncOpenLedgerNoRecovery(long lId,
BookKeeper.DigestType digestType,
byte[] passwd,
AsyncCallback.OpenCallback cb,
java.lang.Object ctx)
Open existing ledger asynchronously for reading, but it does not try to
recover the ledger if it is not yet closed.
|
(package private) void |
checkForFaultyBookies() |
void |
close()
Shuts down client.
|
LedgerHandle |
createLedger(BookKeeper.DigestType digestType,
byte[] passwd)
Creates a new ledger.
|
LedgerHandle |
createLedger(int ensSize,
int qSize,
BookKeeper.DigestType digestType,
byte[] passwd)
Synchronous call to create ledger.
|
LedgerHandle |
createLedger(int ensSize,
int writeQuorumSize,
int ackQuorumSize,
BookKeeper.DigestType digestType,
byte[] passwd)
Synchronous call to create ledger.
|
LedgerHandle |
createLedger(int ensSize,
int writeQuorumSize,
int ackQuorumSize,
BookKeeper.DigestType digestType,
byte[] passwd,
java.util.Map<java.lang.String,byte[]> customMetadata)
Synchronous call to create ledger.
|
LedgerHandle |
createLedgerAdv(int ensSize,
int writeQuorumSize,
int ackQuorumSize,
BookKeeper.DigestType digestType,
byte[] passwd)
Synchronous call to create ledger.
|
LedgerHandle |
createLedgerAdv(int ensSize,
int writeQuorumSize,
int ackQuorumSize,
BookKeeper.DigestType digestType,
byte[] passwd,
java.util.Map<java.lang.String,byte[]> customMetadata)
Synchronous call to create ledger.
|
LedgerHandle |
createLedgerAdv(long ledgerId,
int ensSize,
int writeQuorumSize,
int ackQuorumSize,
BookKeeper.DigestType digestType,
byte[] passwd,
java.util.Map<java.lang.String,byte[]> customMetadata)
Synchronously creates a new ledger using the interface which accepts a ledgerId as input.
|
void |
deleteLedger(long lId)
Synchronous call to delete a ledger.
|
static BookKeeper.Builder |
forConfig(ClientConfiguration conf) |
(package private) org.apache.bookkeeper.proto.BookieClient |
getBookieClient()
Get the BookieClient, currently used for doing bookie recovery.
|
java.util.Map<org.apache.bookkeeper.net.BookieSocketAddress,BookieInfoReader.BookieInfo> |
getBookieInfo()
Retrieves BookieInfo from all the bookies in the cluster.
|
(package private) BookieWatcher |
getBookieWatcher() |
(package private) ClientContext |
getClientCtx() |
(package private) java.util.concurrent.locks.ReentrantReadWriteLock |
getCloseLock() |
protected ClientConfiguration |
getConf() |
(package private) org.apache.bookkeeper.meta.LedgerIdGenerator |
getLedgerIdGenerator() |
org.apache.bookkeeper.meta.LedgerManager |
getLedgerManager()
Returns ref to speculative read counter, needed in PendingReadOp.
|
org.apache.bookkeeper.common.util.OrderedExecutor |
getMainWorkerPool() |
org.apache.bookkeeper.meta.MetadataClientDriver |
getMetadataClientDriver() |
(package private) EnsemblePlacementPolicy |
getPlacementPolicy() |
(package private) static int |
getReturnRc(org.apache.bookkeeper.proto.BookieClient bookieClient,
int rc) |
(package private) int |
getReturnRc(int rc) |
(package private) org.apache.bookkeeper.common.util.OrderedScheduler |
getScheduler() |
(package private) StatsLogger |
getStatsLogger() |
(package private) org.apache.bookkeeper.meta.LedgerManager |
getUnderlyingLedgerManager() |
(package private) org.apache.zookeeper.ZooKeeper |
getZkHandle() |
(package private) boolean |
isClosed() |
boolean |
isClosed(long lId)
Check whether the ledger with identifier lId
has been closed.
|
CreateBuilder |
newCreateLedgerOp()
Start the creation of a new ledger.
|
DeleteBuilder |
newDeleteLedgerOp()
Delete an existing ledger.
|
OpenBuilder |
newOpenLedgerOp()
Open an existing ledger.
|
LedgerHandle |
openLedger(long lId,
BookKeeper.DigestType digestType,
byte[] passwd)
Synchronous open ledger call.
|
LedgerHandle |
openLedgerNoRecovery(long lId,
BookKeeper.DigestType digestType,
byte[] passwd)
Synchronous, unsafe open ledger call.
|
(package private) void |
scheduleBookieHealthCheckIfEnabled(ClientConfiguration conf) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
newBuilder
final io.netty.channel.EventLoopGroup eventLoopGroup
boolean ownEventLoopGroup
final org.apache.bookkeeper.proto.BookieClient bookieClient
final BookieWatcherImpl bookieWatcher
final org.apache.bookkeeper.common.util.OrderedExecutor mainWorkerPool
final org.apache.bookkeeper.common.util.OrderedScheduler scheduler
final io.netty.util.HashedWheelTimer requestTimer
final boolean ownTimer
final FeatureProvider featureProvider
final java.util.concurrent.ScheduledExecutorService bookieInfoScheduler
final org.apache.bookkeeper.meta.MetadataClientDriver metadataDriver
final org.apache.bookkeeper.meta.LedgerManagerFactory ledgerManagerFactory
final org.apache.bookkeeper.meta.LedgerManager ledgerManager
final org.apache.bookkeeper.meta.LedgerIdGenerator ledgerIdGenerator
final EnsemblePlacementPolicy placementPolicy
BookieInfoReader bookieInfoReader
final ClientConfiguration conf
final ClientInternalConf internalConf
boolean closed
final java.util.concurrent.locks.ReentrantReadWriteLock closeLock
public BookKeeper(java.lang.String servers) throws java.io.IOException, java.lang.InterruptedException, BKException
servers
- A list of one of more servers on which zookeeper is running. The
client assumes that the running bookies have been registered with
zookeeper under the path
AbstractConfiguration.getZkAvailableBookiesPath()
java.io.IOException
java.lang.InterruptedException
BKException
public BookKeeper(ClientConfiguration conf) throws java.io.IOException, java.lang.InterruptedException, BKException
conf
- Client Configuration objectjava.io.IOException
java.lang.InterruptedException
BKException
public BookKeeper(ClientConfiguration conf, org.apache.zookeeper.ZooKeeper zk) throws java.io.IOException, java.lang.InterruptedException, BKException
conf
- Client Configuration object
ClientConfiguration
zk
- Zookeeper client instance connected to the zookeeper with which
the bookies have registeredjava.io.IOException
java.lang.InterruptedException
BKException
public BookKeeper(ClientConfiguration conf, org.apache.zookeeper.ZooKeeper zk, io.netty.channel.EventLoopGroup eventLoopGroup) throws java.io.IOException, java.lang.InterruptedException, BKException
conf
- Client Configuration Object
ClientConfiguration
zk
- Zookeeper client instance connected to the zookeeper with which
the bookies have registered. The ZooKeeper client must be connected
before it is passed to BookKeeper. Otherwise a KeeperException is thrown.eventLoopGroup
- An event loop group that will be used to create connections to the bookiesjava.io.IOException
java.lang.InterruptedException
BKException
- in the event of a bookkeeper connection errorBookKeeper(ClientConfiguration conf, org.apache.zookeeper.ZooKeeper zkc, io.netty.channel.EventLoopGroup eventLoopGroup, io.netty.buffer.ByteBufAllocator byteBufAllocator, StatsLogger rootStatsLogger, org.apache.bookkeeper.net.DNSToSwitchMapping dnsResolver, io.netty.util.HashedWheelTimer requestTimer, FeatureProvider featureProvider) throws java.io.IOException, java.lang.InterruptedException, BKException
java.io.IOException
java.lang.InterruptedException
BKException
BookKeeper()
public static BookKeeper.Builder forConfig(ClientConfiguration conf)
int getReturnRc(int rc)
static int getReturnRc(org.apache.bookkeeper.proto.BookieClient bookieClient, int rc)
void scheduleBookieHealthCheckIfEnabled(ClientConfiguration conf)
void checkForFaultyBookies()
public org.apache.bookkeeper.meta.LedgerManager getLedgerManager()
org.apache.bookkeeper.meta.LedgerManager getUnderlyingLedgerManager()
org.apache.bookkeeper.meta.LedgerIdGenerator getLedgerIdGenerator()
java.util.concurrent.locks.ReentrantReadWriteLock getCloseLock()
boolean isClosed()
BookieWatcher getBookieWatcher()
public org.apache.bookkeeper.common.util.OrderedExecutor getMainWorkerPool()
org.apache.bookkeeper.common.util.OrderedScheduler getScheduler()
EnsemblePlacementPolicy getPlacementPolicy()
public org.apache.bookkeeper.meta.MetadataClientDriver getMetadataClientDriver()
org.apache.zookeeper.ZooKeeper getZkHandle()
protected ClientConfiguration getConf()
StatsLogger getStatsLogger()
org.apache.bookkeeper.proto.BookieClient getBookieClient()
public java.util.Map<org.apache.bookkeeper.net.BookieSocketAddress,BookieInfoReader.BookieInfo> getBookieInfo() throws BKException, java.lang.InterruptedException
BKException
java.lang.InterruptedException
public void asyncCreateLedger(int ensSize, int writeQuorumSize, BookKeeper.DigestType digestType, byte[] passwd, AsyncCallback.CreateCallback cb, java.lang.Object ctx)
ensSize
- number of bookies over which to stripe entrieswriteQuorumSize
- number of bookies each entry will be written to. each of these bookies
must acknowledge the entry before the call is completed.digestType
- digest type, either MAC or CRC32passwd
- passwordcb
- createCallback implementationctx
- optional control objectpublic void asyncCreateLedger(int ensSize, int writeQuorumSize, int ackQuorumSize, BookKeeper.DigestType digestType, byte[] passwd, AsyncCallback.CreateCallback cb, java.lang.Object ctx, java.util.Map<java.lang.String,byte[]> customMetadata)
Separating the write and the ack quorum allows the BookKeeper client to continue
writing when a bookie has failed but the failure has not yet been detected. Detecting
a bookie has failed can take a number of seconds, as configured by the read timeout
ClientConfiguration.getReadTimeout()
. Once the bookie failure is detected,
that bookie will be removed from the ensemble.
The other parameters match those of asyncCreateLedger(int, int, DigestType, byte[],
AsyncCallback.CreateCallback, Object)
ensSize
- number of bookies over which to stripe entrieswriteQuorumSize
- number of bookies each entry will be written toackQuorumSize
- number of bookies which must acknowledge an entry before the call is completeddigestType
- digest type, either MAC or CRC32passwd
- passwordcb
- createCallback implementationctx
- optional control objectcustomMetadata
- optional customMetadata that holds user specified metadatapublic LedgerHandle createLedger(BookKeeper.DigestType digestType, byte[] passwd) throws BKException, java.lang.InterruptedException
digestType
- digest type, either MAC or CRC32passwd
- passwordjava.lang.InterruptedException
BKException
public LedgerHandle createLedger(int ensSize, int qSize, BookKeeper.DigestType digestType, byte[] passwd) throws java.lang.InterruptedException, BKException
asyncCreateLedger(int, int, DigestType, byte[],
AsyncCallback.CreateCallback, Object)
ensSize
- qSize
- digestType
- passwd
- java.lang.InterruptedException
BKException
public LedgerHandle createLedger(int ensSize, int writeQuorumSize, int ackQuorumSize, BookKeeper.DigestType digestType, byte[] passwd) throws java.lang.InterruptedException, BKException
asyncCreateLedger(int, int, DigestType, byte[],
AsyncCallback.CreateCallback, Object)
ensSize
- writeQuorumSize
- ackQuorumSize
- digestType
- passwd
- java.lang.InterruptedException
BKException
public LedgerHandle createLedger(int ensSize, int writeQuorumSize, int ackQuorumSize, BookKeeper.DigestType digestType, byte[] passwd, java.util.Map<java.lang.String,byte[]> customMetadata) throws java.lang.InterruptedException, BKException
ensSize
- writeQuorumSize
- ackQuorumSize
- digestType
- passwd
- customMetadata
- java.lang.InterruptedException
BKException
public LedgerHandle createLedgerAdv(int ensSize, int writeQuorumSize, int ackQuorumSize, BookKeeper.DigestType digestType, byte[] passwd) throws java.lang.InterruptedException, BKException
LedgerHandleAdv
which can accept entryId.
Parameters must match those of asyncCreateLedgerAdvensSize
- writeQuorumSize
- ackQuorumSize
- digestType
- passwd
- java.lang.InterruptedException
BKException
public LedgerHandle createLedgerAdv(int ensSize, int writeQuorumSize, int ackQuorumSize, BookKeeper.DigestType digestType, byte[] passwd, java.util.Map<java.lang.String,byte[]> customMetadata) throws java.lang.InterruptedException, BKException
LedgerHandleAdv
which can accept entryId.
Parameters must match those of asyncCreateLedgerAdvensSize
- writeQuorumSize
- ackQuorumSize
- digestType
- passwd
- customMetadata
- java.lang.InterruptedException
BKException
public void asyncCreateLedgerAdv(int ensSize, int writeQuorumSize, int ackQuorumSize, BookKeeper.DigestType digestType, byte[] passwd, AsyncCallback.CreateCallback cb, java.lang.Object ctx, java.util.Map<java.lang.String,byte[]> customMetadata)
LedgerHandleAdv
which can accept entryId. Ledgers created with this call have ability to accept
a separate write quorum and ack quorum size. The write quorum must be larger than
the ack quorum.
Separating the write and the ack quorum allows the BookKeeper client to continue
writing when a bookie has failed but the failure has not yet been detected. Detecting
a bookie has failed can take a number of seconds, as configured by the read timeout
ClientConfiguration.getReadTimeout()
. Once the bookie failure is detected,
that bookie will be removed from the ensemble.
The other parameters match those of asyncCreateLedger(int, int, DigestType, byte[],
AsyncCallback.CreateCallback, Object)
ensSize
- number of bookies over which to stripe entrieswriteQuorumSize
- number of bookies each entry will be written toackQuorumSize
- number of bookies which must acknowledge an entry before the call is completeddigestType
- digest type, either MAC or CRC32passwd
- passwordcb
- createCallback implementationctx
- optional control objectcustomMetadata
- optional customMetadata that holds user specified metadatapublic LedgerHandle createLedgerAdv(long ledgerId, int ensSize, int writeQuorumSize, int ackQuorumSize, BookKeeper.DigestType digestType, byte[] passwd, java.util.Map<java.lang.String,byte[]> customMetadata) throws java.lang.InterruptedException, BKException
LedgerHandleAdv
which can accept entryId.
Parameters must match those of asyncCreateLedgerAdvWithLedgerIdledgerId
- ensSize
- writeQuorumSize
- ackQuorumSize
- digestType
- passwd
- customMetadata
- java.lang.InterruptedException
BKException
public void asyncCreateLedgerAdv(long ledgerId, int ensSize, int writeQuorumSize, int ackQuorumSize, BookKeeper.DigestType digestType, byte[] passwd, AsyncCallback.CreateCallback cb, java.lang.Object ctx, java.util.Map<java.lang.String,byte[]> customMetadata)
LedgerHandleAdv
which can accept entryId.
Ledgers created with this call have ability to accept
a separate write quorum and ack quorum size. The write quorum must be larger than
the ack quorum.
Separating the write and the ack quorum allows the BookKeeper client to continue
writing when a bookie has failed but the failure has not yet been detected. Detecting
a bookie has failed can take a number of seconds, as configured by the read timeout
ClientConfiguration.getReadTimeout()
. Once the bookie failure is detected,
that bookie will be removed from the ensemble.
The other parameters match those of asyncCreateLedger
ledgerId
- ledger Id to use for the newly created ledgerensSize
- number of bookies over which to stripe entrieswriteQuorumSize
- number of bookies each entry will be written toackQuorumSize
- number of bookies which must acknowledge an entry before the call is completeddigestType
- digest type, either MAC or CRC32passwd
- passwordcb
- createCallback implementationctx
- optional control objectcustomMetadata
- optional customMetadata that holds user specified metadatapublic void asyncOpenLedger(long lId, BookKeeper.DigestType digestType, byte[] passwd, AsyncCallback.OpenCallback cb, java.lang.Object ctx)
Opening a ledger with this method invokes fencing and recovery on the ledger if the ledger has not been closed. Fencing will block all other clients from writing to the ledger. Recovery will make sure that the ledger is closed before reading from it.
Recovery also makes sure that any entries which reached one bookie, but not a quorum, will be replicated to a quorum of bookies. This occurs in cases were the writer of a ledger crashes after sending a write request to one bookie but before being able to send it to the rest of the bookies in the quorum.
If the ledger is already closed, neither fencing nor recovery will be applied.
lId
- ledger identifierdigestType
- digest type, either MAC or CRC32passwd
- passwordctx
- optional control objectLedgerHandle.asyncClose(org.apache.bookkeeper.client.AsyncCallback.CloseCallback, java.lang.Object)
public void asyncOpenLedgerNoRecovery(long lId, BookKeeper.DigestType digestType, byte[] passwd, AsyncCallback.OpenCallback cb, java.lang.Object ctx)
Opening a ledger without recovery does not fence the ledger. As such, other clients can continue to write to the ledger.
This method returns a read only ledger handle. It will not be possible to add entries to the ledger. Any attempt to add entries will throw an exception.
Reads from the returned ledger will be able to read entries up until the lastConfirmedEntry at the point in time at which the ledger was opened. If an attempt is made to read beyond the ledger handle's LAC, an attempt is made to get the latest LAC from bookies or metadata, and if the entry_id of the read request is less than or equal to the new LAC, read will be allowed to proceed.
lId
- ledger identifierdigestType
- digest type, either MAC or CRC32passwd
- passwordctx
- optional control objectpublic LedgerHandle openLedger(long lId, BookKeeper.DigestType digestType, byte[] passwd) throws BKException, java.lang.InterruptedException
lId
- ledger identifierdigestType
- digest type, either MAC or CRC32passwd
- passwordjava.lang.InterruptedException
BKException
asyncOpenLedger(long, org.apache.bookkeeper.client.BookKeeper.DigestType, byte[], org.apache.bookkeeper.client.AsyncCallback.OpenCallback, java.lang.Object)
public LedgerHandle openLedgerNoRecovery(long lId, BookKeeper.DigestType digestType, byte[] passwd) throws BKException, java.lang.InterruptedException
lId
- ledger identifierdigestType
- digest type, either MAC or CRC32passwd
- passwordjava.lang.InterruptedException
BKException
asyncOpenLedgerNoRecovery(long, org.apache.bookkeeper.client.BookKeeper.DigestType, byte[], org.apache.bookkeeper.client.AsyncCallback.OpenCallback, java.lang.Object)
public void asyncDeleteLedger(long lId, AsyncCallback.DeleteCallback cb, java.lang.Object ctx)
lId
- ledger Idcb
- deleteCallback implementationctx
- optional control objectpublic void deleteLedger(long lId) throws java.lang.InterruptedException, BKException
asyncDeleteLedger(long, AsyncCallback.DeleteCallback, Object)
lId
- ledgerIdjava.lang.InterruptedException
BKException
public void asyncIsClosed(long lId, AsyncCallback.IsClosedCallback cb, java.lang.Object ctx)
lId
- ledger identifiercb
- callback methodpublic boolean isClosed(long lId) throws BKException, java.lang.InterruptedException
lId
- BKException
java.lang.InterruptedException
public void close() throws BKException, java.lang.InterruptedException
close
in interface java.lang.AutoCloseable
close
in interface BookKeeper
BKException
java.lang.InterruptedException
public CreateBuilder newCreateLedgerOp()
BookKeeper
newCreateLedgerOp
in interface BookKeeper
public OpenBuilder newOpenLedgerOp()
BookKeeper
newOpenLedgerOp
in interface BookKeeper
public DeleteBuilder newDeleteLedgerOp()
BookKeeper
newDeleteLedgerOp
in interface BookKeeper
ClientContext getClientCtx()
Copyright © 2011–2020 The Apache Software Foundation. All rights reserved.