Hi Mickael, did you have some time to check my answer?

On Thu, Jan 21, 2021 at 10:10 PM Omnia Ibrahim <o.g.h.ibra...@gmail.com>
wrote:

> Hi Mickael,
> Thanks for taking another look into the KIP, regards your questions
>
> - I believe we need both "isMM2InternalTopic" and
> `ReplicationPolicy.isInternalTopic`  as `ReplicationPolicy.isInternalTopic`
> does check if a topic is Kafka internal topic, while `isMM2InternalTopic`
> is just focusing if a topic is MM2 internal topic or not(which is
> heartbeat/checkpoint/offset-sync). The fact that the default for MM2
> internal topics matches "ReplicationPolicy.isInternalTopic" will not be an
> accurate assumption anymore once we implement this KIP.
>
> - "isCheckpointTopic" will detect all checkpoint topics for all MM2
> instances this is needed for "MirrorClient.checkpointTopics" which
> originally check if the topic name ends with CHECKPOINTS_TOPIC_SUFFIX. So
> this method just to keep the same functionality that originally exists in
> MM2
>
> - "checkpointTopic" is used in two places 1. At topic creation in
> "MirrorCheckpointConnector.createInternalTopics" which use
> "sourceClusterAlias() + CHECKPOINTS_TOPIC_SUFFIX" and 2. At
> "MirrorClient.remoteConsumerOffsets" which is called by
> "RemoteClusterUtils.translateOffsets"  the cluster alias here referred to
> as "remoteCluster" where the topic name is "remoteClusterAlias +
> CHECKPOINTS_TOPIC_SUFFIX"  (which is an argument in RemoteClusterUtils,
> not a config) This why I called the variable cluster instead of source and
> instead of using the config to figure out the cluster aliases from config
> as we use checkpoints to keep `RemoteClusterUtils` compatible for existing
> users. I see a benefit of just read the config a find out the cluster
> aliases but on the other side, I'm not sure why "RemoteClusterUtils"
> doesn't get the name of the cluster from the properties instead of an
> argument, so I decided to keep it just for compatibility.
>
> Hope these answer some of your concerns.
> Best
> Omnia
>
> On Thu, Jan 21, 2021 at 3:37 PM Mickael Maison <mickael.mai...@gmail.com>
> wrote:
>
>> Hi Omnia,
>>
>> Thanks for the updates. Sorry for the delay but I have a few more
>> small questions about the API:
>> - Do we really need "isMM2InternalTopic()"? There's already
>> "ReplicationPolicy.isInternalTopic()". If so, we need to explain the
>> difference between these 2 methods.
>>
>> - Is "isCheckpointTopic()" expected to detect all checkpoint topics
>> (for all MM2 instances) or only the ones for this connector instance.
>> If it's the later, I wonder if we could do without the method. As this
>> interface is only called by MM2, we could first call
>> "checkpointTopic()" and check if that's equal to the topic we're
>> checking. If it's the former, we don't really know topic names other
>> MM2 instances may be using!
>>
>> - The 3 methods returning topic names have different APIs:
>> "heartbeatsTopic()" takes no arguments, "offsetSyncTopic()" takes the
>> target cluster alias and "checkpointTopic()" takes "clusterAlias"
>> (which one is it? source or target?). As the interface extends
>> Configurable, maybe we could get rid of all the arguments and use the
>> config to find the cluster aliases. WDYT?
>>
>> These are minor concerns, just making sure I fully understand how the
>> API is expected to be used. Once these are cleared, I'll be happy to
>> vote for this KIP.
>>
>> Thanks
>>
>> On Fri, Jan 8, 2021 at 12:06 PM Omnia Ibrahim <o.g.h.ibra...@gmail.com>
>> wrote:
>> >
>> > Hi Mickael,
>> > Did you get time to review the changes to the KIP? If you okay with it
>> could you vote for the KIP here ttps://
>> www.mail-archive.com/dev@kafka.apache.org/msg113575.html?
>> > Thanks
>> >
>> > On Thu, Dec 10, 2020 at 2:19 PM Omnia Ibrahim <o.g.h.ibra...@gmail.com>
>> wrote:
>> >>
>> >> 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
>> >>> > > >
>> >>> > >
>>
>

Reply via email to