315157973 opened a new pull request, #15607: URL: https://github.com/apache/pulsar/pull/15607
### Motivation Pulsar persists the individual acknowledgments into Ledger for each subscription. acknowledgment hole uses guava range to record. Now a single entry is used to record these holes, but a single entry can not stores more than 5MB data. Therefore, this PIP stores these holes in multiple entries separately. And use LRU to ensure low memory usage. In this way, we can support almost unlimited acknowledgment hole. Doc: https://docs.google.com/document/d/1uQtyb8t6X04v2vrSrdGWLFkuCkBcGYZbqK8XsVJ4qkU/edit We do not need to persist the data of all entries every time, only the entries whose Ledger data has changed need to be re-saved. Therefore, we add a wrapper class to record dirty pages. ### Modifications 1. Add a wrapper class 2. Record dirty pages where `add` and `remove` ### Verifying this change RangeSetWrapperTest.java 1. Make sure dirty pages are recorded correctly 2. Make sure the behavior of wrapper class is the same as other RangeSets ### Documentation - [x] `no-need-doc` (Added configuration items, this part of the document can be automatically generated) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
