Class HierarchicalLedgerManager

All Implemented Interfaces:
Closeable, 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.

See Also:
  • Field Details

  • Constructor Details

    • HierarchicalLedgerManager

      public HierarchicalLedgerManager(AbstractConfiguration conf, org.apache.zookeeper.ZooKeeper zk)
  • Method Details

    • asyncProcessLedgers

      public void asyncProcessLedgers(BookkeeperInternalCallbacks.Processor<Long> processor, org.apache.zookeeper.AsyncCallback.VoidCallback finalCb, 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 ledger
      finalCb - Callback triggered after all ledgers are processed
      context - Context of final callback
      successRc - Success RC code passed to finalCb when callback
      failureRc - Failure RC code passed to finalCb when exceptions occurred.
    • getLedgerPath

      public String getLedgerPath(long ledgerId)
      Description copied from class: AbstractZkLedgerManager
      Get the znode path that is used to store ledger metadata.
      Specified by:
      getLedgerPath in class AbstractZkLedgerManager
      Parameters:
      ledgerId - Ledger ID
      Returns:
      ledger node path
    • getLedgerId

      protected long getLedgerId(String ledgerPath) throws IOException
      Description copied from class: AbstractZkLedgerManager
      Get ledger id from its znode ledger path.
      Specified by:
      getLedgerId in class AbstractZkLedgerManager
      Parameters:
      ledgerPath - Ledger path to store metadata
      Returns:
      ledger id
      Throws:
      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 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 class AbstractZkLedgerManager
      Returns:
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Overrides:
      close in class AbstractZkLedgerManager