Hi Omnia, Thank you for the reply, it makes sense.
A couple more comments: 1) I'm assuming the new interface and default implementation will be in the mirror-client project? as the names of some of these topics are needed by RemoteClusterUtils on the client-side. 2) I'm about to open a KIP to specify where the offset-syncs topic is created by MM2. In restricted environments, we'd prefer MM2 to only have read access to the source cluster and have the offset-syncs on the target cluster. I think allowing to specify the cluster where to create that topic would be a natural extension of the interface you propose here. So I wonder if your interface could be named InternalTopicsPolicy? That's a bit more generic than InternalTopicNamingPolicy. That would also match the configuration setting, internal.topics.policy.class, you're proposing. Thanks On Thu, Dec 3, 2020 at 10:15 PM Omnia Ibrahim <o.g.h.ibra...@gmail.com> wrote: > > Hi Mickael, > Thanks for your feedback! > Regards your question about having more configurations, I considered adding > configuration per each topic however this meant adding more configurations > for MM2 which already have so many, also the more complicated and advanced > replication pattern you have between clusters the more configuration lines > will be added to your MM2 config which isn't going to be pretty if you > don't have the same topics names across your clusters. > > Also, it added more complexity to the implementation as MM2 need to > 1- identify if a topic is checkpoints so we could list the checkpoints > topics in MirrorMaker 2 utils as one cluster could have X numbers > checkpoints topics if it's connected to X clusters, this is done right now > by listing any topic with suffix `.checkpoints.internal`. This could be > done by add `checkpoints.topic.suffix` config but this would make an > assumption that checkpoints will always have a suffix also having a suffix > means that we may need a separator as well to concatenate this suffix with > a prefix to identify source cluster name. > 2- identify if a topic is internal, so it shouldn't be replicated or track > checkpoints for it, right now this is relaying on disallow topics with > `.internal` suffix to be not replicated and not tracked in checkpoints but > with making topics configurable we need a way to define what is an internal > topic. This could be done by making using a list of all internal topics > have been entered to the configuration. > > So having an interface seemed easier and also give more flexibility for > users to define their own topics name, define what is internal topic means, > how to find checkpoints topics and it will be one line config for each > herder, also it more consistence with MM2 code as MM2 config have > TopicFilter, ReplicationPolicy, GroupFilter, etc as interface and they can > be overridden by providing a custom implementation for them or have some > config that change their default implementations. > > Hope this answer your question. I also updated the KIP to add this to the > rejected solutions. > > > On Thu, Dec 3, 2020 at 3:19 PM Mickael Maison <mickael.mai...@gmail.com> > wrote: > > > Hi Omnia, > > > > Thanks for the KIP. Indeed being able to configure MM2's internal > > topic names would be a nice improvement. > > > > Looking at the KIP, I was surprised you propose an interface to allow > > users to specify names. Have you considered making names changeable > > via configurations? If so, we should definitely mention it in the > > rejected alternatives as it's the first method that comes to mind. > > > > I understand an interface gives a lot of flexibility but I'd expect > > topic names to be relatively simple and known in advance in most > > cases. > > > > I've not checked all use cases but something like below felt appropriate: > > clusters = primary,backup > > primary->backup.offsets-sync.topic=backup.mytopic-offsets-sync > > > > On Tue, Dec 1, 2020 at 3:36 PM Omnia Ibrahim <o.g.h.ibra...@gmail.com> > > wrote: > > > > > > Hey everyone, > > > Please take a look at KIP-690: > > > > > > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-690%3A+Add+additional+configuration+to+control+MirrorMaker+2+internal+topics+naming+convention > > > > > > Thanks for your feedback and support. > > > > > > Omnia > > > > >