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
> >> >> >>> >> > > > > >
> >> >> >>> >> > > > >
> >> >> >>> >> > > >
> >> >> >>> >> > >
> >> >> >>> >> >
> >> >> >>>
> >> >> >>
> >> >>
> >>
>

Reply via email to