Hi everyone, If there's no major concern anymore, I'll start the voting process.
On Fri, May 20, 2022 at 5:58 PM Omnia Ibrahim <o.g.h.ibra...@gmail.com> wrote: > Hi Colin, > > >Thanks for the clarification. I agree it's reasonable for people to want > to use their own implementations of Admin. And we could have a config for > this, so that it becomes pluggable (possibly in other places than > MirrorMaker, although we don't have to do that in this KIP). > > > Allowing people to plug custom implementation of Admin in other places > sounds like a neat idea indeed. It can be nice addition for example ` > org.apache.kafka.connect.util.SharedTopicAdmin` in Connect to use custom > Admin as well. But agree no need to have it in this KIP. > >We could even try to make this easier on developers. For example, we > could provide a public ForwardingAdmin class that forwards all requests to > the regular KafkaAdminClient. Then, people could make their custom class > inherit from ForwardingAdmin and override >just the specific methods that > they wanted to override. So they don't have to implement all the methods, > but just the ones that are different for them. > > > >I just wanted to make sure we weren't creating a second Admin client > interface -- I think that would really be hard for us to support long-term. > > Forwarding would defiantly make it easier. I have updated the KIP to > introduce ForwardingAdmin as well. > > regards, > Omnia > > On Mon, May 16, 2022 at 9:31 PM Colin McCabe <cmcc...@apache.org> wrote: > >> On Mon, May 16, 2022, at 10:24, Omnia Ibrahim wrote: >> > Hi Colin, >> > >> > Thanks for your reply. >> > >> > This KIP doesn’t aim to solve any security concerns, but rather a >> conflict >> > of responsibilities within any Kafka ecosystem that includes MM2 and any >> > resource management solution. I’m not sure that was clear, so I’m >> concerned >> > about the motivation for your suggestion to close this KIP. >> > >> >> Hi Omnia, >> >> Thanks for the clarification. I agree it's reasonable for people to want >> to use their own implementations of Admin. And we could have a config for >> this, so that it becomes pluggable (possibly in other places than >> MirrorMaker, although we don't have to do that in this KIP). >> >> We could even try to make this easier on developers. For example, we >> could provide a public ForwardingAdmin class that forwards all requests to >> the regular KafkaAdminClient. Then, people could make their custom class >> inherit from ForwardingAdmin and override just the specific methods that >> they wanted to override. So they don't have to implement all the methods, >> but just the ones that are different for them. >> >> I just wanted to make sure we weren't creating a second Admin client >> interface -- I think that would really be hard for us to support long-term. >> >> > >> > It is generally accepted that resource management should be centralized, >> > especially on the scale of mirroring N number of clusters. The point of >> > this KIP is that any sort of topic management / federate solution / >> > up-front capacity planning system will be at odds with MM2 if MM2 keeps >> > using the Admin client directly. >> > >> >> Thanks for the explanation. That makes sense. >> >> > >> > I understand your concern that the interface proposed in the first >> approach >> > may become too similar to the existing Admin interface. I’ll update the >> > proposal by moving Ryanne’s previous suggestion to re-use the Admin >> > interface and add configuration to accept a custom implementation. >> > >> >> +1. >> >> > >> > If you still feel this KIP should be closed but can understand its >> > motivation I can close this one and create a new one. >> > >> >> I think it's reasonable to keep this one open and make the changes you >> talked about above. >> >> regards, >> Colin >> >> > >> > Thanks, >> > Omnia >> > >> > On Fri, May 13, 2022 at 6:10 PM Colin McCabe <cmcc...@apache.org> >> wrote: >> > >> >> On Wed, May 11, 2022, at 15:07, Omnia Ibrahim wrote: >> >> > Hi Colin, >> >> > I don't mind the idea of MM2 users implementing the AdminClient >> >> interface. >> >> > However, there're two disadvantages to this. >> >> > >> >> > 1. Having around 70 methods definitions to have "NotImplemented" >> is >> >> one >> >> > downside, and keep up with these if the AdminClient interface >> changes. >> >> > 2. It makes it hard to list what admin functionality MM2 uses as >> MM2 >> >> > interactions with AdminClient in the codebase are in many places. >> >> > >> >> > I guess it's OK for MM2 users who want to build their admin client to >> >> carry >> >> > this burden, as I explained in my previous response to the discussion >> >> > thread. And we can do some cleanup to the codebase to have all Admin >> >> > interactions in MM2 in a utils class or something like that to make >> it >> >> > easier to navigate what MM2 needs from the Admin interface. >> >> > >> >> >> >> Hi Omnia, >> >> >> >> Anyone who wants to extend Kafka with proprietary tooling does need to >> >> keep up with the Kafka API. We have done everything we can to make this >> >> easier. We rigorously define what the API is through the KIP process, >> and >> >> make it possible to extend by making it an interface rather than >> concrete >> >> class. We also have a pretty lengthy deprecation process for these >> APIs. >> >> >> >> > >> >> > Maybe I'm misunderstanding the use-case you're describing here. But >> it >> >> >> seems to me that if you create a proxy that has the ability to do >> any >> >> admin >> >> >> operation, and give MM2 access to that proxy, the security model is >> the >> >> >> same as just giving MM2 admin access. (Or it may be worse if the >> >> sysadmin >> >> >> doesn't know what this proxy is doing, and doesn't lock it down...) >> >> >> >> >> > >> >> > MM2 runs with the assumption that it has >> >> > >> >> > - "CREATE" ACLs for topics on the source clusters to create >> >> `heartbeat` >> >> > topics. >> >> > - "CREATE" and "ALTER" ACLs to create topics, add partitions, >> update >> >> > topics' config and topics' ACLs (in future, will also include >> group >> >> ACLS as >> >> > Mikael mentioned before in the thread) on the destination >> clusters. >> >> > >> >> > Most organisations have some resource management or federated >> solutions >> >> > (some would even have a budget system as part of these systems) to >> manage >> >> > Kafka resources, and these systems are usually the only application >> >> allowed >> >> > to initializing a client with "CREATE" and "ALTER" ACLs. They don't >> grant >> >> > these ACLs to any other teams/groups/applications to create such a >> client >> >> > outside these systems, so assuming MM2 can bypass these systems and >> use >> >> the >> >> > AdminClient directly to create/update resources isn't valid. This is >> the >> >> > primary concern here. >> >> > >> >> > The KIP is trying to give MM2 more flexibility to allow >> organisations to >> >> > integrate MM2 with their resource management system as they see fit >> >> without >> >> > forcing them to disable most MM2 features. >> >> > >> >> > Hope this make sense and clear it up. >> >> > >> >> >> >> The point I was trying to make is that there is no additional security >> >> here. If you have some agent that has all the permissions, and MM2 can >> talk >> >> to that agent and tell it what to do, then that is equivalent to just >> >> giving MM2 all the permissions. So while there may be other reasons to >> use >> >> this kind of agent-based architecture, added security isn't one. >> >> >> >> In any case, I think we should close this KIP since we already have an >> >> Admin API. There isn't a need to create a public API for admin >> operations. >> >> >> >> best, >> >> Colin >> >> >> >> >> >> > >> >> > On Wed, May 11, 2022 at 9:09 PM Colin McCabe <cmcc...@apache.org> >> wrote: >> >> > >> >> >> Hi Omnia Ibrahim, >> >> >> >> >> >> I'm sorry, but I am -1 on adding competing Admin interfaces. This >> would >> >> >> create confusion and a heavier maintenance burden for the project. >> >> >> >> >> >> Since the org.apache.kafka.clients.admin.Admin interface is a Java >> >> >> interface, any third-party software that wants to insert its own >> >> >> implementation of the interface can do so already. >> >> >> >> >> >> A KIP to make the Admin class used pluggable for MM2 would be >> >> reasonable. >> >> >> Adding a competing admin API is not. >> >> >> >> >> >> It's true that there are many Admin methods, but you do not need to >> >> >> implement all of them -- just the ones that MirrorMaker uses. The >> other >> >> >> ones can throw a NotImplementedException or similar. >> >> >> >> >> >> > The current approach also assumes that the user running MM2 has >> the >> >> >> Admin right to >> >> >> > create/update topics, which is only valid if the user who runs MM2 >> >> also >> >> >> manages both >> >> >> > source and destination clusters. >> >> >> >> >> >> Maybe I'm misunderstanding the use-case you're describing here. But >> it >> >> >> seems to me that if you create a proxy that has the ability to do >> any >> >> admin >> >> >> operation, and give MM2 access to that proxy, the security model is >> the >> >> >> same as just giving MM2 admin access. (Or it may be worse if the >> >> sysadmin >> >> >> doesn't know what this proxy is doing, and doesn't lock it down...) >> >> >> >> >> >> best, >> >> >> Colin >> >> >> >> >> >> >> >> >> On Mon, May 9, 2022, at 13:21, Omnia Ibrahim wrote: >> >> >> > Hi, I gave the KIP another look after talking to some people at >> the >> >> Kafka >> >> >> > Summit in London. And I would like to clear up the motivation of >> this >> >> >> KIP. >> >> >> > >> >> >> > >> >> >> > At the moment, MM2 has some opinionated decisions that are >> creating >> >> >> issues >> >> >> > for teams that use IaC, federated solutions or have a >> capacity/budget >> >> >> > planning system for Kafka destination clusters. To explain it >> better, >> >> >> let's >> >> >> > assume we have MM2 with the following configurations to highlight >> >> these >> >> >> > problems. >> >> >> > >> >> >> > ``` >> >> >> > >> >> >> > topics = .* >> >> >> > >> >> >> > refresh.topics.enabled = true >> >> >> > >> >> >> > sync.topic.configs.enabled = true >> >> >> > >> >> >> > sync.topic.acls.enabled = true >> >> >> > >> >> >> > // Maybe in futrue we can have sync.group.acls.enabled = true >> >> >> > >> >> >> > ``` >> >> >> > >> >> >> > >> >> >> > These configurations allow us to run MM2 with the value of its >> full >> >> >> > features. However, there are two main concerns when we run on a >> scale >> >> >> with >> >> >> > these configs: >> >> >> > >> >> >> > 1. *Capacity/Budgeting Planning:* >> >> >> > >> >> >> > Functionality or features that impact capacity planning using MM2 >> are: >> >> >> > >> >> >> > 1. MM2 automatically creates topics (breaking the rule of >> >> >> > `auto.create.topics.enable=false`) and creates topic >> partitions on >> >> >> > destination clusters if the number of partitions increases on >> the >> >> >> source. >> >> >> > In the previous example, this functionality will apply to any >> topic >> >> >> that >> >> >> > matches the regex of the `topics` config. >> >> >> > 2. Sync topic configs include configurations that impact >> capacity >> >> >> like ` >> >> >> > retention.ms` and `retention.bytes`. >> >> >> > >> >> >> > These 2 points lead to adding new untracked capacity to >> destination >> >> >> > clusters without a way to count for them up-front or safeguard the >> >> >> cluster. >> >> >> > The team that runs the cluster will only see the capacity issue >> when >> >> >> their >> >> >> > disk usage hits the threshold for their alerts. The desk capacity >> >> issue >> >> >> can >> >> >> > be avoided if MM2 is flexible enough to >> >> >> > >> >> >> > - have a way for teams that run their ecosystem to have MM2 >> behave >> >> >> > within their system. >> >> >> > - disable the auto-creation and avoid syncing configs that >> impact >> >> >> > capacity >> >> >> > >> >> >> > >> >> >> > 2. *Provisioning conflict:* >> >> >> > >> >> >> > In the previous MM2 configurations; we ended up with conflict as >> MM2 >> >> used >> >> >> > `AdminClient` directly to perform the following functionality >> >> >> > >> >> >> > - Create a Kafka topic (no way to disable this at the moment) >> >> >> > - Add new Kafka partitions (no way to disable this at the >> moment) >> >> >> > - Sync Kafka Topic configurations (can be disabled, but then >> this >> >> >> > reduces the value of MM2 potential for users) >> >> >> > - Sync Kafka topic's ACLs (can be disabled, but this reduces >> the >> >> >> users' >> >> >> > value). Disabling this feature also means that users must >> ensure >> >> they >> >> >> have >> >> >> > the right ACLs to the mirrored topics on the destination >> cluster >> >> >> before >> >> >> > switching their consumers, especially when MM2 is used for >> disaster >> >> >> > recovery. It may lead to extra downtime for them. >> >> >> > >> >> >> > >> >> >> > All these functionalities are using AdminClient; which causes an >> issue >> >> >> with >> >> >> > teams that >> >> >> > >> >> >> > - Manage their Kafka resources using tools like Strimizi or >> custom >> >> >> > federated solutions. For example, Strimizi's UserOperator >> doesn't >> >> >> sync the >> >> >> > topic ACLs when MM2 is enabled. Strimzi documentation mentions >> that >> >> >> users >> >> >> > must to disable MM2 `sync.topic.acls.enabled` if they use >> >> >> `UserOperator`. >> >> >> > On the other hand, Strimizi's TopicOperator doesn't have the >> same >> >> >> issue >> >> >> > because it has a bi-directional reconciliation process that >> watches >> >> >> the >> >> >> > topics state on the Kafka cluster and updates KafkaTopic >> resources >> >> for >> >> >> > Strimzi. This design works fine with Kafka MM2 for Topics but >> not >> >> for >> >> >> > syncing ACLs. Strimizi TopicOperator also doesn't have a way to >> >> stop >> >> >> > syncing config that impact capacity for example retention >> configs. >> >> >> > >> >> >> > >> >> >> > - Teams that run MM2 but don't own the destination cluster. In >> this >> >> >> > case, these teams don't have Admin access, but they may have >> Kafka >> >> >> > management solutions, such as yahoo/CMAK or an in-house >> solution. >> >> For >> >> >> such >> >> >> > a tool as CMAK, these teams can update/create resources using >> CMAK >> >> >> REST API. >> >> >> > >> >> >> > >> >> >> > The Proposed KIP gives users the flexibility to integrate MM2 >> within >> >> >> their >> >> >> > ecosystem without disabling any MM2 features. We can achieve this >> >> >> > flexibility with one of the following solutions. >> >> >> > >> >> >> > 1. Introduce a new interface that hides Admin interactions in >> one >> >> >> place. >> >> >> > Then users can provide their way of resource management. As >> well as >> >> >> clean >> >> >> > up the MM2 code by having one place that manages the >> resources, as >> >> at >> >> >> the >> >> >> > moment, MM2 usage of AdminClient is all over the code. >> >> >> > 2. The second solution could be to add only a new config that >> >> allows >> >> >> the >> >> >> > users to override AdminClient with another implementation of >> the >> >> >> > AdminClient interface, as Ryanne suggested before. The >> downside is >> >> >> that >> >> >> > AdminClient is enormous and constantly under development, so >> any >> >> >> users who >> >> >> > opt-in for custom implementation will need to carry this >> burden. >> >> >> > >> >> >> > I favour the first solution as it will make it either later to >> add any >> >> >> new >> >> >> > feature related to resource management. But don't mind if others >> think >> >> >> that >> >> >> > the second solution is easier for MM2 design. >> >> >> > >> >> >> > >> >> >> > *Note*: There are two possible future KIPs following this KIP to >> >> >> > >> >> >> > 1. Add config to disable MM2 from auto creating or adding new >> topic >> >> >> > partitions. >> >> >> > 2. Add a way to exclude a specific topic's configuration from >> being >> >> >> > synced. >> >> >> > >> >> >> > >> >> >> > I hope this clears up the problem better. Please let me know what >> do >> >> you >> >> >> > think. >> >> >> > >> >> >> > >> >> >> > On Mon, Feb 7, 2022 at 3:26 PM Omnia Ibrahim < >> o.g.h.ibra...@gmail.com >> >> > >> >> >> > wrote: >> >> >> > >> >> >> >> Hi Mickael. Thanks for the feedback. I address some of your >> points >> >> >> below. >> >> >> >> >> >> >> >> *> This seems to address a relatively advanced and specific use >> case* >> >> >> >> The main point of the KIP is that MM2 is making a massive >> assumption >> >> >> that >> >> >> >> it has the right to alter/create resources. This assumption isn't >> >> valid >> >> >> in >> >> >> >> the world of Infra-as-Code, federated solutions and popularity >> of OS >> >> >> Kafka >> >> >> >> Kubernetes operators; these infra/resource management solutions >> >> aren't >> >> >> >> advanced use-cases anymore nowadays. These concerns had been >> raised >> >> in >> >> >> the >> >> >> >> past, especially regarding the assumption that MM2 can create >> topics >> >> on >> >> >> the >> >> >> >> destination cluster. For example, >> >> >> >> https://issues.apache.org/jira/browse/KAFKA-12753 and >> >> >> >> https://www.mail-archive.com/dev@kafka.apache.org/msg119340.html >> . >> >> >> >> The primary motivation is giving some power to data >> >> >> >> platform/infrastructure team to make MM2 part of their internal >> Kafka >> >> >> >> ecosystem without dropping the main features that make MM2 >> valuable, >> >> >> like >> >> >> >> syncing topic configs. For example, if someone uses any OS Kafka >> k8s >> >> >> >> operator, they can implement the class to interact with the k8s >> >> >> operator to >> >> >> >> create these resources. >> >> >> >> >> >> >> >> *> My initial concern is this may make it hard to evolve >> MirrorMaker >> >> as >> >> >> >> we'll likely need to update this new interface if new features >> are >> >> >> added.* >> >> >> >> I agree it's a disadvantage to adding a new interface however >> adding >> >> >> more >> >> >> >> admin interactions from MM2 to alter/create resources and access >> will >> >> >> feed >> >> >> >> the main issue as I mentioned above with the popularity of IaC >> and >> >> >> >> federated solutions; most data platform/infrastructure teams will >> >> endup >> >> >> >> disabling these new features. >> >> >> >> Also, at the moment, most MM2 interactions with the admin client >> are >> >> >> >> scattered across the codebase so having one place where all admin >> >> >> >> interactions are listed isn't a bad thing. >> >> >> >> >> >> >> >> *> For example if we wanted to sync group ACLs.* >> >> >> >> As I mentioned before, altering any resource's configurations >> with >> >> MM2 >> >> >> is >> >> >> >> the one main concern for any data platform/infrastructure team >> that >> >> >> wants >> >> >> >> to have control over their clusters and use MM2. So the main >> question >> >> >> with >> >> >> >> adding any new altering feature like sync group ACLs will raise >> the >> >> same >> >> >> >> question of how many teams will actually enable this feature. >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> *>Regarding the proposed API, I have a few suggestions: >- What >> about >> >> >> >> using configure() instead of the constructor to pass the >> >> >configuration, >> >> >> >> especially as it's implementing Configurable >- It's not clear >> what >> >> all >> >> >> the >> >> >> >> arguments of createTopicPartitions()>are. What's the difference >> >> between >> >> >> >> partitionCounts and newPartitions?>Should we have separate >> methods >> >> for >> >> >> >> creating topics and partitions? >- Do we really need >> >> >> >> createCompactedTopic()? >- Instead of updateTopicConfigs() and >> >> >> updateAcls() >> >> >> >> should we use the >"alter" prefix to stay consistent with Admin?* >> >> >> >> >> >> >> >> These are good suggestions that will update the KIP to address >> these. >> >> >> >> Regarding the `createCompactedTopic` MM2 is using this method to >> >> create >> >> >> >> internal topics. >> >> >> >> >> >> >> >> Thanks >> >> >> >> >> >> >> >> On Wed, Jan 26, 2022 at 1:55 PM Mickael Maison < >> >> >> mickael.mai...@gmail.com> >> >> >> >> wrote: >> >> >> >> >> >> >> >>> Hi Omnia, >> >> >> >>> >> >> >> >>> Thanks for the KIP, sorry for taking so long to comment. I've >> only >> >> had >> >> >> >>> time to take a quick look so far. >> >> >> >>> >> >> >> >>> This seems to address a relatively advanced and specific use >> case. >> >> My >> >> >> >>> initial concern is this may make it hard to evolve MirrorMaker >> as >> >> >> >>> we'll likely need to update this new interface if new features >> are >> >> >> >>> added. For example if we wanted to sync group ACLs. >> >> >> >>> I'm wondering if it's something you've thought about. I'm not >> saying >> >> >> >>> it's a blocker but we have to weigh the pros and cons when >> >> introducing >> >> >> >>> new features. >> >> >> >>> >> >> >> >>> Regarding the proposed API, I have a few suggestions: >> >> >> >>> - What about using configure() instead of the constructor to >> pass >> >> the >> >> >> >>> configuration, especially as it's implementing Configurable >> >> >> >>> - It's not clear what all the arguments of >> createTopicPartitions() >> >> >> >>> are. What's the difference between partitionCounts and >> >> newPartitions? >> >> >> >>> Should we have separate methods for creating topics and >> partitions? >> >> >> >>> - Do we really need createCompactedTopic()? >> >> >> >>> - Instead of updateTopicConfigs() and updateAcls() should we >> use the >> >> >> >>> "alter" prefix to stay consistent with Admin? >> >> >> >>> >> >> >> >>> Thanks, >> >> >> >>> Mickael >> >> >> >>> >> >> >> >>> On Wed, Jan 26, 2022 at 11:26 AM Omnia Ibrahim < >> >> >> o.g.h.ibra...@gmail.com> >> >> >> >>> wrote: >> >> >> >>> > >> >> >> >>> > Hi, >> >> >> >>> > If there are no more concerns regarding the proposal can I get >> >> some >> >> >> >>> votes on the KIP here >> >> >> >>> >> https://lists.apache.org/thread/950lpxjb5kbjm8qdszlpxm9h4j4sfyjx >> >> >> >>> > >> >> >> >>> > Thanks >> >> >> >>> > >> >> >> >>> > On Wed, Oct 27, 2021 at 3:54 PM Ryanne Dolan < >> >> ryannedo...@gmail.com> >> >> >> >>> wrote: >> >> >> >>> >> >> >> >> >>> >> Well I'm convinced! Thanks for looking into it. >> >> >> >>> >> >> >> >> >>> >> Ryanne >> >> >> >>> >> >> >> >> >>> >> On Wed, Oct 27, 2021, 8:49 AM Omnia Ibrahim < >> >> >> o.g.h.ibra...@gmail.com> >> >> >> >>> wrote: >> >> >> >>> >> >> >> >> >>> >> > I checked the difference between the number of methods in >> the >> >> >> Admin >> >> >> >>> >> > interface and the number of methods MM2 invokes from >> Admin, and >> >> >> this >> >> >> >>> diff >> >> >> >>> >> > is enormous (it's more than 70 methods). >> >> >> >>> >> > As far as I can see, the following methods MM2 depends on >> (in >> >> >> >>> >> > MirrorSourceConnector, MirrorMaker, MirrorCheckpointTask >> and >> >> >> >>> >> > MirrorCheckpointConnector), this will leave 73 methods on >> the >> >> >> Admin >> >> >> >>> >> > interface that customer will need to return dummy data for, >> >> >> >>> >> > >> >> >> >>> >> > 1. create(conf) >> >> >> >>> >> > 2. close >> >> >> >>> >> > 3. listTopics() >> >> >> >>> >> > 4. createTopics(newTopics, createTopicsOptions) >> >> >> >>> >> > 5. createPartitions(newPartitions) >> >> >> >>> >> > 6. alterConfigs(configs) // this method is marked for >> >> >> >>> deprecation in >> >> >> >>> >> > Admin and the ConfigResource MM2 use is only TOPIC >> >> >> >>> >> > 7. createAcls(aclBindings) // the list of bindings >> always >> >> >> >>> filtered by >> >> >> >>> >> > TOPIC >> >> >> >>> >> > 8. describeAcls(aclBindingFilter) // filter is always >> >> >> >>> ANY_TOPIC_ACL >> >> >> >>> >> > 9. describeConfigs(configResources) // Always for TOPIC >> >> >> resources >> >> >> >>> >> > 10. listConsumerGroupOffsets(groupId) >> >> >> >>> >> > 11. listConsumerGroups() >> >> >> >>> >> > 12. alterConsumerGroupOffsets(groupId, offsets) >> >> >> >>> >> > 13. describeCluster() // this is invoked from >> >> >> >>> >> > ConnectUtils.lookupKafkaClusterId(conf), >> >> >> >>> >> > but MM2 isn't the one that initialize the AdminClient >> >> >> >>> >> > >> >> >> >>> >> > Going with the Admin interface in practice will make any >> custom >> >> >> Admin >> >> >> >>> >> > implementation humongous even for a fringe use case >> because of >> >> the >> >> >> >>> number >> >> >> >>> >> > of methods that need to return dummy data, >> >> >> >>> >> > >> >> >> >>> >> > I am still leaning toward a new interface as it abstract >> all >> >> MM2's >> >> >> >>> >> > interaction with Kafka Resources in one place; this makes >> it >> >> >> easier >> >> >> >>> to >> >> >> >>> >> > maintain and make it easier for the use cases where >> customers >> >> >> wish to >> >> >> >>> >> > provide a different method to handle resources. >> >> >> >>> >> > >> >> >> >>> >> > Omnia >> >> >> >>> >> > >> >> >> >>> >> > On Tue, Oct 26, 2021 at 4:10 PM Ryanne Dolan < >> >> >> ryannedo...@gmail.com> >> >> >> >>> >> > wrote: >> >> >> >>> >> > >> >> >> >>> >> > > I like the idea of failing-fast whenever a custom impl is >> >> >> >>> provided, but I >> >> >> >>> >> > > suppose that that could be done for Admin as well. I >> agree >> >> your >> >> >> >>> proposal >> >> >> >>> >> > is >> >> >> >>> >> > > more ergonomic, but maybe it's okay to have a little >> >> friction in >> >> >> >>> such >> >> >> >>> >> > > fringe use-cases. >> >> >> >>> >> > > >> >> >> >>> >> > > Ryanne >> >> >> >>> >> > > >> >> >> >>> >> > > >> >> >> >>> >> > > On Tue, Oct 26, 2021, 6:23 AM Omnia Ibrahim < >> >> >> >>> o.g.h.ibra...@gmail.com> >> >> >> >>> >> > > wrote: >> >> >> >>> >> > > >> >> >> >>> >> > > > Hey Ryanne, Thanks fo the quick feedback. >> >> >> >>> >> > > > Using the Admin interface would make everything >> easier, as >> >> MM2 >> >> >> >>> will >> >> >> >>> >> > need >> >> >> >>> >> > > > only to configure the classpath for the new >> implementation >> >> and >> >> >> >>> use it >> >> >> >>> >> > > > instead of AdminClient. >> >> >> >>> >> > > > However, I have two concerns >> >> >> >>> >> > > > 1. The Admin interface is enormous, and the MM2 users >> will >> >> >> need >> >> >> >>> to know >> >> >> >>> >> > > the >> >> >> >>> >> > > > list of methods MM2 depends on and override these only >> >> >> instead of >> >> >> >>> >> > > > implementing the whole Admin interface. >> >> >> >>> >> > > > 2. MM2 users will need keep an eye on any changes to >> Admin >> >> >> >>> interface >> >> >> >>> >> > that >> >> >> >>> >> > > > impact MM2 for example deprecating methods. >> >> >> >>> >> > > > Am not sure if adding these concerns on the users is >> >> >> acceptable >> >> >> >>> or not. >> >> >> >>> >> > > > One solution to address these concerns could be adding >> some >> >> >> >>> checks to >> >> >> >>> >> > > make >> >> >> >>> >> > > > sure the methods MM2 uses from the Admin interface >> exists >> >> to >> >> >> fail >> >> >> >>> >> > faster. >> >> >> >>> >> > > > What do you think >> >> >> >>> >> > > > >> >> >> >>> >> > > > Omnia >> >> >> >>> >> > > > >> >> >> >>> >> > > > >> >> >> >>> >> > > > On Mon, Oct 25, 2021 at 11:24 PM Ryanne Dolan < >> >> >> >>> ryannedo...@gmail.com> >> >> >> >>> >> > > > wrote: >> >> >> >>> >> > > > >> >> >> >>> >> > > > > Thanks Omnia, neat idea. I wonder if we could use the >> >> >> existing >> >> >> >>> Admin >> >> >> >>> >> > > > > interface instead of defining a new one? >> >> >> >>> >> > > > > >> >> >> >>> >> > > > > Ryanne >> >> >> >>> >> > > > > >> >> >> >>> >> > > > > On Mon, Oct 25, 2021, 12:54 PM Omnia Ibrahim < >> >> >> >>> >> > o.g.h.ibra...@gmail.com> >> >> >> >>> >> > > > > wrote: >> >> >> >>> >> > > > > >> >> >> >>> >> > > > > > Hey everyone, >> >> >> >>> >> > > > > > Please take a look at KIP-787 >> >> >> >>> >> > > > > > >> >> >> >>> >> > > > > > >> >> >> >>> >> > > > > >> >> >> >>> >> > > > >> >> >> >>> >> > > >> >> >> >>> >> > >> >> >> >>> >> >> >> >> >> >> https://cwiki.apache.org/confluence/display/KAFKA/KIP-787%3A+MM2+Interface+to+manage+Kafka+resources >> >> >> >>> >> > > > > > < >> >> >> >>> >> > > > > > >> >> >> >>> >> > > > > >> >> >> >>> >> > > > >> >> >> >>> >> > > >> >> >> >>> >> > >> >> >> >>> >> >> >> >> >> >> https://cwiki.apache.org/confluence/display/KAFKA/KIP-787%3A+MM2+Interface+to+manage+Kafka+resources >> >> >> >>> >> > > > > > > >> >> >> >>> >> > > > > > >> >> >> >>> >> > > > > > Thanks for the feedback and support >> >> >> >>> >> > > > > > Omnia >> >> >> >>> >> > > > > > >> >> >> >>> >> > > > > >> >> >> >>> >> > > > >> >> >> >>> >> > > >> >> >> >>> >> > >> >> >> >>> >> >> >> >> >> >> >> >> >> >> >