Package org.apache.bookkeeper.meta
Class HierarchicalLedgerManager
- java.lang.Object
-
- org.apache.bookkeeper.meta.AbstractZkLedgerManager
-
- org.apache.bookkeeper.meta.AbstractHierarchicalLedgerManager
-
- org.apache.bookkeeper.meta.HierarchicalLedgerManager
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
,LedgerManager
,org.apache.zookeeper.Watcher
class HierarchicalLedgerManager extends AbstractHierarchicalLedgerManager
HierarchicalLedgerManager makes use of both LongHierarchicalLedgerManager and LegacyHierarchicalLedgerManager to extend the 31-bit ledger id range of the LegacyHierarchicalLedgerManager to that of the LongHierarchicalLedgerManager while remaining backwards-compatible with the legacy manager.In order to achieve backwards-compatibility, the HierarchicalLedgerManager forwards requests relating to ledger IDs which are < Integer.MAX_INT to the LegacyHierarchicalLedgerManager. The new 5-part directory structure will not appear until a ledger with an ID >= Integer.MAX_INT is created.
-
-
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) LegacyHierarchicalLedgerManager
legacyLM
(package private) static org.slf4j.Logger
LOG
(package private) LongHierarchicalLedgerManager
longLM
-
Fields inherited from class org.apache.bookkeeper.meta.AbstractZkLedgerManager
conf, ledgerRootPath, listeners, scheduler, zk, ZK_CONNECT_BACKOFF_MS
-
-
Constructor Summary
Constructors Constructor Description HierarchicalLedgerManager(AbstractConfiguration conf, org.apache.zookeeper.ZooKeeper zk)
-
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.void
close()
protected long
getLedgerId(java.lang.String ledgerPath)
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, createLedgerMetadata, isLeadgerIdGeneratorZnode, isLedgerParentNode, isSpecialZnode, process, readLedgerMetadata, readLedgerMetadata, registerLedgerMetadataListener, removeLedgerMetadata, unregisterLedgerMetadataListener, writeLedgerMetadata
-
-
-
-
Field Detail
-
LOG
static final org.slf4j.Logger LOG
-
legacyLM
LegacyHierarchicalLedgerManager legacyLM
-
longLM
LongHierarchicalLedgerManager longLM
-
-
Constructor Detail
-
HierarchicalLedgerManager
public HierarchicalLedgerManager(AbstractConfiguration conf, org.apache.zookeeper.ZooKeeper zk)
-
-
Method Detail
-
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.
-
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
protected long getLedgerId(java.lang.String ledgerPath) throws java.io.IOException
Description copied from class:AbstractZkLedgerManager
Get ledger id from its znode ledger path.- Specified by:
getLedgerId
in classAbstractZkLedgerManager
- Parameters:
ledgerPath
- Ledger path to store metadata- Returns:
- ledger id
- Throws:
java.io.IOException
- when the ledger path is invalid
-
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
-
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:
-
close
public void close()
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Overrides:
close
in classAbstractZkLedgerManager
-
-