Package org.apache.bookkeeper.meta
Class LegacyHierarchicalLedgerManager
- java.lang.Object
-
- org.apache.bookkeeper.meta.AbstractZkLedgerManager
-
- org.apache.bookkeeper.meta.AbstractHierarchicalLedgerManager
-
- org.apache.bookkeeper.meta.LegacyHierarchicalLedgerManager
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
,LedgerManager
,org.apache.zookeeper.Watcher
class LegacyHierarchicalLedgerManager extends AbstractHierarchicalLedgerManager
Hierarchical Ledger Manager which manages ledger meta in zookeeper using 2-level hierarchical znodes.LegacyHierarchicalLedgerManager splits the generated id into 3 parts (2-4-4):
<level1 (2 digits)><level2 (4 digits)><level3 (4 digits)>
These 3 parts are used to form the actual ledger node path used to store ledger metadata:(ledgersRootPath)/level1/level2/L(level3)
E.g Ledger 0000000001 is split into 3 parts 00, 0000, 0001, which is stored in (ledgersRootPath)/00/0000/L0001. So each znode could have at most 10000 ledgers, which avoids errors during garbage collection due to lists of children that are too long.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.bookkeeper.meta.AbstractZkLedgerManager
AbstractZkLedgerManager.CancelWatchLedgerMetadataTask, AbstractZkLedgerManager.ReadLedgerMetadataTask
-
Nested classes/interfaces inherited from interface org.apache.bookkeeper.meta.LedgerManager
LedgerManager.LedgerRange, LedgerManager.LedgerRangeIterator
-
-
Field Summary
Fields Modifier and Type Field Description (package private) static java.lang.String
IDGEN_ZNODE
(package private) static org.slf4j.Logger
LOG
-
Fields inherited from class org.apache.bookkeeper.meta.AbstractZkLedgerManager
conf, ledgerRootPath, listeners, scheduler, zk, ZK_CONNECT_BACKOFF_MS
-
-
Constructor Summary
Constructors Constructor Description LegacyHierarchicalLedgerManager(AbstractConfiguration conf, org.apache.zookeeper.ZooKeeper zk)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
asyncProcessLedgers(BookkeeperInternalCallbacks.Processor<java.lang.Long> processor, org.apache.zookeeper.AsyncCallback.VoidCallback finalCb, java.lang.Object context, int successRc, int failureRc)
Loop to process all ledgers.long
getLedgerId(java.lang.String pathName)
Get ledger id from its znode ledger path.protected java.lang.String
getLedgerParentNodeRegex()
regex expression for name of top level parent znode for ledgers (in HierarchicalLedgerManager) or znode of a ledger (in FlatLedgerManager).java.lang.String
getLedgerPath(long ledgerId)
Get the znode path that is used to store ledger metadata.LedgerManager.LedgerRangeIterator
getLedgerRanges(long zkOpTimeoutMs)
Loop to scan a range of metadata from metadata storage.-
Methods inherited from class org.apache.bookkeeper.meta.AbstractHierarchicalLedgerManager
asyncProcessLevelNodes, getLedgerId, ledgerListToSet
-
Methods inherited from class org.apache.bookkeeper.meta.AbstractZkLedgerManager
asyncProcessLedgersInSingleNode, close, createLedgerMetadata, isLeadgerIdGeneratorZnode, isLedgerParentNode, isSpecialZnode, process, readLedgerMetadata, readLedgerMetadata, registerLedgerMetadataListener, removeLedgerMetadata, unregisterLedgerMetadataListener, writeLedgerMetadata
-
-
-
-
Field Detail
-
LOG
static final org.slf4j.Logger LOG
-
IDGEN_ZNODE
static final java.lang.String IDGEN_ZNODE
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
LegacyHierarchicalLedgerManager
public LegacyHierarchicalLedgerManager(AbstractConfiguration conf, org.apache.zookeeper.ZooKeeper zk)
Constructor.- Parameters:
conf
- Configuration objectzk
- ZooKeeper Client Handle
-
-
Method Detail
-
getLedgerPath
public java.lang.String getLedgerPath(long ledgerId)
Description copied from class:AbstractZkLedgerManager
Get the znode path that is used to store ledger metadata.- Specified by:
getLedgerPath
in classAbstractZkLedgerManager
- Parameters:
ledgerId
- Ledger ID- Returns:
- ledger node path
-
getLedgerId
public long getLedgerId(java.lang.String pathName) throws java.io.IOException
Description copied from class:AbstractZkLedgerManager
Get ledger id from its znode ledger path.- Specified by:
getLedgerId
in classAbstractZkLedgerManager
- Parameters:
pathName
- Ledger path to store metadata- Returns:
- ledger id
- Throws:
java.io.IOException
- when the ledger path is invalid
-
asyncProcessLedgers
public void asyncProcessLedgers(BookkeeperInternalCallbacks.Processor<java.lang.Long> processor, org.apache.zookeeper.AsyncCallback.VoidCallback finalCb, java.lang.Object context, int successRc, int failureRc)
Description copied from interface:LedgerManager
Loop to process all ledgers.-
After all ledgers were processed, finalCb will be triggered:
- if all ledgers are processed done with OK, success rc will be passed to finalCb.
- if some ledgers are processed failed, failure rc will be passed to finalCb.
- Parameters:
processor
- Ledger Processor to process a specific ledgerfinalCb
- Callback triggered after all ledgers are processedcontext
- Context of final callbacksuccessRc
- Success RC code passed to finalCb when callbackfailureRc
- Failure RC code passed to finalCb when exceptions occurred.
-
getLedgerParentNodeRegex
protected java.lang.String getLedgerParentNodeRegex()
Description copied from class:AbstractZkLedgerManager
regex expression for name of top level parent znode for ledgers (in HierarchicalLedgerManager) or znode of a ledger (in FlatLedgerManager).- Specified by:
getLedgerParentNodeRegex
in classAbstractZkLedgerManager
- Returns:
-
getLedgerRanges
public LedgerManager.LedgerRangeIterator getLedgerRanges(long zkOpTimeoutMs)
Description copied from interface:LedgerManager
Loop to scan a range of metadata from metadata storage.- Parameters:
zkOpTimeoutMs
- Iterator considers timeout while fetching ledger-range from zk.- Returns:
- will return a iterator of the Ranges
-
-