Thanks Patrik for updating the KIP. 
One last feedback, should we update `TOPICS_EXCLUDE_DEFAULT` also to reflect 
the same pattern instead of `.*[\\-\\.]internal`?

Best, 
Omnia

> On 16 Aug 2024, at 13:31, Patrik Marton <pmar...@cloudera.com.INVALID> wrote:
> 
> Hi All,
> 
> I updated the KIP with the new proposal, and changed the name to better
> describe the latest proposal and the goal.
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-1074%3A+Allow+the+replication+of+user+internal+topics
> 
> Let me know your thoughts!
> 
> Thanks!
> Patrik
> 
> On Wed, Aug 14, 2024 at 10:50 AM Viktor Somogyi-Vass
> <viktor.somo...@cloudera.com.invalid> wrote:
> 
>> Hi Omina,
>> 
>> We have not considered this path yet that you proposed and I like it as
>> well and I would also be in favor of a solution that doesn't try to
>> introduce a new config. Since this KIP would only make it into 4.0 anyway
>> and your proposal seems like a smaller compatibility break that can
>> be documented in the upgrade notes and also circumvented by a custom
>> policy, I think we can do this.
>> 
>> I'd be also happy to receive some feedback from those who have been in this
>> conversation to form a consensus around this.
>> 
>> Best,
>> Viktor
>> 
>> On Mon, Aug 12, 2024 at 2:19 PM Omnia Ibrahim <o.g.h.ibra...@gmail.com>
>> wrote:
>> 
>>> Hi Patrick,
>>>> One thing that comes up for me is whether we should update the
>>> TopicFilter
>>>> too to have this more specific pattern, like "mm2-.*.internal". Ideally
>>> I'd
>>>> say yes, but what if a user already has existing .internal user topics
>>> and
>>>> relies on the ReplicationPolicy and TopicFilter not to replicate those,
>>> and
>>>> by changing both to a more specific pattern, we could technically
>> enable
>>>> their replication. I know this is an edge case, so am I being too
>> careful
>>>> here?
>>> 
>>> I would say for the ReplicationPolicy blocking all `.internal` and
>>> `-internal` as MM2 / Kafka internals is a bug. So anyone who has been
>>> relaying on this bug to block topics is relaying on a faulty code
>>> especially that none of the Kafka, connect or streams internals do create
>>> any topic with these suffixes except MM2 and all of them can be
>> identified
>>> more accurately without this generic suffix.
>>> 
>>> 
>>> The other potential cases we might break are
>>> 1. where `replication.policy.internal.topic.separator.enabled` is
>> enabled,
>>> but we might only need to adjust the code to account for this either in
>>> ReplicationPolicy itself
>>> ` default boolean isMM2InternalTopic(String topic) { return
>>> (topic.startsWith("mm2-") && topic.endsWith("internal")) ||
>>> isCheckpointsTopic(topic); }`
>>> Or in DefaultReplicationPolicy implementation of `isMM2InternalTopic`.
>> So
>>> we don’t break the backward compatibility for this case
>>> 2. Any use case has a customised ReplicationPolicy with an override of
>>> isMM2InternalTopic. This one might also break the backward compatibility
>>> 
>>> As 4.0 coming soon we can leverage this and introduce a breaking change
>> to
>>> MM2 with clarification of the KIP's impact on backward compatibility for
>>> the following cases,
>>> - For anyone has been relaying on this bug to block normal topics with
>>> `internal` suffix they will need to update topic filter config to block
>>> this suffix manually if they wish for.
>>> - For anyone overriding  isMM2InternalTopic in their custom
>>> ReplicationPolicy, they might need to update their code account for the
>> new
>>> change to block only mm2 internal topics.
>>> 
>>> If this path is acceptable with breaking the compatibility with the next
>>> major Kafka release we should consider fixing the issue and not
>> introducing
>>> another config to go around it especially that this seems more like
>> mistake
>>> from the beginning as MM2 original KIP intention was trying to target MM2
>>> and Kafka internal topics only and not all topics with this suffix.
>>> 
>>> What does everyone think?
>>> 
>>> Thanks
>>> Omnia
>>>> On 9 Aug 2024, at 10:40, Patrik Marton <pmar...@cloudera.com.INVALID>
>>> wrote:
>>>> 
>>>> Hi All,
>>>> 
>>>> Thanks again for your feedback!
>>>> 
>>>> Regarding the boolean solution, yes this would technically let the
>>> customer
>>>> accidentally replicate "__.*" topics, but only if they modify the
>>>> TopicFilter to allow their replication, as by default topics matching
>>> this
>>>> pattern are excluded. But in this case we can still hardcode "__.*"
>>> topics
>>>> as internal in the replication policy, if we feel like we need that
>> extra
>>>> layer of safety.
>>>> 
>>>> Thanks Omnia for your ideas!
>>>> About #2, I think this is something that we should consider besides the
>>>> boolean solution, as I like the idea that this way we can avoid adding
>>>> another configuration to mm2, and simply define a more specific
>> criteria
>>>> for topics to be considered internal by the replication policy.
>>>> One thing that comes up for me is whether we should update the
>>> TopicFilter
>>>> too to have this more specific pattern, like "mm2-.*.internal". Ideally
>>> I'd
>>>> say yes, but what if a user already has existing .internal user topics
>>> and
>>>> relies on the ReplicationPolicy and TopicFilter not to replicate those,
>>> and
>>>> by changing both to a more specific pattern, we could technically
>> enable
>>>> their replication. I know this is an edge case, so am I being too
>> careful
>>>> here?
>>>> 
>>>> Let me know your thoughts, and I will update the KIP too.
>>>> 
>>>> Best,
>>>> Patrik
>>>> 
>>>> On Thu, Aug 8, 2024 at 2:59 PM Omnia Ibrahim <o.g.h.ibra...@gmail.com>
>>>> wrote:
>>>> 
>>>>> Hi
>>>>> Thinking of it more, I feel leaving customers to mirroring Kafka’s
>>>>> internal topics `__.*` either by mistake or intently will be eating up
>>>>> resources from both mm2 and the clusters for no actual value as the
>>> data is
>>>>> not that useful outside the context of the original cluster.
>>>>> These topics usually are unbalanced and clients are the one the
>> control
>>>>> their sizes which will lead to uneven distribution of MM2 resource
>>> usages.
>>>>> And if MM2 missed the tombstone records from the source cluster which
>> is
>>>>> used to cleanup metadata then mirrored records of these topics
>> wouldn’t
>>> get
>>>>> cleaned appropriately.
>>>>> 
>>>>> Other options to solve this
>>>>> 
>>>>> 1. introduce a way to specify MM2’s internal topics suffix
>> (checkpoints,
>>>>> offset sync, offsets, status, and config topics) and by default this
>> is
>>>>> `.internal`, in case users are allowed to have `.internal` in the
>> topic
>>>>> name then MM2 can be setup with different suffix.
>>>>> `-internal` was set as a way to identify connect internal topics but
>> as
>>>>> far as I can see there is no topic set by MM2 itself with `-internal`
>> so
>>>>> maybe we can drop `-internal`.
>>>>> Then  for  __.* these aren’t allowed to be mirrored.
>>>>> 
>>>>> 2. other option is updating `ReplicationPolicy::isMM2InternalTopic` to
>>>>> check if topic is starting with `mm2` and end with `.internal` as this
>>> is
>>>>> the pattern for default topics so far.
>>>>>> default boolean isMM2InternalTopic(String topic) {
>>>>>>   // MM2 has a pattern for most topics that shouldn't be mirriord
>>>>> which is mm2-*.*.internal:
>>>>>>   // "mm2-offset-syncs." + clusterAlias + ".internal"
>>>>>>   // "mm2-configs." + sourceAndTarget.source() + ".internal"
>>>>>>   // "mm2-status." + sourceAndTarget.source() + ".internal"
>>>>>>   // "mm2-offsets." + sourceAndTarget.source() + ".internal"
>>>>>>   // The only exception is checkpoints which is clusterAlias +
>>>>> ".checkpoints.internal"
>>>>>>   return (topic.startsWith("mm2-") && topic.endsWith(".internal"))
>> ||
>>>>> isCheckpointsTopic(topic);
>>>>>> }
>>>>> 
>>>>> As far as I can see this will cover offset-sync topic, all default
>>> connect
>>>>> topic names used by mirror and checkpoints which what the method
>>> originally
>>>>> is trying to target. This way we will have some sense of “fake
>>> namespace”
>>>>> without introducing one.
>>>>> 
>>>>> Then `ReplicationPolicy::isInternalTopic` can be
>>>>>> default boolean isInternalTopic(String topic) {
>>>>>>   boolean isKafkaInternalTopic = topic.startsWith("__") ||
>>>>> topic.startsWith(".");
>>>>>>   return isMM2InternalTopic(topic) || isKafkaInternalTopic;
>>>>>> }
>>>>> 
>>>>> `-internal` will be dropped as I can’t see any topic name with this
>>> suffix
>>>>> setup by MM2.
>>>>> 
>>>>> Best,
>>>>> Omnia
>>>>> 
>>>>>> On 7 Aug 2024, at 17:26, Omnia Ibrahim <o.g.h.ibra...@gmail.com>
>>> wrote:
>>>>>> 
>>>>>> Hi All,
>>>>>> 
>>>>>> I have a couple of notes to add
>>>>>> 
>>>>>> OI-1.Regarding the proposed default regex in the KIP,
>>>>> "__.*|\\..*|.*-internal|.*\\.internal", when users wish to change
>> this,
>>>>> wouldn’t they mostly need to keep the __.* part? Especially since __
>> is
>>>>> primarily reserved for broker internal metadata topics.
>>>>>> 
>>>>>> OI-2.Whether we choose a boolean or regex, I think we need to
>> identify
>>>>> if this will include replicating the internal metadata topics. The
>>> metadata
>>>>> within these topics are not that useful outside of their original
>>> cluster,
>>>>> so replicating them doesn’t add much value for anyone.
>>>>>> The other problem with mistakenly replicating these topics is that
>> they
>>>>> are set up with a compacted policy, which means they don’t get
>> truncated
>>>>> naturally by retention. These metadata topics are cleaned in a special
>>> way
>>>>> to stay within the metadata retention milliseconds or expiration
>>> configs.
>>>>> As a result of this special situation, replicating these by mistake
>>> might
>>>>> put the destination cluster’s capacity at risk.
>>>>>> Maybe we should be clear that any topic in Topic::INTERNAL_TOPICS is
>>> not
>>>>> going to be replicated? WDYT?
>>>>>> 
>>>>>> Thanks
>>>>>> Omnia
>>>>>> 
>>>>>>> On 7 Aug 2024, at 15:46, Viktor Somogyi-Vass <
>>>>> viktor.somo...@cloudera.com.INVALID> wrote:
>>>>>>> 
>>>>>>> Hi all,
>>>>>>> 
>>>>>>> 1. Yea, thinking of it more, I'm also concerned about the upgrade
>> path
>>>>> and
>>>>>>> I think that it may not be worth adding a ton of code to work around
>>>>> that
>>>>>>> one time upgrade. It likely needs extra configs as well or
>>>>> documentation to
>>>>>>> instruct users, so it may not be worth the price. So let's add this
>> to
>>>>> the
>>>>>>> rejected alternatives.
>>>>>>> 
>>>>>>> 2. As Chris mentioned, I also feel that users may want to improve it
>>>>> with
>>>>>>> regexes and after a certain number of topics it may not be easily
>>>>>>> manageable. And indeed, it feels a little bit like duplicating the
>>>>>>> functionality of the topic filter. Overall I like the boolean config
>>>>> best
>>>>>>> as that prevents most of the unwanted replication cycles by default
>>> with
>>>>>>> the TopicFilter.
>>>>>>> 
>>>>>>> Best,
>>>>>>> Viktor
>>>>>>> 
>>>>>>> On Wed, Aug 7, 2024 at 10:59 AM Patrik Marton
>>>>> <pmar...@cloudera.com.invalid>
>>>>>>> wrote:
>>>>>>> 
>>>>>>>> Hi All,
>>>>>>>> 
>>>>>>>> Thanks again for your feedback!
>>>>>>>> 
>>>>>>>> My thoughts on Viktor's ideas:
>>>>>>>> 
>>>>>>>> 1. This would definitely be a clean solution in the end, but I also
>>>>> feel
>>>>>>>> that the complexity of this solution might outweigh the benefits.
>> If
>>>>> you
>>>>>>>> guys think, we can give it a thought and figure out what exactly
>>> needs
>>>>> to
>>>>>>>> be changed and how the upgrade path would look like, but my opinion
>>> is
>>>>> that
>>>>>>>> since it is a rare use-case, a simple solution might be better.
>>>>>>>> 
>>>>>>>> 2. I initially wanted to propose something like this, but my
>> concern
>>>>> was
>>>>>>>> that by adding another way a topic can be whitelisted, we would
>> also
>>>>>>>> increase the complexity and it would require more attention from
>>>>> users. But
>>>>>>>> I also think that this would probably be the safest solution of
>> all,
>>>>> and
>>>>>>>> less risky than modifying regexes or using that simple boolean.
>>>>>>>> Since the TopicFilter is not really the problem as its exclude list
>>>>> can be
>>>>>>>> modified, and it basically acts as another layer of safety, we
>> could
>>>>>>>> potentially add this new config (a list of topics) to the
>>>>>>>> DefaultReplicationPolicy, and any topic listed in the new config
>>> would
>>>>> not
>>>>>>>> be considered internal by the replication policy. This way we would
>>> not
>>>>>>>> duplicate the work of the Topic Filter, simply provide a way to
>> tell
>>>>> the
>>>>>>>> DefaultReplicationPolicy that topics in this list seem internal,
>> but
>>>>> they
>>>>>>>> are not.
>>>>>>>> 
>>>>>>>> What do you think?
>>>>>>>> 
>>>>>>>> Best,
>>>>>>>> Patrik
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On Tue, Aug 6, 2024 at 7:17 PM Chris Egerton
>> <chr...@aiven.io.invalid
>>>> 
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>>> Hi Viktor,
>>>>>>>>> 
>>>>>>>>> Nice to hear from you! My thoughts:
>>>>>>>>> 
>>>>>>>>> 1. I initially liked this idea, but it doesn't seem like the costs
>>> to
>>>>> all
>>>>>>>>> existing users outweigh the benefits that would be reaped by just
>> a
>>>>> few.
>>>>>>>>> This is possibly because I'm assuming the upgrade path would be
>>> pretty
>>>>>>>>> gnarly, though; if we can make it really, really smooth,
>> especially
>>>>> for
>>>>>>>>> existing users who don't need to be able to replicate topics
>> ending
>>> in
>>>>>>>>> "-internal", then I think it'd be a viable option.
>>>>>>>>> 
>>>>>>>>> 2. This is definitely safer than a simple boolean property, but
>>>>> doesn't
>>>>>>>> it
>>>>>>>>> feel like we're duplicating the work of the topic filter at this
>>>>> point,
>>>>>>>>> except with something a little more cumbersome for users? People
>>>>> already
>>>>>>>>> have a way of include- and exclude-listing topics by regex with
>> that
>>>>>>>>> mechanism, and I'm worried we're not placing enough trust in the
>>>>>>>>> flexibility and safety it already provides us and are adding
>> layers
>>> of
>>>>>>>>> safety that are ultimately redundant. I might also be pessimistic
>>> here
>>>>>>>> but
>>>>>>>>> I can't shake the feeling that we'd eventually get a KIP where
>>> someone
>>>>>>>>> states that it's too hard to add topics one-by-one and would like
>> to
>>>>>>>>> include them by regex, prefix match, or some other broader
>>> mechanism.
>>>>>>>>> 
>>>>>>>>> Do you find this convincing? I'm also curious what Greg and Patrik
>>>>> think.
>>>>>>>>> 
>>>>>>>>> Cheers,
>>>>>>>>> 
>>>>>>>>> Chris
>>>>>>>>> 
>>>>>>>>> On Tue, Aug 6, 2024 at 5:08 AM Viktor Somogyi-Vass
>>>>>>>>> <viktor.somo...@cloudera.com.invalid> wrote:
>>>>>>>>> 
>>>>>>>>>> Hi all,
>>>>>>>>>> 
>>>>>>>>>> I think there are a couple of other alternatives to discuss.
>>>>>>>>>> 
>>>>>>>>>> 1. We may just simply change the internal topic naming to
>> something
>>>>>>>> like
>>>>>>>>>> "mm2internal" and provide upgrade functionality as well. In this
>>>>>>>> scenario
>>>>>>>>>> we wouldn't need to tinker with the prefixes or the naming
>>> patterns,
>>>>> we
>>>>>>>>>> just simply free up the "internal" keyword and after upgrade
>> allow
>>>>> all
>>>>>>>>>> topics with internal to be mirrored. The upgrade however could be
>>>>> very
>>>>>>>>>> complicated as we'd need to provide a way for users to move away
>>> from
>>>>>>>> the
>>>>>>>>>> old topics (what happens in case of EOS, how do we make sure to
>>>>>>>>> discontinue
>>>>>>>>>> the old topics, what happens if the upgrade gets interrupted
>> etc.).
>>>>>>>> But I
>>>>>>>>>> think this is worth considering and for the upgrade, we may take
>> a
>>>>> few
>>>>>>>>>> ideas from the zk->kraft migration to make it easier.
>>>>>>>>>> 
>>>>>>>>>> 2. A new config to force the replication of certain topics. In
>>> this,
>>>>>>>>> users
>>>>>>>>>> would have to specify topics 1 by 1 and this would bypass the
>>> filters
>>>>>>>> and
>>>>>>>>>> the replication policy. Since forcing is usually not the normal
>> way
>>>>> of
>>>>>>>>>> doing things in general, users may be more willing to accept
>>>>> unintended
>>>>>>>>>> side effects.
>>>>>>>>>> 
>>>>>>>>>> What do you all think?
>>>>>>>>>> (If they aren't better than the original ideas, I'm absolutely
>> good
>>>>>>>> with
>>>>>>>>>> putting these to the rejected alternatives but wanted to write it
>>> all
>>>>>>>>> out.)
>>>>>>>>>> 
>>>>>>>>>> Best,
>>>>>>>>>> Viktor
>>>>>>>>>> 
>>>>>>>>>> On Mon, Aug 5, 2024 at 8:18 PM Chris Egerton
>>> <chr...@aiven.io.invalid
>>>>>> 
>>>>>>>>>> wrote:
>>>>>>>>>> 
>>>>>>>>>>> Hi Patrik,
>>>>>>>>>>> 
>>>>>>>>>>> I think I owe you an apology. After mulling this over for a few
>>> more
>>>>>>>>>> hours
>>>>>>>>>>> and going over the code base some more, it seems like your
>> initial
>>>>>>>>>> approach
>>>>>>>>>>> was actually better in some ways.
>>>>>>>>>>> 
>>>>>>>>>>> With the regex-based approach, it becomes possible for users to
>>>>>>>>> configure
>>>>>>>>>>> the DefaultReplicationPolicy class in a way that for some topic
>> T,
>>>>>>>>>>> isInternalTopic(T) returns false, but isCheckpointsTopic(T),
>>>>>>>>>>> isHeartbeatsTopic(T), or even isMM2InternalTopic(T) return true.
>>> It
>>>>>>>>> seems
>>>>>>>>>>> like this kind of inconsistency might cause confusion to users
>> and
>>>>>>>>>> possibly
>>>>>>>>>>> even break things down the road depending on how we leverage
>> these
>>>>>>>>>> methods
>>>>>>>>>>> in the future.
>>>>>>>>>>> 
>>>>>>>>>>> With the initial approach, using a simple boolean to enable the
>>>>>>>>>> replication
>>>>>>>>>>> of what appear to be internal topics, there is some risk of
>> cycles
>>>>>>>> and
>>>>>>>>>>> accidental replication of genuinely internal topics, but less
>>> than I
>>>>>>>>>>> believed at first. In order for an internal topic to be
>>> replicated,
>>>>>>>> not
>>>>>>>>>>> only would that boolean property have to be explicitly modified
>> by
>>>>>>>>> users,
>>>>>>>>>>> but they would also have to be using a topic filter that allows
>>>>> those
>>>>>>>>>>> topics to pass through as well.
>>>>>>>>>>> 
>>>>>>>>>>> I think a simple boolean is better here, as it's easier for
>> users
>>> to
>>>>>>>>>>> configure, and less prone to logical inconsistencies. My only
>>>>>>>>> suggestions
>>>>>>>>>>> are:
>>>>>>>>>>> - Apply the property to the MirrorSourceConnector class instead
>> of
>>>>>>>> the
>>>>>>>>>>> DefaultReplicationPolicy class, since we're not actually
>> changing
>>>>> the
>>>>>>>>>>> definition of what is and isn't an internal topic; instead,
>> we're
>>>>>>>>> simply
>>>>>>>>>>> allowing topics to be replicated even if they appear to be
>>> internal
>>>>>>>>>> topics
>>>>>>>>>>> - Rename it to something less verbose like
>>>>>>>> "replicate.internal.topics"
>>>>>>>>>>> - Add a warning to the docs for the property explicitly pointing
>>>>>>>> people
>>>>>>>>>> to
>>>>>>>>>>> the topic filter class, stating that they should still make sure
>>>>> that
>>>>>>>>>>> genuinely internal topics (instead of topics that
>>>>>>>>>>> ReplicationPolicy::isInternalTopic returns true for but which
>> are
>>>>> not
>>>>>>>>>>> actually internal) are excluded by the filter
>>>>>>>>>>> 
>>>>>>>>>>> Patrik, Greg, how does that sound?
>>>>>>>>>>> 
>>>>>>>>>>> Best,
>>>>>>>>>>> 
>>>>>>>>>>> Chris
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> On Mon, Aug 5, 2024 at 4:34 AM Patrik Marton
>>>>>>>>>> <pmar...@cloudera.com.invalid
>>>>>>>>>>>> 
>>>>>>>>>>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>>> Hi Greg and Chris,
>>>>>>>>>>>> 
>>>>>>>>>>>> Thank you for your feedbacks!
>>>>>>>>>>>> 
>>>>>>>>>>>> I added the currently existing workarounds to the “Rejected
>>>>>>>>>> Alternatives”
>>>>>>>>>>>> section, and explained why I still think we need a separate
>>>>>>>>> solution. I
>>>>>>>>>>>> also added the previous proposal to the rejected alternatives,
>>> as I
>>>>>>>>>> agree
>>>>>>>>>>>> with your concerns.
>>>>>>>>>>>> I tried to come up with a bit different regex based solution,
>> and
>>>>>>>>>>> modified
>>>>>>>>>>>> the KIP based on that. I think it is a more straightforward way
>>> to
>>>>>>>>> get
>>>>>>>>>>> the
>>>>>>>>>>>> desired behavior.
>>>>>>>>>>>> 
>>>>>>>>>>>> Let me know your thoughts.
>>>>>>>>>>>> 
>>>>>>>>>>>> Thanks,
>>>>>>>>>>>> Patrik
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> On 2024/07/30 18:57:18 Chris Egerton wrote:
>>>>>>>>>>>>> Hi Patrick,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> I share Greg's concerns with the feature as it's currently
>>>>>>>>> proposed.
>>>>>>>>>> I
>>>>>>>>>>>>> don't think I could vote for something unless it made
>>> replication
>>>>>>>>> of
>>>>>>>>>>>>> genuinely internal topics and replication cycles impossible,
>> or
>>>>>>>> at
>>>>>>>>>>> least
>>>>>>>>>>>>> significantly less likely.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Best,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Chris
>>>>>>>>>>>>> 
>>>>>>>>>>>>> On Tue, Jul 30, 2024, 14:51 Greg Harris
>> <gr...@aiven.io.invalid
>>>> 
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Hi Patrik,
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Thanks for the KIP!
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Your motivation for this KIP is reasonable, because it is
>>>>>>>>>> definitely
>>>>>>>>>>>>>> possible for the ".internal" suffix to collide with real
>>>>>>>> topics.
>>>>>>>>> It
>>>>>>>>>>>> would
>>>>>>>>>>>>>> have been nice if the original design included some
>>>>>>>> mm2-specific
>>>>>>>>>>>> namespace
>>>>>>>>>>>>>> like "mm2.internal" to lessen the likelihood of a collision.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> However, this is a problem that has numerous existing
>>>>>>>>> workarounds:
>>>>>>>>>>>>>> * Use a custom ReplicationPolicy and override the methods
>> (for
>>>>>>>>>>> existing
>>>>>>>>>>>>>> workloads/mirror makers)
>>>>>>>>>>>>>> * Use non-conflicting user topic names (for new user topics)
>>>>>>>>>>>>>> * Use the replication.policy.separator to use a
>> non-conflicting
>>>>>>>>>>>> separator
>>>>>>>>>>>>>> character (for new mirror maker setups)
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> And the feature as-described has significant risks attached:
>>>>>>>>>>>>>> * May allow replication cycles and runaway replication
>>>>>>>>>>>>>> * Mirrors internal topics that are unusable on the
>> destination
>>>>>>>>>>> cluster
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> While these risks can be accounted for if a user is attentive
>>>>>>>>> (e.g.
>>>>>>>>>>>> when
>>>>>>>>>>>>>> they're writing their own ReplicationPolicy) it is not a
>>>>>>>>> risk-free
>>>>>>>>>>>>>> configuration that composes well with other out-of-the-box
>>>>>>>>>>>> configurations.
>>>>>>>>>>>>>> For example, someone may expect to take their existing
>>>>>>>>>> configuration,
>>>>>>>>>>>> turn
>>>>>>>>>>>>>> on this new option, and expect reasonable behavior, which
>> isn't
>>>>>>>>>>> always
>>>>>>>>>>>>>> guaranteed.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> If you're still interested in this feature, please reference
>>>>>>>> the
>>>>>>>>>>>> existing
>>>>>>>>>>>>>> workarounds and include them as rejected alternatives so we
>> can
>>>>>>>>>> know
>>>>>>>>>>>> where
>>>>>>>>>>>>>> the existing solutions fall short.
>>>>>>>>>>>>>> We'd also have to figure out if and how the risks I mentioned
>>>>>>>>> could
>>>>>>>>>>> be
>>>>>>>>>>>>>> mitigated.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>> Greg
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> On Tue, Jul 30, 2024 at 5:49 AM Patrik Marton
>>>>>>>>>>>> <pmar...@cloudera.com.invalid
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Hi Team,
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> I would like to start a discussion on KIP-1074: Make the
>>>>>>>>>>> replication
>>>>>>>>>>>> of
>>>>>>>>>>>>>>> internal topics configurable
>>>>>>>>>>>>>>> <
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>> 
>>> 
>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-1074%3A+Make+the+replication+of+internal+topics+configurable
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> The goal of this KIP is to make it easier to replicate
>> topics
>>>>>>>>>> that
>>>>>>>>>>>> seem
>>>>>>>>>>>>>>> internal (for example ending in .internal suffix), but are
>>>>>>>> just
>>>>>>>>>>>> normal
>>>>>>>>>>>>>>> business topics created by the user.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> I appreciate any feedback and recommendations!
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Thanks!
>>>>>>>>>>>>>>> Patrik
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>> 
>>>>> 
>>> 
>>> 
>> 

Reply via email to