I'm sorry for not getting back to you sooner.

>From the description of the proposal. You have figured out the problems
with the current
solution. From my understanding, only the first one is in the scope of this
proposal.
The other two problems, one is about the issue from ThresholdShedder and
another
one is about the load data sync issue.

It would be better to have a section "Scope" to underline that the proposal
is
trying to resolve the first issue. Or we can just describe it in the
motivation section like

---
There are a couple of problems with the current load balancer 1, 2, 3. This
proposal is
trying to resolve the first issue by introducing a pluggable topic bundle
assigner to
allow users to customize the topic bundle assignment according to their use
case.
Problem 2 and 3 is not in the scope of this proposal.
---

Just to make it more clear for reviewers to understand what is in the scope
and not in
the scope.

I remember there was an implementation section for assigning partitions to
different bundles. It will be an excellent example for users to understand
what a customized
topic bundle assigner looks like. I think we can add it back as an example
(not implementation)

For the newly introduced configuration in broker.conf.
I think we'd better use `topicBundleAssignmentStrategy` instead of `
partitionAssignerClassName.`
because it is only for partitions. Users can also implement their own
BundleAssignmentStrategy
for
non-partitioned topics.

For the new methods in the new strategy class:

---
    void onBundleSplit(NamespaceBundle bundle);
    void onBundleUnload(NamespaceBundle bundle);
    void onBundleOwned(NamespaceBundle namespaceBundle);
---

If I understand correctly, there are some cases users might need to handle
the above events
to do some topics unloading or other operations. Is it better to introduce
a listener interface
to the LoadManager? So that we don't need to add the above method in the
AssignmentStrategy
class. For example:

---
new MyTopicBundleAssignmentStrategy(PulsarService pulsar) {
      pulsar.getLoadManager().registerListener(...)
}
---

Not all TopicBundleAssignmentStrategy implementations need to handle the
events, right?
So that we can make the new interface better to follow the SRP (Single
Responsibility Principle).

Thanks,
Penghui

On Fri, Apr 21, 2023 at 1:50 PM linlin <lin...@apache.org> wrote:

> Hi Pulsar Community,
>
> This thread is to start the vote for PIP 255.
> After discussion, we believe that it is a better way to plug-in the
> partition assignment strategy,
> and let customers complete the specific implementation.
>
> So the title is change from "Assign topic partitions to bundle by round
> robin" to
> "Make the partition assignment strategy pluggable"
>
> Discussion:
> https://lists.apache.org/thread/pxx715jrqjc219pymskz8xcz57jdmcfy
> Issue: https://github.com/apache/pulsar/issues/19806
>
> Thanks,
> Lin Lin
>

Reply via email to