Hi,

I've not received a reply from Gunnar since last month, so I'll pick
this KIP up.

Thanks,
Mickael




On Tue, Jun 18, 2024 at 6:01 PM Mickael Maison <mickael.mai...@gmail.com> wrote:
>
> Hi Gunnar,
>
> I think this KIP would be a great addition to Kafka Connect but it
> looks like it's been abandoned.
>
> Are you still interested in working on this? If you need some time or
> help, that's fine, just let us know.
> If not, no worries, I'm happy to pick it up if needed.
>
> Thanks,
> Mickael
>
> On Wed, Dec 22, 2021 at 11:21 AM Tom Bentley <tbent...@redhat.com> wrote:
> >
> > Hi Gunnar,
> >
> > Thanks for the KIP, especially the careful reasoning about compatibility. I
> > think this would be a useful improvement. I have a few observations, which
> > are all about how we effectively communicate the contract to implementers:
> >
> > 1. I think it would be good for the Javadoc to give a bit more of a hint
> > about what the validate(Map) method is supposed to do: At least call
> > ConfigDef.validate(Map) with the provided configs (for implementers that
> > can be achieved via super.validate()), and optionally apply extra
> > validation for constraints that ConfigDef (and ConfigDef.Validator) cannot
> > check. I think typically that would be where there's a dependency between
> > two config parameters, e.g. if 'foo' is present that 'bar' must be too, or
> > 'baz' and 'qux' cannot have the same value.
> > 2. Can the Javadoc give a bit more detail about the return value of these
> > new methods? I'm not sure that the implementer of a Transformation would
> > necessarily know how the Config returned from validate(Map) might be
> > "updated", or that updating ConfigValue's errorMessages is the right way to
> > report config-specific errors. The KIP should be clear on how we expect
> > implementers to report errors due to dependencies between multiple config
> > parameters (must they be tied to a config parameter, or should the method
> > throw, for example?). I think this is a bit awkward, actually, since the
> > ConfigInfo structure used for the JSON REST response doesn't seem to have a
> > nice way to represent errors which are not associated with a config
> > parameter.
> > 3. It might also be worth calling out that the expectation is that a
> > successful return from the new validate() method should imply that
> > configure(Map) will succeed (to do otherwise undermines the value of the
> > validate endpoint). This makes me wonder about implementers, who might
> > defensively program their configure(Map) method to implement the same
> > checks. Therefore the contract should make clear that the Connect runtime
> > guarantees that validate(Map) will be called before configure(Map).
> >
> > I don't really like the idea of implementing more-or-less the same default
> > multiple times. Since these Transformation, Predicate etc will have a
> > common contract wrt validate() and configure(), I wondered whether there
> > was benefit in a common interface which Transformation etc could extend.
> > It's a bit tricky because Connector and Converter are not Configurable.
> > This was the best I could manage:
> >
> > ```
> > interface ConfigValidatable {
> >     /**
> >      * Validate the given configuration values against the given
> > configuration definitions.
> >      * This method will be called prior to the invocation of any
> > initializer method, such as {@link Connector#initialize(ConnectorContext)},
> > or {@link Configurable#configure(Map)} and should report any errors in the
> > given configuration value using the errorMessages of the ConfigValues in
> > the returned Config. If the Config returned by this method has no errors
> > then the initializer method should not throw due to bad configuration.
> >      *
> >      * @param configDef the configuration definition, which may be null.
> >      * @param configs the provided configuration values.
> >      * @return The updated configuration information given the current
> > configuration values
> >      *
> >      * @since 3.2
> >      */
> >     default Config validate(ConfigDef configDef, Map<String, String>
> > configs) {
> >         List<ConfigValue> configValues = configDef.validate(smtConfigs);
> >         return new Config(configValues);
> >     }
> >
> > }
> > ```
> >
> > Note that the configDef is passed in, leaving it to the runtime to call
> > `thing.config()` to get the ConfigDef instance and validate whether it is
> > allowed to be null or not. The subinterfaces could override validate() to
> > define what the "initializer method" is in their case, and to indicate
> > whether configDef can actually be null.
> >
> > To be honest, I'm not really sure this is better, but I thought I'd suggest
> > it to see what others thought.
> >
> > Kind regards,
> >
> > Tom
> >
> > On Tue, Dec 21, 2021 at 6:46 PM Chris Egerton <chr...@confluent.io.invalid>
> > wrote:
> >
> > > Hi Gunnar,
> > >
> > > Thanks, this looks great. I'm ready to cast a non-binding on the vote
> > > thread when it comes.
> > >
> > > One small non-blocking nit: I like that you call out that the new
> > > validation steps will take place when a connector gets registered or
> > > updated. IMO this is important enough to be included in the "Public
> > > Interfaces" section as that type of preflight check is arguably more
> > > important than the PUT /connector-plugins/{name}/config/validate endpoint,
> > > when considering that use of the validation endpoint is strictly opt-in,
> > > but preflight checks for new connector configs are unavoidable (without
> > > resorting to devious hacks like publishing directly to the config topic).
> > > But this is really minor, I'm happy to +1 the KIP as-is.
> > >
> > > Cheers,
> > >
> > > Chris
> > >
> > > On Tue, Dec 21, 2021 at 8:43 AM Gunnar Morling
> > > <gunnar.morl...@googlemail.com.invalid> wrote:
> > >
> > > > Hey Chris,
> > > >
> > > > Thanks a lot for reviewing this KIP and your comments! Some more answers
> > > > inline.
> > > >
> > > > Am Di., 7. Dez. 2021 um 23:49 Uhr schrieb Chris Egerton
> > > > <chr...@confluent.io.invalid>:
> > > >
> > > > > Hi Gunnar,
> > > > >
> > > > > Thanks for the KIP! The section on backwards compatibility is
> > > especially
> > > > > impressive and was enjoyable to read.
> > > > >
> > > >
> > > > Excellent, that's great to hear!
> > > >
> > > > Overall I like the direction of the KIP (and in fact just ran into a
> > > > > situation yesterday where it would be valuable). I only have one major
> > > > > thought: could we add similar validate methods for the Converter and
> > > > > HeaderConverter interfaces? With KIP-769 [1], it looks like we'll have
> > > a
> > > > > new Converter::config method, so if that makes it through, it should
> > > be a
> > > > > matter of just adding the same methods to those interfaces as well
> > > > > (although we may want to be tolerant of null ConfigDef objects being
> > > > > returned from HeaderConverter::config since the Connect framework has
> > > not
> > > > > been enforcing this requirement to date).
> > > > >
> > > >
> > > > Yes, I think it's a good idea to expand the scope of the KIP to cover 
> > > > all
> > > > these contracts. I have updated the KIP document accordingly.
> > > >
> > > > >
> > > > > That aside, a few small nits:
> > > > >
> > > > > 1. The "This page is meant as a template" section can be removed :)
> > > > > 2. The "Current Status" can be updated to "Under Discussion"
> > > > > 3. Might want to add javadocs to the newly-proposed validate method
> > > (I'm
> > > > > assuming they'll largely mirror the ones for the existing
> > > > > Connector::validate method, but we may also want to add a {@since} tag
> > > or
> > > > > some other information on which versions of Connect will leverage the
> > > > > method).
> > > > >
> > > >
> > > > Done.
> > > >
> > > > I will try and create a PR for this work in January next year.
> > > >
> > > > All the best,
> > > >
> > > > --Gunnar
> > > >
> > > > [1] -
> > > > >
> > > > >
> > > >
> > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-769%3A+Connect+APIs+to+list+all+plugins+and+retrieve+their+configuration+definitions#KIP769:ConnectAPIstolistallpluginsandretrievetheirconfigurationdefinitions-PublicInterfaces
> > > > > (section labeled "Converter interface"
> > > > >
> > > > > Cheers,
> > > > >
> > > > > Chris
> > > > >
> > > > > On Wed, Nov 24, 2021 at 11:32 AM Gunnar Morling
> > > > > <gunnar.morl...@googlemail.com.invalid> wrote:
> > > > >
> > > > > > Hey all,
> > > > > >
> > > > > > I would like to propose a KIP for Apache Kafka Connect which adds
> > > > > > validation support for SMT-related configuration options:
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > >
> > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-802%3A+Validation+Support+for+Kafka+Connect+SMT+Options
> > > > > >
> > > > > > This feature allows users to make sure an SMT is configured 
> > > > > > correctly
> > > > > > before actually putting a connector with that SMT in place.
> > > > > >
> > > > > > Any feedback, comments, and suggestions around this proposal will
> > > > > > be greatly appreciated.
> > > > > >
> > > > > > Thanks,
> > > > > >
> > > > > > --Gunnar
> > > > > >
> > > > >
> > > >
> > >

Reply via email to