Hi Mickael, 1) That's right the interface and default implementation will in mirror-connect 2) Renaming the interface should be fine too especially if you planning to move other functionality related to the creation there, I can edit this
if you are okay with that please vote for the KIP here https://www.mail-archive.com/dev@kafka.apache.org/msg113575.html Thanks Omnia On Thu, Dec 10, 2020 at 12:58 PM Mickael Maison <mickael.mai...@gmail.com> wrote: > 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 > > > > > > > >