Hi All,

I would like to start a vote on
https://cwiki.apache.org/confluence/display/KAFKA/KIP-458%3A+Connector+Client+Config+Override+Policy

The discussion thread can be found here
<https://www.mail-archive.com/dev@kafka.apache.org/msg97124.html>.

Thanks,
Magesh

On Tue, May 7, 2019 at 9:35 AM Magesh Nandakumar <mage...@confluent.io>
wrote:

> I have addressed all the outstanding discussion points and I believe we
> have consensus on the design. Thanks, everyone for the feedback. I will
> start a VOTE thread on this KIP.
>
> On Mon, May 6, 2019 at 10:13 PM Magesh Nandakumar <mage...@confluent.io>
> wrote:
>
>> Randall,
>>
>> Thanks a lot for the suggestions. I have incorporated the comments in the
>> KIP.
>>
>> Thanks,
>> Magesh
>>
>> On Mon, May 6, 2019 at 6:52 PM Randall Hauch <rha...@gmail.com> wrote:
>>
>>> Thanks, Magesh. I do have a few pretty minor suggestions.
>>>
>>> 1) Define a bit more clearly in the "Proposed Changes" whether the
>>> configs
>>> passed to the validate method via the ConnectorClientConfigRequest object
>>> have or do not have the prefixes.
>>> 2) Specify more clearly in (or around) the table which is the default
>>> policy. Currently the Ignore policy "Behavior" just mentions that it's
>>> the
>>> current behavior, but I think it would help that it is described as the
>>> default for the property.
>>>
>>> Otherwise, this looks good to me.
>>>
>>> Best regards,
>>>
>>> Randall
>>>
>>> On Mon, May 6, 2019 at 8:12 PM Magesh Nandakumar <mage...@confluent.io>
>>> wrote:
>>>
>>> > Konstantine,
>>> >
>>> > Thanks a lot for your feedback on the KIP. I have incorporated the
>>> feedback
>>> > using generics for Class. I have also updated the KIP to handle the
>>> default
>>> > value per Randall's suggestion. Let me know if you have any questions.
>>> >
>>> > Thanks,
>>> > Magesh
>>> >
>>> >
>>> > On Mon, May 6, 2019 at 1:58 PM Konstantine Karantasis <
>>> > konstant...@confluent.io> wrote:
>>> >
>>> > > Thanks for the KIP Magesh, it's quite useful towards the goals for
>>> more
>>> > > general multi-tenancy in Connect.
>>> > >
>>> > > Couple of comments from me too:
>>> > >
>>> > > I think the fact that the default policy is 'null' (no
>>> implementation)
>>> > > should be mentioned on the table next to the available
>>> implementations.
>>> > > Currently the KIP says: 'In addition to the default implementation,
>>> ..."
>>> > > but this is not very accurate because there is no concrete default
>>> > > implementation. Just special handling of 'null' in
>>> > > 'connector.client.config.policy'
>>> > >
>>> > > Regarding passing the overrides to the connector 'configure' method,
>>> I
>>> > feel
>>> > > it wouldn't hurt to pass them, but I also agree that leaving this
>>> out at
>>> > > the moment is the safest option.
>>> > >
>>> > > Since the interfaces and classes are listed in the KIP, I'd like to
>>> note
>>> > > that Class is used as a raw type in field and return value
>>> declarations.
>>> > We
>>> > > should use the generic type instead.
>>> > >
>>> > > Thanks for this improvement proposal!
>>> > > Konstantine
>>> > >
>>> > > On Mon, May 6, 2019 at 11:11 AM Magesh Nandakumar <
>>> mage...@confluent.io>
>>> > > wrote:
>>> > >
>>> > > > Randall,
>>> > > >
>>> > > > I was wondering if you had any thoughts on the above alternatives
>>> to
>>> > deal
>>> > > > with a default policy.  If it's possible, I would like to finalize
>>> the
>>> > > > discussions and start a vote.
>>> > > > Let me know your thoughts.
>>> > > >
>>> > > > Thanks,
>>> > > > Magesh
>>> > > >
>>> > > > On Tue, Apr 30, 2019 at 8:46 PM Magesh Nandakumar <
>>> > mage...@confluent.io>
>>> > > > wrote:
>>> > > >
>>> > > > > Randall,
>>> > > > >
>>> > > > > The approach to return the to override configs could possibly
>>> make it
>>> > > > > cumbersome to implement a custom policy. This is a new
>>> configuration
>>> > > and
>>> > > > if
>>> > > > > you don't explicitly set it the existing behavior remains as-is.
>>> Like
>>> > > > > Chris, I also preferred this approach for the sake of
>>> simplicity.  If
>>> > > not
>>> > > > > for the default `null` I would prefer to fall back to using
>>> `Ignore`
>>> > > > which
>>> > > > > is a misnomer to the interface spec but still gets the job done
>>> via
>>> > > > > instanceOf checks. The other options I could think of are as
>>> below:-
>>> > > > >
>>> > > > >    - have an enforcePolicy() method in the interface which by
>>> default
>>> > > > >    returns true and the Ignore implementation could return false
>>> > > > >    - introduce another worker config
>>> allow.connector.config.overrides
>>> > > > >    with a default value of false and the default policy can be
>>> None
>>> > > > >
>>> > > > > Let me know what you think.
>>> > > > >
>>> > > > > Thanks
>>> > > > > Magesh
>>> > > > >
>>> > > > > On Tue, Apr 30, 2019 at 6:52 PM Randall Hauch <rha...@gmail.com>
>>> > > wrote:
>>> > > > >
>>> > > > >> Thanks, Chris. I still think it's strange to have a non-policy,
>>> > since
>>> > > > >> there's now special behavior for when the policy is not
>>> specified.
>>> > > > >>
>>> > > > >> Perhaps the inability for a policy implementation to represent
>>> the
>>> > > > >> existing
>>> > > > >> behavior suggests that the policy interface isn't quite right.
>>> Could
>>> > > the
>>> > > > >> policy's "validate" method take the overrides that were
>>> supplied and
>>> > > > >> return
>>> > > > >> the overrides that should be passed to the connector, yet still
>>> > > throwing
>>> > > > >> an
>>> > > > >> exception if any supplied overrides are not allowed. Then the
>>> > > different
>>> > > > >> policy implementations might be:
>>> > > > >>
>>> > > > >>    - Ignore (default) - returns all supplied override properties
>>> > > > >>    - None - throws exception if any override properties are
>>> > supplied;
>>> > > > >>    always returns empty map if no overrides are provided
>>> > > > >>    - Principal - throws exception if other override properties
>>> are
>>> > > > >>    provided, but returns an empty map (since no properties
>>> should be
>>> > > > >> passed to
>>> > > > >>    the connector)
>>> > > > >>    - All - returns all provided override properties
>>> > > > >>
>>> > > > >> All override properties defined on the connector configuration
>>> would
>>> > > be
>>> > > > >> passed to the policy for validation, and assuming there's no
>>> error
>>> > all
>>> > > > of
>>> > > > >> these overrides would be used in the producer/consumer/admin
>>> client.
>>> > > The
>>> > > > >> result of the policy call, however, is used to determine which
>>> of
>>> > > these
>>> > > > >> overrides are passed to the connector.
>>> > > > >>
>>> > > > >> This approach means that all behaviors can be implemented
>>> through a
>>> > > > policy
>>> > > > >> class, including the defaults. It also gives a bit more control
>>> to
>>> > > > custom
>>> > > > >> policies, should that be warranted. For example, validating the
>>> > > provided
>>> > > > >> client overrides but passing all such override properties to the
>>> > > > >> connector,
>>> > > > >> which as I stated earlier is something I think connectors likely
>>> > don't
>>> > > > >> look
>>> > > > >> for.
>>> > > > >>
>>> > > > >> Thoughts?
>>> > > > >>
>>> > > > >> Randall
>>> > > > >>
>>> > > > >> On Tue, Apr 30, 2019 at 6:07 PM Chris Egerton <
>>> chr...@confluent.io>
>>> > > > >> wrote:
>>> > > > >>
>>> > > > >> > Randall,
>>> > > > >> >
>>> > > > >> > The special behavior for null was my suggestion. There is no
>>> > > > >> implementation
>>> > > > >> > of the proposed interface that causes client overrides to be
>>> > > ignored,
>>> > > > so
>>> > > > >> > the original idea was to have a special implementation that
>>> would
>>> > be
>>> > > > >> > checked for by the Connect framework (probably via the
>>> instanceof
>>> > > > >> operator)
>>> > > > >> > and, if present, cause all would-be overrides to be ignored.
>>> > > > >> >
>>> > > > >> > I thought this may be confusing to people who may see that
>>> > behavior
>>> > > > and
>>> > > > >> > wonder how to recreate it themselves, so I suggested leaving
>>> that
>>> > > > policy
>>> > > > >> > out and replace it with a check to see if a policy was
>>> specified
>>> > at
>>> > > > all.
>>> > > > >> >
>>> > > > >> > Would be interested in your thoughts on this, especially if
>>> > there's
>>> > > an
>>> > > > >> > alternative that hasn't been proposed yet.
>>> > > > >> >
>>> > > > >> > Cheers,
>>> > > > >> >
>>> > > > >> > Chris
>>> > > > >> >
>>> > > > >> > On Tue, Apr 30, 2019, 18:01 Randall Hauch <rha...@gmail.com>
>>> > wrote:
>>> > > > >> >
>>> > > > >> > > On Tue, Apr 30, 2019 at 4:20 PM Magesh Nandakumar <
>>> > > > >> mage...@confluent.io>
>>> > > > >> > > wrote:
>>> > > > >> > >
>>> > > > >> > > > Randall,
>>> > > > >> > > >
>>> > > > >> > > > Thanks a lot for your feedback.
>>> > > > >> > > >
>>> > > > >> > > > You bring up an interesting point regarding the overrides
>>> > being
>>> > > > >> > available
>>> > > > >> > > > to the connectors. Today everything that is specified in
>>> the
>>> > > > config
>>> > > > >> > while
>>> > > > >> > > > creating is available for the connector. But this is a
>>> > specific
>>> > > > case
>>> > > > >> > and
>>> > > > >> > > we
>>> > > > >> > > > could do either of the following
>>> > > > >> > > >
>>> > > > >> > > >
>>> > > > >> > > >    - don't pass any configs with these prefixes to the
>>> > > > >> ConnectorConfig
>>> > > > >> > > >    instance that's passed in the startConnector
>>> > > > >> > > >    - allow policies as to whether the configurations with
>>> the
>>> > > > >> prefixes
>>> > > > >> > > >    should be made available to the connector or not.
>>> Should
>>> > this
>>> > > > >> also
>>> > > > >> > > > define a
>>> > > > >> > > >    list of configurations?
>>> > > > >> > > >
>>> > > > >> > > > I personally prefer not passing the configs to Connector
>>> since
>>> > > > >> that's
>>> > > > >> > > > simple, straight forward and don't see a reason for the
>>> > > connector
>>> > > > to
>>> > > > >> > > access
>>> > > > >> > > > those.
>>> > > > >> > > >
>>> > > > >> > >
>>> > > > >> > > I agree that these override properties should be
>>> effectively new
>>> > > > >> > > properties, in which case I'd also prefer that they be
>>> removed
>>> > > from
>>> > > > >> the
>>> > > > >> > > configuration before it is passed to the connector. Yes, it
>>> is
>>> > > > >> *possible*
>>> > > > >> > > that an existing connector happened to use connector config
>>> > > > properties
>>> > > > >> > with
>>> > > > >> > > these prefixes, but it's seems pretty unlikely.
>>> > > > >> > >
>>> > > > >> > > I'd love to hear whether other people agree.
>>> > > > >> > >
>>> > > > >> > >
>>> > > > >> > > >
>>> > > > >> > > > For the second point,  None - doesn't allow overrides and
>>> the
>>> > > > >> default
>>> > > > >> > > > policy is null. We preserve backward compatibility when no
>>> > > policy
>>> > > > is
>>> > > > >> > > > configured. Let me know if that's not clear in the KIP.
>>> > > > >> > > >
>>> > > > >> > >
>>> > > > >> > > Why not have a default policy (rather than null) that
>>> implements
>>> > > the
>>> > > > >> > > backward-compatible behavior? It seems strange to have null
>>> be
>>> > the
>>> > > > >> > default
>>> > > > >> > > and for non-policy to allow anything.
>>> > > > >> > >
>>> > > > >> > >
>>> > > > >> > > >
>>> > > > >> > > > Thanks,
>>> > > > >> > > > Magesh
>>> > > > >> > > >
>>> > > > >> > > > On Mon, Apr 29, 2019 at 4:07 PM Randall Hauch <
>>> > rha...@gmail.com
>>> > > >
>>> > > > >> > wrote:
>>> > > > >> > > >
>>> > > > >> > > > > Per the proposal, a connector configuration can define
>>> one
>>> > or
>>> > > > more
>>> > > > >> > > > > properties that begin with any of the three prefixes:
>>> > > > >> > > > "producer.override.",
>>> > > > >> > > > > "consumer.override.", and "admin.override.". The
>>> proposal
>>> > > > states:
>>> > > > >> > > > >
>>> > > > >> > > > > Since the users can specify any of these policies, the
>>> > > > connectors
>>> > > > >> > > itself
>>> > > > >> > > > > should not rely on these configurations to be
>>> available. The
>>> > > > >> > overrides
>>> > > > >> > > > are
>>> > > > >> > > > > to be used purely from an operational perspective.
>>> > > > >> > > > >
>>> > > > >> > > > >
>>> > > > >> > > > > Does this mean that any such properties are visible to
>>> > > > >> connectors, or
>>> > > > >> > > > will
>>> > > > >> > > > > they be hidden to connectors? Currently no connectors
>>> have
>>> > > > access
>>> > > > >> to
>>> > > > >> > > such
>>> > > > >> > > > > client properties, and users are unlike to just put them
>>> > into
>>> > > a
>>> > > > >> > > connector
>>> > > > >> > > > > configuration unnecessarily. A connector implementation
>>> > could
>>> > > > have
>>> > > > >> > > > defined
>>> > > > >> > > > > such properties as normal connector-specific
>>> properties, in
>>> > > > which
>>> > > > >> > case
>>> > > > >> > > > they
>>> > > > >> > > > > are required, but is that likely given the log
>>> prefixes? One
>>> > > > >> concern
>>> > > > >> > > > that I
>>> > > > >> > > > > have is that this might allow connector implementations
>>> > start
>>> > > > >> > > attempting
>>> > > > >> > > > to
>>> > > > >> > > > > circumvent the Connect API if these properties are
>>> included.
>>> > > > >> > > > >
>>> > > > >> > > > > Second, does the None policy allow but ignore these
>>> > additional
>>> > > > >> > > properties
>>> > > > >> > > > > (e.g., "validate(...)" is simply a no-op)? Or does the
>>> None
>>> > > > policy
>>> > > > >> > fail
>>> > > > >> > > > if
>>> > > > >> > > > > any client overrides are specified? The former seems
>>> more in
>>> > > > line
>>> > > > >> > with
>>> > > > >> > > > the
>>> > > > >> > > > > current behavior, whereas the "disallows" policy seems
>>> > useful
>>> > > > but
>>> > > > >> not
>>> > > > >> > > > > exactly backward compatible. Should we also offer a
>>> > "Disallow"
>>> > > > >> > policy?
>>> > > > >> > > In
>>> > > > >> > > > > fact, should the policies be named "Ignore" (default),
>>> > > > "Disallow",
>>> > > > >> > > > > "Prinicipal", and "All"?
>>> > > > >> > > > >
>>> > > > >> > > > > Otherwise, I like the idea of this. There have been
>>> several
>>> > > > >> requests
>>> > > > >> > > over
>>> > > > >> > > > > the past year or two for adding subsets of this
>>> > functionality.
>>> > > > >> Might
>>> > > > >> > be
>>> > > > >> > > > > good to find and list all of the related KAFKA issues.
>>> > > > >> > > > >
>>> > > > >> > > > > Randall
>>> > > > >> > > > >
>>> > > > >> > > > > On Fri, Apr 26, 2019 at 4:04 PM Chris Egerton <
>>> > > > >> chr...@confluent.io>
>>> > > > >> > > > wrote:
>>> > > > >> > > > >
>>> > > > >> > > > > > Hi Magesh,
>>> > > > >> > > > > >
>>> > > > >> > > > > > Changes look good to me! Excited to see this happen,
>>> hope
>>> > > the
>>> > > > >> KIP
>>> > > > >> > > > passes
>>> > > > >> > > > > :)
>>> > > > >> > > > > >
>>> > > > >> > > > > > Cheers,
>>> > > > >> > > > > >
>>> > > > >> > > > > > Chris
>>> > > > >> > > > > >
>>> > > > >> > > > > > On Fri, Apr 26, 2019 at 1:44 PM Magesh Nandakumar <
>>> > > > >> > > > mage...@confluent.io>
>>> > > > >> > > > > > wrote:
>>> > > > >> > > > > >
>>> > > > >> > > > > > > Hi Chris,
>>> > > > >> > > > > > >
>>> > > > >> > > > > > > I have updated the KIP to reflect the changes that
>>> we
>>> > > > >> discussed
>>> > > > >> > for
>>> > > > >> > > > the
>>> > > > >> > > > > > > prefix. Thanks for all your inputs.
>>> > > > >> > > > > > >
>>> > > > >> > > > > > > Thanks,
>>> > > > >> > > > > > > Magesh
>>> > > > >> > > > > > >
>>> > > > >> > > > > > > On Thu, Apr 25, 2019 at 2:18 PM Chris Egerton <
>>> > > > >> > chr...@confluent.io
>>> > > > >> > > >
>>> > > > >> > > > > > wrote:
>>> > > > >> > > > > > >
>>> > > > >> > > > > > > > Hi Magesh,
>>> > > > >> > > > > > > >
>>> > > > >> > > > > > > > Agreed that we should avoid `dlq.admin`. I also
>>> don't
>>> > > > have a
>>> > > > >> > > strong
>>> > > > >> > > > > > > opinion
>>> > > > >> > > > > > > > between `connector.` and `.override`, but I have a
>>> > > slight
>>> > > > >> > > > inclination
>>> > > > >> > > > > > > > toward `.override` since `connector.` feels a
>>> little
>>> > > > >> redundant
>>> > > > >> > > > given
>>> > > > >> > > > > > that
>>> > > > >> > > > > > > > the whole configuration is for the connector and
>>> the
>>> > use
>>> > > > of
>>> > > > >> > > > > "override"
>>> > > > >> > > > > > > may
>>> > > > >> > > > > > > > shed a little light on how the properties for
>>> these
>>> > > > clients
>>> > > > >> are
>>> > > > >> > > > > > computed
>>> > > > >> > > > > > > > and help make the learning curve a little gentler
>>> on
>>> > new
>>> > > > >> devs
>>> > > > >> > and
>>> > > > >> > > > > > users.
>>> > > > >> > > > > > > >
>>> > > > >> > > > > > > > Regardless, I think the larger issue of conflicts
>>> with
>>> > > > >> existing
>>> > > > >> > > > > > > properties
>>> > > > >> > > > > > > > (both in MM2 and potentially other connectors) has
>>> > been
>>> > > > >> > > > > satisfactorily
>>> > > > >> > > > > > > > addressed, so I'm happy.
>>> > > > >> > > > > > > >
>>> > > > >> > > > > > > > Cheers,
>>> > > > >> > > > > > > >
>>> > > > >> > > > > > > > Chris
>>> > > > >> > > > > > > >
>>> > > > >> > > > > > > > On Wed, Apr 24, 2019 at 11:14 AM Magesh
>>> Nandakumar <
>>> > > > >> > > > > > mage...@confluent.io
>>> > > > >> > > > > > > >
>>> > > > >> > > > > > > > wrote:
>>> > > > >> > > > > > > >
>>> > > > >> > > > > > > > > HI Chrise,
>>> > > > >> > > > > > > > >
>>> > > > >> > > > > > > > > You are right about the "admin." prefix creating
>>> > > > >> conflicts.
>>> > > > >> > > Here
>>> > > > >> > > > > are
>>> > > > >> > > > > > > few
>>> > > > >> > > > > > > > > options that I can think of
>>> > > > >> > > > > > > > >
>>> > > > >> > > > > > > > > 1. Use `dlq.admin` since admin client is used
>>> only
>>> > for
>>> > > > >> DLQ.
>>> > > > >> > But
>>> > > > >> > > > > this
>>> > > > >> > > > > > > > might
>>> > > > >> > > > > > > > > not really be the case in the future. So, we
>>> should
>>> > > > >> possibly
>>> > > > >> > > drop
>>> > > > >> > > > > > this
>>> > > > >> > > > > > > > idea
>>> > > > >> > > > > > > > > :)
>>> > > > >> > > > > > > > > 2.  Use `connector.producer`,
>>> `connector.consumer`
>>> > and
>>> > > > >> > > > > > > `connector.admin`
>>> > > > >> > > > > > > > -
>>> > > > >> > > > > > > > > provides better context that its connector
>>> specific
>>> > > > >> property
>>> > > > >> > > > > > > > > 3.  Use `producer.override`,
>>> '`consumer.override`
>>> > and
>>> > > > >> > > > > > `admin.override`
>>> > > > >> > > > > > > -
>>> > > > >> > > > > > > > > provides better clarity that these are
>>> overrides.
>>> > > > >> > > > > > > > >
>>> > > > >> > > > > > > > > I don't have a strong opinion in choosing
>>> between #2
>>> > > and
>>> > > > >> #3.
>>> > > > >> > > Let
>>> > > > >> > > > me
>>> > > > >> > > > > > > > > know what you think.
>>> > > > >> > > > > > > > >
>>> > > > >> > > > > > > > > Thanks
>>> > > > >> > > > > > > > > Magesh
>>> > > > >> > > > > > > > >
>>> > > > >> > > > > > > > > On Wed, Apr 24, 2019 at 10:25 AM Chris Egerton <
>>> > > > >> > > > > chr...@confluent.io>
>>> > > > >> > > > > > > > > wrote:
>>> > > > >> > > > > > > > >
>>> > > > >> > > > > > > > > > Hi Magesh,
>>> > > > >> > > > > > > > > >
>>> > > > >> > > > > > > > > > Next round :)
>>> > > > >> > > > > > > > > >
>>> > > > >> > > > > > > > > > 1. It looks like MM2 will also support
>>> "admin."
>>> > > > >> properties
>>> > > > >> > > that
>>> > > > >> > > > > > > affect
>>> > > > >> > > > > > > > > > AdminClients it creates and uses, which IIUC
>>> is
>>> > the
>>> > > > same
>>> > > > >> > > prefix
>>> > > > >> > > > > > name
>>> > > > >> > > > > > > to
>>> > > > >> > > > > > > > > be
>>> > > > >> > > > > > > > > > used for managing the DLQ for sink connectors
>>> in
>>> > > this
>>> > > > >> KIP.
>>> > > > >> > > > > Doesn't
>>> > > > >> > > > > > > that
>>> > > > >> > > > > > > > > > still leave room for conflict? I'm imagining a
>>> > > > scenario
>>> > > > >> > like
>>> > > > >> > > > > this:
>>> > > > >> > > > > > a
>>> > > > >> > > > > > > > > > Connect worker is configured to use the
>>> > > > >> > > > > > > > > > PrincipalConnectorClientConfigPolicy, someone
>>> > tries
>>> > > to
>>> > > > >> > start
>>> > > > >> > > an
>>> > > > >> > > > > > > > instance
>>> > > > >> > > > > > > > > of
>>> > > > >> > > > > > > > > > an MM2 sink with "admin." properties beyond
>>> just
>>> > > > >> > > > > > > > > "admin.sasl.jaas.config",
>>> > > > >> > > > > > > > > > and gets rejected because those properties are
>>> > then
>>> > > > >> > > interpreted
>>> > > > >> > > > > by
>>> > > > >> > > > > > > the
>>> > > > >> > > > > > > > > > worker as overrides for the AdminClient it
>>> uses to
>>> > > > >> manage
>>> > > > >> > the
>>> > > > >> > > > > DLQ.
>>> > > > >> > > > > > > > > > 2. (LGTM)
>>> > > > >> > > > > > > > > > 3. I'm convinced by this, as long as nobody
>>> else
>>> > > > >> > identifies a
>>> > > > >> > > > > > common
>>> > > > >> > > > > > > > use
>>> > > > >> > > > > > > > > > case that would involve a similar client
>>> config
>>> > > policy
>>> > > > >> > > > > > implementation
>>> > > > >> > > > > > > > > that
>>> > > > >> > > > > > > > > > would be limited to a small set of whitelisted
>>> > > > configs.
>>> > > > >> For
>>> > > > >> > > now
>>> > > > >> > > > > > > keeping
>>> > > > >> > > > > > > > > the
>>> > > > >> > > > > > > > > > PrincipalConnectorClientConfigPolicy sounds
>>> fine
>>> > to
>>> > > > me.
>>> > > > >> > > > > > > > > >
>>> > > > >> > > > > > > > > > Cheers,
>>> > > > >> > > > > > > > > >
>>> > > > >> > > > > > > > > > Chris
>>> > > > >> > > > > > > > > >
>>> > > > >> > > > > > > > > > On Tue, Apr 23, 2019 at 10:30 PM Magesh
>>> > Nandakumar <
>>> > > > >> > > > > > > > mage...@confluent.io
>>> > > > >> > > > > > > > > >
>>> > > > >> > > > > > > > > > wrote:
>>> > > > >> > > > > > > > > >
>>> > > > >> > > > > > > > > > > Hi all,
>>> > > > >> > > > > > > > > > >
>>> > > > >> > > > > > > > > > > I also have a draft implementation of the
>>> KIP
>>> > > > >> > > > > > > > > > > https://github.com/apache/kafka/pull/6624.
>>> I
>>> > > would
>>> > > > >> still
>>> > > > >> > > > need
>>> > > > >> > > > > to
>>> > > > >> > > > > > > > > include
>>> > > > >> > > > > > > > > > > more tests and docs but I thought it would
>>> be
>>> > > useful
>>> > > > >> to
>>> > > > >> > > have
>>> > > > >> > > > > this
>>> > > > >> > > > > > > for
>>> > > > >> > > > > > > > > the
>>> > > > >> > > > > > > > > > > KIP discussion. Looking forward to all of
>>> your
>>> > > > >> valuable
>>> > > > >> > > > > feedback.
>>> > > > >> > > > > > > > > > >
>>> > > > >> > > > > > > > > > > Thanks
>>> > > > >> > > > > > > > > > > Magesh
>>> > > > >> > > > > > > > > > >
>>> > > > >> > > > > > > > > > > On Tue, Apr 23, 2019 at 10:27 PM Magesh
>>> > > Nandakumar <
>>> > > > >> > > > > > > > > mage...@confluent.io
>>> > > > >> > > > > > > > > > >
>>> > > > >> > > > > > > > > > > wrote:
>>> > > > >> > > > > > > > > > >
>>> > > > >> > > > > > > > > > > > Chrise,
>>> > > > >> > > > > > > > > > > >
>>> > > > >> > > > > > > > > > > > Thanks a lot for your feedback. I will
>>> address
>>> > > > them
>>> > > > >> in
>>> > > > >> > > > order
>>> > > > >> > > > > of
>>> > > > >> > > > > > > > your
>>> > > > >> > > > > > > > > > > > questions/comments.
>>> > > > >> > > > > > > > > > > >
>>> > > > >> > > > > > > > > > > > 1. Thanks for bringing this to my
>>> attention
>>> > > about
>>> > > > >> > > KIP-382.
>>> > > > >> > > > I
>>> > > > >> > > > > > had
>>> > > > >> > > > > > > a
>>> > > > >> > > > > > > > > > closer
>>> > > > >> > > > > > > > > > > > look at the KIP and IIUC, the KIP allows
>>> > > > `consumer.`
>>> > > > >> > > prefix
>>> > > > >> > > > > for
>>> > > > >> > > > > > > > > > > SourceConnector
>>> > > > >> > > > > > > > > > > > and producer. prefix for SinkConnector
>>> since
>>> > > those
>>> > > > >> are
>>> > > > >> > > > > > additional
>>> > > > >> > > > > > > > > > > > connector properties to help resolve the
>>> Kafka
>>> > > > >> cluster
>>> > > > >> > > > other
>>> > > > >> > > > > > than
>>> > > > >> > > > > > > > the
>>> > > > >> > > > > > > > > > one
>>> > > > >> > > > > > > > > > > > Connect framework knows about. Whereas,
>>> the
>>> > > > >> proposal in
>>> > > > >> > > > > KIP-458
>>> > > > >> > > > > > > > > applies
>>> > > > >> > > > > > > > > > > > producer policies for SinkConnectors and
>>> > > consumer
>>> > > > >> > > policies
>>> > > > >> > > > > > > > > > > > SourceConnectors.  So, from what I
>>> understand
>>> > > this
>>> > > > >> new
>>> > > > >> > > > policy
>>> > > > >> > > > > > > > should
>>> > > > >> > > > > > > > > > work
>>> > > > >> > > > > > > > > > > > without any issues even for Mirror Maker
>>> 2.0.
>>> > > > >> > > > > > > > > > > > 2. I have updated the KIP to use a default
>>> > value
>>> > > > of
>>> > > > >> > null
>>> > > > >> > > > and
>>> > > > >> > > > > > use
>>> > > > >> > > > > > > > that
>>> > > > >> > > > > > > > > > to
>>> > > > >> > > > > > > > > > > > determine if we need to ignore overrides.
>>> > > > >> > > > > > > > > > > > 3. I would still prefer to keep the
>>> special
>>> > > > >> > > > > > > > > > > PrincipalConnectorClientConfigPolicy
>>> > > > >> > > > > > > > > > > > since that is one of the most common use
>>> cases
>>> > > one
>>> > > > >> > would
>>> > > > >> > > > > choose
>>> > > > >> > > > > > > to
>>> > > > >> > > > > > > > > use
>>> > > > >> > > > > > > > > > > this
>>> > > > >> > > > > > > > > > > > feature. If we make it a general case,
>>> that
>>> > > would
>>> > > > >> > involve
>>> > > > >> > > > > users
>>> > > > >> > > > > > > > > > requiring
>>> > > > >> > > > > > > > > > > > to add additional configuration and they
>>> might
>>> > > > >> require
>>> > > > >> > > well
>>> > > > >> > > > > > more
>>> > > > >> > > > > > > > than
>>> > > > >> > > > > > > > > > > just
>>> > > > >> > > > > > > > > > > > the list of configs but might also want
>>> some
>>> > > > >> > restriction
>>> > > > >> > > on
>>> > > > >> > > > > > > values.
>>> > > > >> > > > > > > > > If
>>> > > > >> > > > > > > > > > > the
>>> > > > >> > > > > > > > > > > > concern is about users wanting principal
>>> and
>>> > > also
>>> > > > >> other
>>> > > > >> > > > > > configs,
>>> > > > >> > > > > > > it
>>> > > > >> > > > > > > > > > would
>>> > > > >> > > > > > > > > > > > still be possible by means of a custom
>>> > > > >> implementation.
>>> > > > >> > As
>>> > > > >> > > > > is, I
>>> > > > >> > > > > > > > would
>>> > > > >> > > > > > > > > > > > prefer to keep the proposal to be the
>>> same for
>>> > > > this.
>>> > > > >> > Let
>>> > > > >> > > me
>>> > > > >> > > > > > know
>>> > > > >> > > > > > > > your
>>> > > > >> > > > > > > > > > > > thoughts.
>>> > > > >> > > > > > > > > > > >
>>> > > > >> > > > > > > > > > > > Thanks,
>>> > > > >> > > > > > > > > > > > Magesh
>>> > > > >> > > > > > > > > > > >
>>> > > > >> > > > > > > > > > > >
>>> > > > >> > > > > > > > > > > > On Mon, Apr 22, 2019 at 3:44 PM Chris
>>> Egerton
>>> > <
>>> > > > >> > > > > > > chr...@confluent.io
>>> > > > >> > > > > > > > >
>>> > > > >> > > > > > > > > > > wrote:
>>> > > > >> > > > > > > > > > > >
>>> > > > >> > > > > > > > > > > >> Hi Magesh,
>>> > > > >> > > > > > > > > > > >>
>>> > > > >> > > > > > > > > > > >> This is an exciting KIP! I have a few
>>> > > > >> > questions/comments
>>> > > > >> > > > but
>>> > > > >> > > > > > > > > overall I
>>> > > > >> > > > > > > > > > > >> like
>>> > > > >> > > > > > > > > > > >> the direction it's headed in and hope to
>>> see
>>> > it
>>> > > > >> > included
>>> > > > >> > > > in
>>> > > > >> > > > > > the
>>> > > > >> > > > > > > > > > Connect
>>> > > > >> > > > > > > > > > > >> framework soon.
>>> > > > >> > > > > > > > > > > >>
>>> > > > >> > > > > > > > > > > >> 1. With the proposed "consumer.",
>>> > "producer.",
>>> > > > and
>>> > > > >> > > > "admin."
>>> > > > >> > > > > > > > > prefixes,
>>> > > > >> > > > > > > > > > > how
>>> > > > >> > > > > > > > > > > >> will this interact with connectors such
>>> as
>>> > the
>>> > > > >> > upcoming
>>> > > > >> > > > > Mirror
>>> > > > >> > > > > > > > Maker
>>> > > > >> > > > > > > > > > 2.0
>>> > > > >> > > > > > > > > > > >> (KIP-382) that already support properties
>>> > with
>>> > > > >> those
>>> > > > >> > > > > prefixes?
>>> > > > >> > > > > > > > Would
>>> > > > >> > > > > > > > > > it
>>> > > > >> > > > > > > > > > > be
>>> > > > >> > > > > > > > > > > >> possible for a user to configure MM2 with
>>> > those
>>> > > > >> > > properties
>>> > > > >> > > > > > > without
>>> > > > >> > > > > > > > > > them
>>> > > > >> > > > > > > > > > > >> being interpreted as Connect client
>>> > overrides,
>>> > > > >> without
>>> > > > >> > > > > > isolating
>>> > > > >> > > > > > > > MM2
>>> > > > >> > > > > > > > > > > onto
>>> > > > >> > > > > > > > > > > >> its own cluster and using the
>>> > > > >> > > > > > IgnoreConnectorClientConfigPolicy
>>> > > > >> > > > > > > > > > policy?
>>> > > > >> > > > > > > > > > > >> 2. Is the
>>> IgnoreConnectorClientConfigPolicy
>>> > > class
>>> > > > >> > > > necessary?
>>> > > > >> > > > > > The
>>> > > > >> > > > > > > > > > default
>>> > > > >> > > > > > > > > > > >> for the connector.client.config.policy
>>> > property
>>> > > > >> could
>>> > > > >> > > > simply
>>> > > > >> > > > > > be
>>> > > > >> > > > > > > > null
>>> > > > >> > > > > > > > > > > >> instead of a new policy that, as far as
>>> I can
>>> > > > tell,
>>> > > > >> > > isn't
>>> > > > >> > > > an
>>> > > > >> > > > > > > > actual
>>> > > > >> > > > > > > > > > > policy
>>> > > > >> > > > > > > > > > > >> in that its validate(...) method is never
>>> > > invoked
>>> > > > >> and
>>> > > > >> > > > > instead
>>> > > > >> > > > > > > > > > > represents a
>>> > > > >> > > > > > > > > > > >> special case to the Connect framework
>>> that
>>> > says
>>> > > > >> "Drop
>>> > > > >> > > all
>>> > > > >> > > > > > > > overrides
>>> > > > >> > > > > > > > > > and
>>> > > > >> > > > > > > > > > > >> never use me".
>>> > > > >> > > > > > > > > > > >> 3. The
>>> PrincipalConnectorClientConfigPolicy
>>> > > seems
>>> > > > >> > like a
>>> > > > >> > > > > > > specific
>>> > > > >> > > > > > > > > > > instance
>>> > > > >> > > > > > > > > > > >> of a more general use case: allow
>>> exactly a
>>> > > small
>>> > > > >> set
>>> > > > >> > of
>>> > > > >> > > > > > > overrides
>>> > > > >> > > > > > > > > and
>>> > > > >> > > > > > > > > > > no
>>> > > > >> > > > > > > > > > > >> others. Why not generalize here and
>>> create a
>>> > > > policy
>>> > > > >> > that
>>> > > > >> > > > > > > accepts a
>>> > > > >> > > > > > > > > > list
>>> > > > >> > > > > > > > > > > of
>>> > > > >> > > > > > > > > > > >> allowed overrides during configuration?
>>> > > > >> > > > > > > > > > > >>
>>> > > > >> > > > > > > > > > > >> Thanks again for the KIP.
>>> > > > >> > > > > > > > > > > >>
>>> > > > >> > > > > > > > > > > >> Cheers,
>>> > > > >> > > > > > > > > > > >>
>>> > > > >> > > > > > > > > > > >> Chris
>>> > > > >> > > > > > > > > > > >>
>>> > > > >> > > > > > > > > > > >> On Fri, Apr 19, 2019 at 2:53 PM Magesh
>>> > > > Nandakumar <
>>> > > > >> > > > > > > > > > mage...@confluent.io
>>> > > > >> > > > > > > > > > > >
>>> > > > >> > > > > > > > > > > >> wrote:
>>> > > > >> > > > > > > > > > > >>
>>> > > > >> > > > > > > > > > > >> > Hi all,
>>> > > > >> > > > > > > > > > > >> >
>>> > > > >> > > > > > > > > > > >> > I've posted "KIP-458: Connector Client
>>> > Config
>>> > > > >> > Override
>>> > > > >> > > > > > > Policy",
>>> > > > >> > > > > > > > > > which
>>> > > > >> > > > > > > > > > > >> > allows users to override the connector
>>> > client
>>> > > > >> > > > > configurations
>>> > > > >> > > > > > > > based
>>> > > > >> > > > > > > > > > on
>>> > > > >> > > > > > > > > > > a
>>> > > > >> > > > > > > > > > > >> > policy defined by the administrator.
>>> > > > >> > > > > > > > > > > >> >
>>> > > > >> > > > > > > > > > > >> > The KIP can be found at
>>> > > > >> > > > > > > > > > > >> >
>>> > > > >> > > > > > > > > > > >> >
>>> > > > >> > > > > > > > > > > >>
>>> > > > >> > > > > > > > > > >
>>> > > > >> > > > > > > > > >
>>> > > > >> > > > > > > > >
>>> > > > >> > > > > > > >
>>> > > > >> > > > > > >
>>> > > > >> > > > > >
>>> > > > >> > > > >
>>> > > > >> > > >
>>> > > > >> > >
>>> > > > >> >
>>> > > > >>
>>> > > >
>>> > >
>>> >
>>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-458%3A+Connector+Client+Config+Override+Policy
>>> > > > >> > > > > > > > > > > >> > .
>>> > > > >> > > > > > > > > > > >> >
>>> > > > >> > > > > > > > > > > >> > Looking forward for the discussion on
>>> the
>>> > KIP
>>> > > > and
>>> > > > >> > all
>>> > > > >> > > of
>>> > > > >> > > > > > your
>>> > > > >> > > > > > > > > > > thoughts &
>>> > > > >> > > > > > > > > > > >> > feedback on this enhancement to
>>> Connect.
>>> > > > >> > > > > > > > > > > >> >
>>> > > > >> > > > > > > > > > > >> > Thanks,
>>> > > > >> > > > > > > > > > > >> > Magesh
>>> > > > >> > > > > > > > > > > >> >
>>> > > > >> > > > > > > > > > > >>
>>> > > > >> > > > > > > > > > > >
>>> > > > >> > > > > > > > > > >
>>> > > > >> > > > > > > > > >
>>> > > > >> > > > > > > > >
>>> > > > >> > > > > > > >
>>> > > > >> > > > > > >
>>> > > > >> > > > > >
>>> > > > >> > > > >
>>> > > > >> > > >
>>> > > > >> > >
>>> > > > >> >
>>> > > > >>
>>> > > > >
>>> > > >
>>> > >
>>> >
>>>
>>

Reply via email to