Dear Pulsar Community,

I have created PIP-384: ManagedLedger interface decoupling, which
documents recent improvements to Pulsar's ManagedLedger component.
This PIP summarizes changes that have already been merged into the
master branch for Pulsar 4.0, as well as one remaining draft PR.

Problem:
The current ManagedLedger implementation faces several challenges:
1. Tight coupling between interfaces and implementation
2. Limited flexibility for integrating different storage systems
3. Strong dependency on BookKeeper
4. Increased complexity due to tight coupling
5. Limited extensibility for new features or optimizations

Solution:
PIP-384 documents changes that:
1. Decouple ManagedLedger interfaces from their implementation
2. Introduce a ReadOnlyManagedLedger interface
3. Decouple OpAddEntry and LedgerHandle from ManagedLedgerInterceptor
4. Enable support for multiple ManagedLedgerFactory instances
5. Decouple BookKeeper client from ManagedLedgerStorage

Benefits:
1. Improved flexibility for introducing alternative implementations
2. Reduced coupling between core Pulsar components and specific
ManagedLedger implementations
3. Groundwork for potential alternative storage solutions in the future
4. Improved maintainability and testability
5. Enhanced extensibility for new features and optimizations

The full proposal can be found at: https://github.com/apache/pulsar/pull/23363

The direct link to the rendered version of the markdown file is:
https://github.com/lhotari/pulsar/blob/lh-pip-384/pip/pip-384.md

These changes have already been implemented in PRs #22891 and #23311,
with one remaining draft PR #23313. This PIP aims to document these
changes for future reference.

I welcome your feedback and discussion on this documentation. Please
share your thoughts, concerns, or suggestions.

-Lari

Reply via email to