BewareMyPower opened a new pull request, #19414:
URL: https://github.com/apache/pulsar/pull/19414

   Master issue: https://github.com/apache/pulsar/issues/18950
   
   ### Motivation
   
   We need a common interface to get fields of the MessageIdData. After that, 
we won't need to assert a MessageId implementation is an instance of a specific 
class. And we can pass our customized MessageId implementation to APIs like 
`acknowledge` and `seek`.
   
   ### Modifications
   
   - Add `MessageIdAdv` to get fields of `MessageIdData`, make all MessageId 
implementations inherit it (except `MultiMessageIdImpl`).
   - Add `MessageIdAdvUtils` for the most common used methods.
   - Replace `BatchMessageAcker` with the `BitSet` for ACK.
   - Remove `TopicMessageIdImpl#getInnerMessageId` since a `TopicMessageIdImpl` 
can be treated as its underlying `MessageId` implementation now.
   - Remove `instanceof BatchMessageIdImpl` checks in `pulsar-client` module by 
casting to `MessageIdAdv`.
   
   After this refactoring, the 3rd party library will no longer need to cast a 
`MessageId` to a specific implementation. It only needs to cast `MessageId` to 
`MessageIdAdv`. Users can also implement their own util class so the methods of 
`MessageIdAdvUtils` are all not public.
   
   ### Verifications
   
   Add `CustomMessageIdTest` to verify a simple MessageIdAdv implementation 
that only has the (ledger id, entry id, batch idx, batch size) fields also 
works for seek and acknowledgment.
   
   ### Does this pull request potentially affect one of the following parts:
   
   <!-- DO NOT REMOVE THIS SECTION. CHECK THE PROPER BOX ONLY. -->
   
   *If the box was checked, please highlight the changes*
   
   - [ ] Dependencies (add or upgrade a dependency)
   - [x] The public API
   - [ ] The schema
   - [ ] The default values of configurations
   - [ ] The threading model
   - [ ] The binary protocol
   - [ ] The REST endpoints
   - [ ] The admin CLI options
   - [ ] The metrics
   - [ ] Anything that affects deployment
   
   ### Documentation
   
   - [x] `doc` <!-- Your PR contains doc changes. -->
   - [ ] `doc-required` <!-- Your PR changes impact docs and you will update 
later -->
   - [ ] `doc-not-needed` <!-- Your PR changes do not impact docs -->
   - [ ] `doc-complete` <!-- Docs have been already added -->
   
   ### Matching PR in forked repository
   
   PR in forked repository: https://github.com/BewareMyPower/pulsar/pull/19


-- 
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]

Reply via email to