Hi Greg,

I have started a vote thread and added it to the doc. Thanks for all your
help on this. Looking forward to this implementation.

Regards
Snehashis


On Wed, Sep 25, 2024 at 10:38 PM Greg Harris <greg.har...@aiven.io.invalid>
wrote:

> Hey Snehashis,
>
> I updated the KIP to remove some stale mentions of the soft version
> requirements, and the crashing workers on startup. I also added more detail
> to the REST API.
>
> IMHO we're ready to move to voting, so please open the thread if you also
> believe it is ready.
>
> Thanks!
>
> Greg
>
> On Fri, Aug 23, 2024 at 7:21 AM Snehashis <snehashisp1...@gmail.com>
> wrote:
>
> > Hi Greg,
> >
> > Thanks for the clarification!
> >
> > I agree with not breaking compatibility and opting to not fail worker
> > startup by validating converter versions.
> >
> > Let's also go with the unclosed variation of the requirements as a hard
> > requirement i.e. 3.8 instead of [3.8]. I have updated the KIP and added a
> > line there highlighting this.
> >
> > Regards
> > Snehashis
> >
> > On Wed, Aug 21, 2024 at 9:24 PM Greg Harris <greg.har...@aiven.io.invalid
> >
> > wrote:
> >
> > > Hey Snehashis,
> > >
> > > Thanks for your reply!
> > >
> > > > Deviating
> > > > it from the spec seems unnecessary if we document it accordingly,
> > however
> > > > It's probably less intuitive and can lead to confusion. I would just
> > keep
> > > > it as is but making it simpler is also fine.
> > >
> > > It sounds like you don't have a strong opinion on this, similar to me.
> > > Chris had a more firm stance on this. I think that you're right that we
> > > could document this, but it would still be the single biggest foot-gun
> of
> > > the feature, and I think we would regret it later.
> > >
> > > > Also for converter versions
> > > > specified as part of the worker configs I believe we concluded that
> > this
> > > > step need not be fatal during worker startup if the required version
> is
> > > not
> > > > found but LMK if otherwise.
> > >
> > > Re-reading our earlier discussion, I think Chris had a strong opinion
> > that
> > > we shouldn't fail on startup because it would be inconsistent. I made
> an
> > > offhand comment that if this was released in 4.0, we could change it so
> > > both invalid classes and invalid versions cause the worker to fail,
> which
> > > would be inconsistent but backwards incompatible.
> > > I think in the interest of not breaking compatibility needlessly and
> > > keeping consistent behavior, we should ignore invalid versions in the
> > > worker config.
> > >
> > > Thanks,
> > > Greg
> > >
> > > On Wed, Aug 21, 2024 at 1:58 AM Snehashis <snehashisp1...@gmail.com>
> > > wrote:
> > >
> > > > Hi Greg,
> > > >
> > > > No issues, I have been caught up in a few things myself.
> > > >
> > > > I have added the points we discussed. In addition, I have added
> config
> > > > providers as part of the set of plugins which will not support
> > > versioning,
> > > > for the same reason as to why it is not supported in the other
> plugins
> > > that
> > > > are initiated on startup.
> > > >
> > > > On whether to deviate from maven versioning for hard requirements as
> > > > discussed between you and Chris.Whether to simply simply specify
> > > > connector.version=1.1.1 as a hard requirement instead of [1.1.1].
> > > Deviating
> > > > it from the spec seems unnecessary if we document it accordingly,
> > however
> > > > It's probably less intuitive and can lead to confusion. I would just
> > keep
> > > > it as is but making it simpler is also fine. Also for converter
> > versions
> > > > specified as part of the worker configs I believe we concluded that
> > this
> > > > step need not be fatal during worker startup if the required version
> is
> > > not
> > > > found but LMK if otherwise.
> > > >
> > > > Regards
> > > > Snehashis
> > > >
> > > >
> > > >
> > > > On Mon, Aug 19, 2024 at 9:24 PM Greg Harris
> > <greg.har...@aiven.io.invalid
> > > >
> > > > wrote:
> > > >
> > > > > Hi Snehashis,
> > > > >
> > > > > Sorry for the late reply.
> > > > >
> > > > > > Heterogeneous dependencies in a multi cluster deployment is
> highly
> > > > > discouraged
> > > > >
> > > > > Right, this remains unchanged in this KIP.
> > > > >
> > > > > > Let's add the version information for both connector and tasks in
> > the
> > > > > connector status itself
> > > > > > once we add these two additions to the KIP (LMK if you want me to
> > > take
> > > > > that up).
> > > > >
> > > > > Could you make these additions?
> > > > >
> > > > > I'm interested to see if we can include this in 4.0.
> > > > >
> > > > > Thanks,
> > > > > Greg
> > > > >
> > > > > On Tue, Jul 2, 2024 at 2:52 AM Snehashis <snehashisp1...@gmail.com
> >
> > > > wrote:
> > > > >
> > > > > > Hi Greg,
> > > > > >
> > > > > > Thanks for taking a look at this, to conclude on the two points
> > > above.
> > > > > >
> > > > > > 1. I'm okay with the status quo of leaving the dependency
> > management
> > > of
> > > > > > plugins to systems outside of the connect runtime as it is now.
> > Given
> > > > > that
> > > > > > the dependencies are homogenous across a connect cluster, it
> should
> > > > > ensure
> > > > > > that task and connector versions are uniform across a deployment,
> > > after
> > > > > it
> > > > > > has stabilised post an upgrade operation. Heterogeneous
> > dependencies
> > > > in a
> > > > > > multi cluster deployment is highly discouraged and we should
> point
> > > out
> > > > > this
> > > > > > can lead to inconsistent behaviour with connectors and even
> > > > validations.
> > > > > >
> > > > > > 2. Let's add the version information for both connector and tasks
> > in
> > > > the
> > > > > > connector status itself, I don't see another endpoint being
> > required
> > > > for
> > > > > > this.
> > > > > >
> > > > > > I don't have any further points, so if you are okay we can put
> this
> > > to
> > > > a
> > > > > > vote, once we add these two additions to the KIP (LMK if you want
> > me
> > > to
> > > > > > take that up).
> > > > > >
> > > > > > Regards
> > > > > > Snehashis
> > > > > >
> > > > > > On Tue, Jul 2, 2024 at 12:08 AM Greg Harris
> > > > <greg.har...@aiven.io.invalid
> > > > > >
> > > > > > wrote:
> > > > > >
> > > > > > > Hey Snehashis,
> > > > > > >
> > > > > > > Sorry for the late reply, and thanks for helping close out the
> > > > > > discussion.
> > > > > > >
> > > > > > > > Note that if my assumptions are correct then
> > > > > > > > this can happen with the existing framework as well, or is
> > there
> > > > some
> > > > > > > > safeguard from this happening?
> > > > > > >
> > > > > > > Currently, if a cluster has a heterogeneous plugin
> installation,
> > > each
> > > > > > > worker may have a different definition of "latest". If you call
> > to
> > > > > > > validate a configuration, it will validate against whatever
> > latest
> > > > > > version
> > > > > > > is present locally.
> > > > > > > With this KIP, that behavior will continue when the version
> isn't
> > > > > > > specified, when the version is a soft requirement, or when the
> > > > version
> > > > > > is a
> > > > > > > range. For users that do not want to tolerate their tasks
> having
> > > > > > > heterogeneous versions, the single-version hard requirements
> are
> > > > there,
> > > > > > but
> > > > > > > come at the cost of micromanagement of upgrades.
> > > > > > > Perhaps there is some room in the future for a connector
> > configured
> > > > > with
> > > > > > a
> > > > > > > range to "pin" the version that all of its tasks should use. Or
> > > > > > > version-aware-scheduling can schedule connectors and tasks to
> > > workers
> > > > > > that
> > > > > > > will resolve the same versions. The important primitive is
> being
> > > able
> > > > > to
> > > > > > > enforce which version is being used, everything else looks more
> > > like
> > > > a
> > > > > > > convenience feature to me.
> > > > > > >
> > > > > > > > So far, we could have pointed to the
> > > > > > > > misconfigured cluster configuration and somewhat differ this
> > > > problem
> > > > > to
> > > > > > > > something outside of connect runtime.
> > > > > > >
> > > > > > > I think this will still be the case. Even with this feature, we
> > > will
> > > > > > still
> > > > > > > recommend homogeneous clusters that have the same set of
> plugins
> > > > > > installed
> > > > > > > on every worker. Version-aware scheduling is a rejected
> > > alternative,
> > > > > and
> > > > > > > your example for performing validation requests on an arbitrary
> > > > worker
> > > > > > is a
> > > > > > > great example of a complication for heterogeneous clusters that
> > > we're
> > > > > not
> > > > > > > ready to solve.
> > > > > > >
> > > > > > > > We can introduce
> > > > > > > > a new path under this for version
> > > > > (/connector/connector-name/version),
> > > > > > > but
> > > > > > > > perhaps adding this as part of the status is a valid
> > alternative.
> > > > > > >
> > > > > > > I think either is fine. Adding a new field to the existing
> > > endpoints
> > > > is
> > > > > > > fine, and shouldn't require special compatibility such as a
> query
> > > > > > > parameter.
> > > > > > >
> > > > > > > > Also, to go further I think
> > > > > > > > version information for tasks could also be available,
> > > > > > >
> > > > > > > I completely agree. The version of each connector and each task
> > > > should
> > > > > be
> > > > > > > visible individually, since they may be different during a
> > rolling
> > > > > > upgrade.
> > > > > > >
> > > > > > > Thanks!
> > > > > > > Greg
> > > > > > >
> > > > > > > On Tue, Jun 18, 2024 at 5:18 AM Snehashis <
> > > snehashisp1...@gmail.com>
> > > > > > > wrote:
> > > > > > >
> > > > > > > > Hi Greg, Chris
> > > > > > > >
> > > > > > > > Thanks for the in-depth discussion, I have a couple of
> > discussion
> > > > > > points
> > > > > > > > and would like your thoughts on this.
> > > > > > > >
> > > > > > > > 1) One concern I have with the new addition of 'soft' and
> > 'hard'
> > > > > > version
> > > > > > > > requirements is that there could be a mismatch in the plugin
> > > > version
> > > > > > that
> > > > > > > > two different tasks are running, if a soft requirement is
> > > provided
> > > > > and
> > > > > > > the
> > > > > > > > nodes a multi cluster deployment are not in sync w.r.t the
> > plugin
> > > > > > > versions
> > > > > > > > that they are configured with. Note that if my assumptions
> are
> > > > > correct
> > > > > > > then
> > > > > > > > this can happen with the existing framework as well, or is
> > there
> > > > some
> > > > > > > > safeguard from this happening? So far, we could have pointed
> to
> > > the
> > > > > > > > misconfigured cluster configuration and somewhat differ this
> > > > problem
> > > > > to
> > > > > > > > something outside of connect runtime. With this feature in
> > place
> > > > > > perhaps
> > > > > > > > the expectation is more on connect to not be running with
> such
> > > > > > > > inconsistency, especially if a connector version is
> specified.
> > > This
> > > > > is
> > > > > > > also
> > > > > > > > a problem with validation if different cluster have different
> > > > > > > > configurations, as IIRC validations are local to the worker
> > which
> > > > > > > receives
> > > > > > > > the rest call for validate. So, we might be validating with a
> > > > certain
> > > > > > > > version which is different from the one that will be used to
> > > create
> > > > > > > > connector and tasks. Again, this is likely how the current
> > state
> > > > is,
> > > > > > but
> > > > > > > > perhaps such inconsistencies warrant a deeper look with the
> > > > addition
> > > > > of
> > > > > > > > this feature. The problems associated with them can be
> somewhat
> > > > > > insidious
> > > > > > > > and hard to diagnose.
> > > > > > > >
> > > > > > > > 2) There was some discussion on the need for a new REST
> > endpoint
> > > to
> > > > > > > provide
> > > > > > > > information on the versions of running connectors, and I
> think
> > > > adding
> > > > > > > this
> > > > > > > > information via REST is a valuable addition. The way I see it
> > the
> > > > > > version
> > > > > > > > is an intrinsic property of an instance of a running
> connector
> > > and
> > > > > > hence
> > > > > > > > this should be part of the set of APIs under
> > > > > > /connector/<connector-name>
> > > > > > > > (also the /connectors API should also have this information
> as
> > it
> > > > is
> > > > > an
> > > > > > > > amalgamation of all the individual connector information). We
> > can
> > > > > > > introduce
> > > > > > > > a new path under this for version
> > > > > (/connector/connector-name/version),
> > > > > > > but
> > > > > > > > perhaps adding this as part of the status is a valid
> > alternative.
> > > > > This
> > > > > > is
> > > > > > > > mentioned as a rejected alternative right now. Also, to go
> > > further
> > > > I
> > > > > > > think
> > > > > > > > version information for tasks could also be available,
> > especially
> > > > if
> > > > > we
> > > > > > > > choose to not address the pitfalls discussed in my point 1),
> > this
> > > > > will
> > > > > > > > at-least provide admins a quick and easy way to determine if
> > such
> > > > and
> > > > > > > > inconsistent state exist in any of the connectors.
> > > > > > > >
> > > > > > > > Thanks again for reviving my original KIP and working to
> > improve
> > > > it.
> > > > > > > > Looking forward to your thoughts on the points mentioned
> above.
> > > > > > > > Regards
> > > > > > > > Snehashis
> > > > > > > >
> > > > > > > >
> > > > > > > > On Wed, May 29, 2024 at 9:59 PM Chris Egerton
> > > > > <chr...@aiven.io.invalid
> > > > > > >
> > > > > > > > wrote:
> > > > > > > >
> > > > > > > > > Hi Greg,
> > > > > > > > >
> > > > > > > > > First, an apology! I mistakenly assumed that each plugin
> > > appeared
> > > > > > only
> > > > > > > > once
> > > > > > > > > in the responses from GET
> > > > /connector-plugins?connectorsOnly=false.
> > > > > > > Thank
> > > > > > > > > you for correcting me and pointing out that all versions of
> > > each
> > > > > > plugin
> > > > > > > > > appear in that response, which does indeed satisfy my
> desire
> > > for
> > > > > > users
> > > > > > > to
> > > > > > > > > discover this information in at most two REST requests (and
> > in
> > > > > fact,
> > > > > > > does
> > > > > > > > > it in only one)!
> > > > > > > > >
> > > > > > > > > And secondly, with the revelation about recommenders, I
> agree
> > > > that
> > > > > > it's
> > > > > > > > > best to leave the "version" property out of the lists of
> > > > properties
> > > > > > > > > returned from the GET /connector-plugins/<plugin>/config
> > > > endpoint.
> > > > > > > > >
> > > > > > > > > With those two points settled, I think the only unresolved
> > item
> > > > is
> > > > > > the
> > > > > > > > > small change to version parsing added to the KIP (where raw
> > > > version
> > > > > > > > numbers
> > > > > > > > > are treated as an exact match, instead of a best-effort
> match
> > > > with
> > > > > a
> > > > > > > > > fallback on the default version). If the KIP is updated
> with
> > > that
> > > > > > then
> > > > > > > > I'd
> > > > > > > > > be ready to vote on it.
> > > > > > > > >
> > > > > > > > > Cheers,
> > > > > > > > >
> > > > > > > > > Chris
> > > > > > > > >
> > > > > > > > > On Wed, May 29, 2024 at 12:00 PM Greg Harris
> > > > > > > > <greg.har...@aiven.io.invalid
> > > > > > > > > >
> > > > > > > > > wrote:
> > > > > > > > >
> > > > > > > > > > Hey Chris,
> > > > > > > > > >
> > > > > > > > > > Thanks for your thoughts.
> > > > > > > > > >
> > > > > > > > > > > Won't it still only expose the
> > > > > > > > > > > latest version for each plugin, instead of the range of
> > > > > versions
> > > > > > > > > > available?
> > > > > > > > > >
> > > > > > > > > > Here is a snippet of the current output of the GET
> > > > > > > > > > /connector-plugins?connectorsOnly=false endpoint, after I
> > > > > installed
> > > > > > > two
> > > > > > > > > > versions of the debezium PostgresConnector:
> > > > > > > > > >
> > > > > > > > > >   {
> > > > > > > > > >     "class":
> > > > > "io.debezium.connector.postgresql.PostgresConnector",
> > > > > > > > > >     "type": "source",
> > > > > > > > > >     "version": "2.0.1.Final"
> > > > > > > > > >   },
> > > > > > > > > >   {
> > > > > > > > > >     "class":
> > > > > "io.debezium.connector.postgresql.PostgresConnector",
> > > > > > > > > >     "type": "source",
> > > > > > > > > >     "version": "2.6.1.Final"
> > > > > > > > > >   },
> > > > > > > > > >
> > > > > > > > > > I think this satisfies your requirement to learn about
> all
> > > > > plugins
> > > > > > > and
> > > > > > > > > all
> > > > > > > > > > versions in two or fewer REST calls.
> > > > > > > > > >
> > > > > > > > > > I tried to get an example of the output of `/config` by
> > > > > hardcoding
> > > > > > > the
> > > > > > > > > > Recommender, and realized that Recommenders aren't
> executed
> > > on
> > > > > the
> > > > > > > > > > `/config` endpoint at all: only during validation, when a
> > > > > > > configuration
> > > > > > > > > is
> > > > > > > > > > actually present.
> > > > > > > > > > And this led me to discover that the `/config` endpoint
> > > > returns a
> > > > > > > > > > List<ConfigKeyInfo>, and ConfigKeyInfo does not contain a
> > > > > > > > > recommendedValues
> > > > > > > > > > field. The ConfigValue field is the object which contains
> > > > > > > > > > recommendedValues, and it is only generated during
> > > validation.
> > > > > > > > > > I think it's out of scope to start calling recommenders
> on
> > > > empty
> > > > > > > > configs
> > > > > > > > > > that might throw exceptions, changing the existing REST
> > > > entities,
> > > > > > or
> > > > > > > > > > changing the core ConfigDef implementation.
> > > > > > > > > > Someone could add this functionality later, I don't think
> > > it's
> > > > > > > > necessary
> > > > > > > > > > here.
> > > > > > > > > >
> > > > > > > > > > Then the question is: should "version" without
> recommenders
> > > > > appear
> > > > > > in
> > > > > > > > > > non-connector plugins? I think I'd rather be consistent
> > with
> > > > > > > > "predicate"
> > > > > > > > > > and "negate" on release, and let a later improvement add
> > > them.
> > > > > > > > > >
> > > > > > > > > > Thanks,
> > > > > > > > > > Greg
> > > > > > > > > >
> > > > > > > > > > On Wed, May 29, 2024 at 8:06 AM Chris Egerton
> > > > > > > <chr...@aiven.io.invalid
> > > > > > > > >
> > > > > > > > > > wrote:
> > > > > > > > > >
> > > > > > > > > > > Hi Greg,
> > > > > > > > > > >
> > > > > > > > > > > I'm confused about the behavior for GET
> > > > > > > > > > > /connector-plugins?connectorsOnly=false. Won't it still
> > > only
> > > > > > expose
> > > > > > > > the
> > > > > > > > > > > latest version for each plugin, instead of the range of
> > > > > versions
> > > > > > > > > > available?
> > > > > > > > > > >
> > > > > > > > > > > I'm hoping we can provide a flow where people need at
> > most
> > > > two
> > > > > > REST
> > > > > > > > > calls
> > > > > > > > > > > to discover 1) the complete set of plugins available on
> > the
> > > > > > worker
> > > > > > > > > (which
> > > > > > > > > > > is already possible with the endpoint under discussion)
> > and
> > > > 2)
> > > > > > the
> > > > > > > > set
> > > > > > > > > of
> > > > > > > > > > > versions available for a specific plugin on the worker
> > > (which
> > > > > > > doesn't
> > > > > > > > > > > appear to be possible, at least for some plugin types).
> > > This
> > > > > > > wouldn't
> > > > > > > > > > > require any out-of-band knowledge and would be valuable
> > for
> > > > > > > connector
> > > > > > > > > > users
> > > > > > > > > > > (who may want to, for example, know what their options
> > are
> > > > when
> > > > > > > > > > considering
> > > > > > > > > > > a plugin upgrade) and cluster administrators (who could
> > use
> > > > it
> > > > > > as a
> > > > > > > > > > sanity
> > > > > > > > > > > check for the setup of their Kafka Connect clusters
> > without
> > > > > > having
> > > > > > > to
> > > > > > > > > > pore
> > > > > > > > > > > over log files).
> > > > > > > > > > >
> > > > > > > > > > > As far as modifying the content of the GET
> > > > > > > > > > > /connector-plugins/<plugin>/config endpoint to include
> a
> > > > > > "version"
> > > > > > > > > > property
> > > > > > > > > > > goes, I think your point about returning that property
> > from
> > > > > > > requests
> > > > > > > > to
> > > > > > > > > > > that endpoint that include a version query parameter is
> > > > > salient,
> > > > > > > but
> > > > > > > > it
> > > > > > > > > > > also unfortunately applies to all types of plugin. I
> > don't
> > > > > think
> > > > > > it
> > > > > > > > > > should
> > > > > > > > > > > completely disqualify that option. I also wasn't
> > imagining
> > > > > adding
> > > > > > > > > > anything
> > > > > > > > > > > besides that single property to that endpoint, so no
> new
> > > > > > > "predicate"
> > > > > > > > > > > property for SMTs, no new "negate" property for
> > predicates,
> > > > and
> > > > > > no
> > > > > > > > new
> > > > > > > > > > > "type" property for either. I'm not necessarily opposed
> > to
> > > > > adding
> > > > > > > > > those,
> > > > > > > > > > > but it can be done without being pulled into the scope
> of
> > > > this
> > > > > > KIP.
> > > > > > > > > > >
> > > > > > > > > > > So to summarize how I imagine people might use the REST
> > API
> > > > > after
> > > > > > > > this
> > > > > > > > > > KIP:
> > > > > > > > > > >
> > > > > > > > > > > 1. Discover the set of plugins on the worker via GET
> > > > > > > > > > > /connector-plugins?connectorsOnly=false
> > > > > > > > > > > 2. For any of those plugins, discover the set of
> > available
> > > > > > versions
> > > > > > > > by
> > > > > > > > > > > examining the recommended values for the "version"
> > property
> > > > > after
> > > > > > > > > hitting
> > > > > > > > > > > the GET GET /connector-plugins/<plugin>/config endpoint
> > > > > > > > > > >
> > > > > > > > > > > I don't think this is necessarily optimal since
> plucking
> > > the
> > > > > > > > "version"
> > > > > > > > > > > property out of the response from that endpoint might
> be
> > a
> > > > PITA
> > > > > > for
> > > > > > > > ad
> > > > > > > > > > hoc
> > > > > > > > > > > queries via, e.g., curl, but I think it'd be enough for
> > > this
> > > > > KIP.
> > > > > > > > Still
> > > > > > > > > > > open to other options though, and if I've misunderstood
> > > > > anything
> > > > > > in
> > > > > > > > the
> > > > > > > > > > > proposal, please let me know!
> > > > > > > > > > >
> > > > > > > > > > > Cheers,
> > > > > > > > > > >
> > > > > > > > > > > Chris
> > > > > > > > > > >
> > > > > > > > > > > On Wed, May 22, 2024 at 4:05 PM Greg Harris
> > > > > > > > > <greg.har...@aiven.io.invalid
> > > > > > > > > > >
> > > > > > > > > > > wrote:
> > > > > > > > > > >
> > > > > > > > > > > > Hey Chris,
> > > > > > > > > > > >
> > > > > > > > > > > > Thanks for your comments, and I'm glad that it seems
> > like
> > > > > we're
> > > > > > > > > > > > aligning on the vision here.
> > > > > > > > > > > >
> > > > > > > > > > > > > An
> > > > > > > > > > > > > alternative could be to change existing behavior to
> > > fail
> > > > > fast
> > > > > > > on
> > > > > > > > > any
> > > > > > > > > > > > > invalid default converter configuration instead of
> > just
> > > > for
> > > > > > > > invalid
> > > > > > > > > > > > > versions
> > > > > > > > > > > >
> > > > > > > > > > > > I suppose if this is landing in 4.0, we have the
> > > > opportunity
> > > > > to
> > > > > > > > break
> > > > > > > > > > > > compatibility and strictly validate the worker class
> > > > configs,
> > > > > > and
> > > > > > > > > > > > could have a new consistent behavior instead of
> > > > inconsistent
> > > > > > but
> > > > > > > > > > > > backwards-compatible behavior.
> > > > > > > > > > > >
> > > > > > > > > > > > > no other part of the KIP requires this change.
> > > > > > > > > > > >
> > > > > > > > > > > > This is correct, and a compelling argument. I'm fine
> > > > leaving
> > > > > > the
> > > > > > > > > > > > strict worker validation off of this configuration to
> > > > > > potentially
> > > > > > > > be
> > > > > > > > > > > > added later. If a KIP was raised to perform strict
> > > > validation
> > > > > > of
> > > > > > > > the
> > > > > > > > > > > > worker config, it would include the version config,
> and
> > > can
> > > > > > > address
> > > > > > > > > > > > backwards compatibility for both configs together.
> > > > > > > > > > > >
> > > > > > > > > > > > > RE exposing the version property in the
> > > > > > > > > > > > /connector-plugins/<plugin>/config
> > > > > > > > > > > > > endpoint, the behavior is inconsistent across
> plugin
> > > > types.
> > > > > > > > > > > >
> > > > > > > > > > > > Yes it is, and that started in a bugfix, once people
> > > > started
> > > > > > > using
> > > > > > > > > > > > this endpoint:
> > > > > > https://issues.apache.org/jira/browse/KAFKA-14843
> > > > > > > > . I
> > > > > > > > > > > > wasn't planning on converging the behavior in this
> KIP,
> > > as
> > > > I
> > > > > > > > > > > > considered it out-of-scope, and was going to follow
> the
> > > > > current
> > > > > > > > > > > > behavior. To summarize:
> > > > > > > > > > > >
> > > > > > > > > > > > GET /connector-plugins/<connector>/config will emit:
> > > > > > > > > > > > * connector.class (already implemented)
> > > > > > > > > > > > * connector.version (new)
> > > > > > > > > > > > * key.converter (already implemented)
> > > > > > > > > > > > * key.converter.version (new)
> > > > > > > > > > > > * value.converter (already implemented)
> > > > > > > > > > > > * value.converter.version (new)
> > > > > > > > > > > > * header.converter (already implemented)
> > > > > > > > > > > > * header.converter.version (new)
> > > > > > > > > > > > But will NOT emit:
> > > > > > > > > > > > * transforms.<alias>.type
> > > > > > > > > > > > * transforms.<alias>.version
> > > > > > > > > > > > * transforms.<alias>.predicate
> > > > > > > > > > > > * predicates.<alias>.type
> > > > > > > > > > > > * predicates.<alias>.version
> > > > > > > > > > > > * predicates.<alias>.negate
> > > > > > > > > > > >
> > > > > > > > > > > > GET /connector-plugins/<converter>/config will NOT
> > emit:
> > > > > > > > > > > > * "" (there's not even a ".class" prefix!)
> > > > > > > > > > > > * version
> > > > > > > > > > > >
> > > > > > > > > > > > GET /connector-plugins/<transform>/config will NOT
> > emit:
> > > > > > > > > > > > * type
> > > > > > > > > > > > * version
> > > > > > > > > > > > * predicate
> > > > > > > > > > > >
> > > > > > > > > > > > GET /connector-plugins/<predicate>/config will NOT
> > emit:
> > > > > > > > > > > > * type
> > > > > > > > > > > > * version
> > > > > > > > > > > > * negate
> > > > > > > > > > > >
> > > > > > > > > > > > Do you want the converter, transform, and predicate
> > > > endpoints
> > > > > > > > > changed?
> > > > > > > > > > > > Do you want just "version", or do you want all of the
> > > > > prefixed
> > > > > > > > > configs
> > > > > > > > > > > > including "type", "predicate" and "negate"? How would
> > you
> > > > > want
> > > > > > to
> > > > > > > > > > > > handle the converters?
> > > > > > > > > > > > And when I say the configs are "not part of the
> plugin
> > > > config
> > > > > > > > itself"
> > > > > > > > > > > > I mean that saying that GET
> > > > > > > > > > > > /connector-plugins/Flatten$Key/config?version=3.8.0
> > has a
> > > > > > > "version"
> > > > > > > > > > > > config that must be "3.8.0" is a little bit nonsense,
> > as
> > > > the
> > > > > > > > version
> > > > > > > > > > > > is already specified.
> > > > > > > > > > > >
> > > > > > > > > > > > > IMO
> > > > > > > > > > > > > it's worth including this information somewhere
> > > directly
> > > > > > > > accessible
> > > > > > > > > > > > without
> > > > > > > > > > > > > having to provide a full connector config. FWIW I'd
> > be
> > > > fine
> > > > > > > with
> > > > > > > > > GET
> > > > > > > > > > > > > /connector-plugins/<plugin>/versions as a
> first-class
> > > > > > endpoint
> > > > > > > > > > > >
> > > > > > > > > > > > You don't have to provide a configuration to call GET
> > > > > > > > > > > > /connector-plugins?connectorsOnly=false , is that
> > > endpoint
> > > > > not
> > > > > > > > close
> > > > > > > > > > > > enough to what you have in mind? See also the
> Rejected
> > > > > > > Alternative
> > > > > > > > > > > > "Adding new REST API endpoints"
> > > > > > > > > > > >
> > > > > > > > > > > > If you're calling
> > /connector-plugins/<transform>/config,
> > > > you
> > > > > > know
> > > > > > > > the
> > > > > > > > > > > > name of a plugin right? That either comes from
> > > out-of-band
> > > > > > > > knowledge,
> > > > > > > > > > > > validating a connector config, or calling GET
> > > > > > > > > > > > /connector-plugins?connectorsOnly=false.
> > > > > > > > > > > > * If you have out-of-band knowledge of plugin
> classes,
> > > > > perhaps
> > > > > > > you
> > > > > > > > > > > > have out-of-band knowledge of versions too.
> > > > > > > > > > > > * If you've just validated a connector config, there
> > > should
> > > > > be
> > > > > > an
> > > > > > > > > > > > accompanying "version" field there with an accurate
> > > default
> > > > > > value
> > > > > > > > and
> > > > > > > > > > > > recommenders.
> > > > > > > > > > > > * If you've called GET
> > > > > /connector-plugins?connectorsOnly=false,
> > > > > > > > that
> > > > > > > > > > > > endpoint includes version information.
> > > > > > > > > > > >
> > > > > > > > > > > > Thanks,
> > > > > > > > > > > > Greg
> > > > > > > > > > > >
> > > > > > > > > > > > On Wed, May 22, 2024 at 11:05 AM Chris Egerton
> > > > > > > > > <chr...@aiven.io.invalid
> > > > > > > > > > >
> > > > > > > > > > > > wrote:
> > > > > > > > > > > > >
> > > > > > > > > > > > > Hi Greg,
> > > > > > > > > > > > >
> > > > > > > > > > > > > Hope you had a nice weekend! Gonna try to keep
> things
> > > > > > concise.
> > > > > > > > > > > > >
> > > > > > > > > > > > > Concluded points:
> > > > > > > > > > > > >
> > > > > > > > > > > > > RE version recommenders, I agree it's likely that
> > > > > > programmatic
> > > > > > > > UIs
> > > > > > > > > > will
> > > > > > > > > > > > > already be able to handle dynamic configuration
> > > > > definitions,
> > > > > > > and
> > > > > > > > > the
> > > > > > > > > > > > detail
> > > > > > > > > > > > > about SMTs is a great point. I still anticipate
> some
> > > > > > > awkwardness
> > > > > > > > > with
> > > > > > > > > > > > > connector versions, though: if the latest version
> > > > supports
> > > > > > some
> > > > > > > > new
> > > > > > > > > > > > > properties, then a user switches to an earlier
> > > version, a
> > > > > UI
> > > > > > > may
> > > > > > > > > > > respond
> > > > > > > > > > > > by
> > > > > > > > > > > > > wiping values for these properties. I guess we can
> > bite
> > > > the
> > > > > > > > bullet,
> > > > > > > > > > > > though.
> > > > > > > > > > > > >
> > > > > > > > > > > > > RE double-dinging during preflight validation for
> > > invalid
> > > > > > > > > versions, I
> > > > > > > > > > > > like
> > > > > > > > > > > > > the analogy with login credentials. I'm convinced
> > that
> > > > the
> > > > > > > > proposal
> > > > > > > > > > in
> > > > > > > > > > > > the
> > > > > > > > > > > > > KIP is best 👍
> > > > > > > > > > > > >
> > > > > > > > > > > > > Continued points:
> > > > > > > > > > > > >
> > > > > > > > > > > > > RE failing on worker startup, sorry, I should be
> > > clearer:
> > > > > > there
> > > > > > > > is
> > > > > > > > > no
> > > > > > > > > > > > _new_
> > > > > > > > > > > > > justification for it that doesn't also apply to
> > > existing
> > > > > > > > behavior.
> > > > > > > > > We
> > > > > > > > > > > > > shouldn't diverge from existing behavior solely for
> > > this
> > > > > new
> > > > > > > > case.
> > > > > > > > > An
> > > > > > > > > > > > > alternative could be to change existing behavior to
> > > fail
> > > > > fast
> > > > > > > on
> > > > > > > > > any
> > > > > > > > > > > > > invalid default converter configuration instead of
> > just
> > > > for
> > > > > > > > invalid
> > > > > > > > > > > > > versions, but I'd vote to just stick to existing
> > > behavior
> > > > > and
> > > > > > > not
> > > > > > > > > > > > > complicate things, especially since no other part
> of
> > > the
> > > > > KIP
> > > > > > > > > requires
> > > > > > > > > > > > this
> > > > > > > > > > > > > change.
> > > > > > > > > > > > >
> > > > > > > > > > > > > RE exposing the version property in the
> > > > > > > > > > > > /connector-plugins/<plugin>/config
> > > > > > > > > > > > > endpoint, the behavior is inconsistent across
> plugin
> > > > types.
> > > > > > > > Hitting
> > > > > > > > > > the
> > > > > > > > > > > > > endpoint for the FileStreamSinkConnector on version
> > > 3.7.0
> > > > > > > yields
> > > > > > > > a
> > > > > > > > > > > > response
> > > > > > > > > > > > > that includes, among other things, the "topics",
> > > > > > > "topics.regex",
> > > > > > > > > and
> > > > > > > > > > > > > "errors.tolerance" properties. I see that we don't
> do
> > > > this
> > > > > > > > > everywhere
> > > > > > > > > > > > (the
> > > > > > > > > > > > > examples you cite for SMT and converter properties
> > are
> > > > > > > accurate),
> > > > > > > > > but
> > > > > > > > > > > IMO
> > > > > > > > > > > > > it's worth including this information somewhere
> > > directly
> > > > > > > > accessible
> > > > > > > > > > > > without
> > > > > > > > > > > > > having to provide a full connector config. FWIW I'd
> > be
> > > > fine
> > > > > > > with
> > > > > > > > > GET
> > > > > > > > > > > > > /connector-plugins/<plugin>/versions as a
> first-class
> > > > > > endpoint
> > > > > > > > > either
> > > > > > > > > > > > > instead of or in addition to adding recommended
> > values
> > > > for
> > > > > > all
> > > > > > > > > plugin
> > > > > > > > > > > > > versions.
> > > > > > > > > > > > >
> > > > > > > > > > > > > Thanks for your continued work on this KIP, and
> with
> > > the
> > > > > > > progress
> > > > > > > > > > we're
> > > > > > > > > > > > > making I'm optimistic about its chances of
> appearing
> > in
> > > > > > 4.0.0.
> > > > > > > > > > > > >
> > > > > > > > > > > > > Cheers,
> > > > > > > > > > > > >
> > > > > > > > > > > > > Chris
> > > > > > > > > > > > >
> > > > > > > > > > > > > On Wed, May 15, 2024 at 1:22 PM Greg Harris
> > > > > > > > > > > <greg.har...@aiven.io.invalid
> > > > > > > > > > > > >
> > > > > > > > > > > > > wrote:
> > > > > > > > > > > > >
> > > > > > > > > > > > > > Hey Chris,
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Thanks for your quick follow up.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > > But this risk is already present with
> > > > > > > > > > > > > > > existing error cases, and I don't see anything
> > that
> > > > > > > justifies
> > > > > > > > > > > > changing
> > > > > > > > > > > > > > > existing behavior with an invalid converter
> > class,
> > > or
> > > > > > > > diverging
> > > > > > > > > > > from
> > > > > > > > > > > > it
> > > > > > > > > > > > > > in
> > > > > > > > > > > > > > > the case of invalid converter versions.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > The justification is to fail-fast, and prevent
> REST
> > > API
> > > > > > users
> > > > > > > > > from
> > > > > > > > > > > > > > receiving errors from bad configs that they
> didn't
> > > > write,
> > > > > > or
> > > > > > > > > maybe
> > > > > > > > > > > > > > don't even know apply to them.
> > > > > > > > > > > > > > Up until recently errors in these configurations
> > > > surfaced
> > > > > > as
> > > > > > > > > > failures
> > > > > > > > > > > > > > to create the connector, or failures to start,
> and
> > > you
> > > > > made
> > > > > > > > them
> > > > > > > > > > > > > > fail-fast during validation. I think this change
> is
> > > in
> > > > > the
> > > > > > > same
> > > > > > > > > > > > > > spirit, pulling the validation further forward
> and
> > > not
> > > > > > > letting
> > > > > > > > > > errors
> > > > > > > > > > > > > > lie dormant.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > And to call back to your original concern about
> > > > > > interrupting
> > > > > > > > > > > > > > connectors that explicitly provide these
> > > configurations
> > > > > and
> > > > > > > > don't
> > > > > > > > > > use
> > > > > > > > > > > > > > the worker configs: I expect that operators with
> a
> > > > > majority
> > > > > > > of
> > > > > > > > > > these
> > > > > > > > > > > > > > sorts of clients aren't going to be setting the
> > > worker
> > > > > > > .version
> > > > > > > > > > > > > > properties, because it would have no effect on
> the
> > > > > majority
> > > > > > > of
> > > > > > > > > > their
> > > > > > > > > > > > > > connectors. They would be able to rely on
> > > > > > > > backwards-compatibility
> > > > > > > > > > and
> > > > > > > > > > > > > > continue to ignore the class properties.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > > CLI
> > > > > > > > > > > > > > > and programmatic UI developers will want to
> > develop
> > > > > their
> > > > > > > own
> > > > > > > > > > > tooling
> > > > > > > > > > > > > > > layers.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > This is a very compelling argument. Snehashis do
> > you
> > > > want
> > > > > > to
> > > > > > > > > figure
> > > > > > > > > > > > > > out a REST API design for this use-case?
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > > Regarding the GET
> > > /connector-plugins/<plugin>/config
> > > > > > > > endpoint,
> > > > > > > > > I
> > > > > > > > > > > was
> > > > > > > > > > > > > > > thinking about the response for non-connector
> > > > plugins,
> > > > > > > e.g.,
> > > > > > > > > > > > > > > GET /connector-plugins/RegexRouter/config.
> Would
> > a
> > > > > > > "version"
> > > > > > > > > > > property
> > > > > > > > > > > > > > > appear with recommended values?
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > I intended for the ".version" property to be like
> > > other
> > > > > > > > framework
> > > > > > > > > > > > > > configs (".class", ".type", ".predicate",
> > ".negate")
> > > > > where
> > > > > > > they
> > > > > > > > > are
> > > > > > > > > > > > > > inside the plugin namespace, but not part of the
> > > plugin
> > > > > > > config
> > > > > > > > > > > itself.
> > > > > > > > > > > > > > Perhaps we can deviate from those configs because
> > it
> > > > > would
> > > > > > > aid
> > > > > > > > in
> > > > > > > > > > > > > > discovering other valid `GET
> > > > > > > > > > > > > > /connector-plugins/<plugin>/config?version=`
> calls,
> > > > > without
> > > > > > > > > calling
> > > > > > > > > > > > > > `GET /connector-plugins?connectorsOnly=false`.
> > > > > > > > > > > > > > I don't really feel strongly either way.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > > if a user changes the
> > > > > > > > > > > > > > > connector version in, e.g., a dropdown menu,
> then
> > > the
> > > > > UI
> > > > > > > > either
> > > > > > > > > > has
> > > > > > > > > > > > to
> > > > > > > > > > > > > > > re-fetch the ConfigDef for the new version, or
> > risk
> > > > > > > operating
> > > > > > > > > on
> > > > > > > > > > > > stale
> > > > > > > > > > > > > > > information
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > This is a really interesting situation, thanks
> for
> > > > > finding
> > > > > > > > that!
> > > > > > > > > > This
> > > > > > > > > > > > > > is already a footgun with transformations and
> > > > predicates;
> > > > > > > Once
> > > > > > > > > you
> > > > > > > > > > > > > > fill out a transformation class (which includes a
> > > > > > > recommender)
> > > > > > > > > you
> > > > > > > > > > > > > > will then see all of the transformations
> > > > configurations.
> > > > > > > > > > > > > > I think this means that UI developers should have
> > > > already
> > > > > > > > > developed
> > > > > > > > > > > > > > the infrastructure for handling dynamic
> > recommenders,
> > > > or
> > > > > > else
> > > > > > > > > > they've
> > > > > > > > > > > > > > had this bug since KIP-66 in 2017. It may require
> > > some
> > > > > > manual
> > > > > > > > > > > > > > attention to roll-out support for the ".version"
> > > > > properties
> > > > > > > > > > > > > > specifically, but I don't think that should
> prevent
> > > us
> > > > > from
> > > > > > > > > > providing
> > > > > > > > > > > > > > this information in a natural place.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > > but will it be possible to configure
> > > > > > > > > > > > > > > a connector to use two instances of the same
> > > > transform
> > > > > or
> > > > > > > > > > > predicate,
> > > > > > > > > > > > but
> > > > > > > > > > > > > > > with different versions for each?
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Yes, and this is included in the example in the
> > KIP,
> > > > > > > > > > > > > > `transforms.flatten-latest` and
> > > > `transforms.flatten-old`.
> > > > > > > This
> > > > > > > > > will
> > > > > > > > > > > > > > work in the natural way, with the two instances
> > > having
> > > > a
> > > > > > > > > different
> > > > > > > > > > > > > > version if configured for that. If a user wants
> to
> > > pin
> > > > > the
> > > > > > > same
> > > > > > > > > > > > > > version of a plugin for every instance, they will
> > > need
> > > > to
> > > > > > > > provide
> > > > > > > > > > the
> > > > > > > > > > > > > > version config multiple times and keep them
> in-sync
> > > > > > > themselves.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > > I would have expected the error
> > > > > > > > > > > > > > > to only be attributed to the version property,
> > and
> > > > for
> > > > > > the
> > > > > > > > > class
> > > > > > > > > > > > property
> > > > > > > > > > > > > > > to be reported as valid.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > I considered this, and then went back and changed
> > it.
> > > > To
> > > > > > > quote
> > > > > > > > > > > someone
> > > > > > > > > > > > > > else, this is to catch "misspelling cat as dog".
> > For
> > > > > > example
> > > > > > > a
> > > > > > > > > user
> > > > > > > > > > > > > > types DogConverter and meant to type
> CatConverter,
> > > and
> > > > > then
> > > > > > > > > types a
> > > > > > > > > > > > > > version which is valid for CatConverter,
> > conceptually
> > > > the
> > > > > > > error
> > > > > > > > > is
> > > > > > > > > > in
> > > > > > > > > > > > > > the class name and not the version.
> > > > > > > > > > > > > > That's a very contrived scenario, but I think
> > similar
> > > > > > > arguments
> > > > > > > > > are
> > > > > > > > > > > > > > used for attributing validation errors to
> > > > > > > > > endpoints/urls/hostnames
> > > > > > > > > > > > > > when the associated credentials are unable to log
> > > into
> > > > > the
> > > > > > > > remote
> > > > > > > > > > > > > > system. Did the user provide the correct testing
> > > > > > credentials,
> > > > > > > > but
> > > > > > > > > > > > > > accidentally typed the production endpoint? Even
> if
> > > the
> > > > > > > > > production
> > > > > > > > > > > > > > endpoint looks valid (it's a real hostname that
> is
> > > > > > reachable)
> > > > > > > > the
> > > > > > > > > > > > > > conceptual error is still in the hostname and
> > should
> > > > have
> > > > > > the
> > > > > > > > > error
> > > > > > > > > > > > > > attributed to it to draw the user's attention.
> > > > > > > > > > > > > > If that's not convincing, I think the alternative
> > of
> > > > only
> > > > > > > > > > attributing
> > > > > > > > > > > > > > version errors to the version property is also
> > > > > acceptable.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Thanks,
> > > > > > > > > > > > > > Greg
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > On Wed, May 15, 2024 at 8:06 AM Chris Egerton
> > > > > > > > > > > <chr...@aiven.io.invalid
> > > > > > > > > > > > >
> > > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > Hi Greg,
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > Thanks for your responses! Continuations of
> > > existing
> > > > > > > > > discussions:
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > Regarding crashing the worker on startup--yes,
> > > there
> > > > is
> > > > > > > also
> > > > > > > > a
> > > > > > > > > > risk
> > > > > > > > > > > > to
> > > > > > > > > > > > > > > allowing it to join the cluster. But this risk
> is
> > > > > already
> > > > > > > > > present
> > > > > > > > > > > > with
> > > > > > > > > > > > > > > existing error cases, and I don't see anything
> > that
> > > > > > > justifies
> > > > > > > > > > > > changing
> > > > > > > > > > > > > > > existing behavior with an invalid converter
> > class,
> > > or
> > > > > > > > diverging
> > > > > > > > > > > from
> > > > > > > > > > > > it
> > > > > > > > > > > > > > in
> > > > > > > > > > > > > > > the case of invalid converter versions. I think
> > we
> > > > > should
> > > > > > > > keep
> > > > > > > > > > this
> > > > > > > > > > > > > > simple
> > > > > > > > > > > > > > > and not do anything different for worker
> startup
> > > than
> > > > > we
> > > > > > do
> > > > > > > > > > > already.
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > As far as REST API vs. metrics go--I think
> you're
> > > > right
> > > > > > > that
> > > > > > > > > the
> > > > > > > > > > > > original
> > > > > > > > > > > > > > > version metrics were added as a "monitoring"
> > > detail.
> > > > > > > However,
> > > > > > > > > > this
> > > > > > > > > > > > was
> > > > > > > > > > > > > > back
> > > > > > > > > > > > > > > when plugin versions were managed solely by
> > cluster
> > > > > > > > > > administrators.
> > > > > > > > > > > > With
> > > > > > > > > > > > > > > this KIP, connector users will be able to
> manage
> > > > plugin
> > > > > > > > > versions,
> > > > > > > > > > > > and CLI
> > > > > > > > > > > > > > > and programmatic UI developers will want to
> > develop
> > > > > their
> > > > > > > own
> > > > > > > > > > > tooling
> > > > > > > > > > > > > > > layers. I think focusing on the REST API as the
> > > > primary
> > > > > > > > > interface
> > > > > > > > > > > for
> > > > > > > > > > > > > > this
> > > > > > > > > > > > > > > KIP would be best for these users.
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > (All that said, I don't object to the metrics
> > that
> > > > are
> > > > > > > > proposed
> > > > > > > > > > in
> > > > > > > > > > > > the
> > > > > > > > > > > > > > KIP;
> > > > > > > > > > > > > > > I just think they make more sense in addition
> to
> > > new
> > > > > REST
> > > > > > > API
> > > > > > > > > > > > > > > functionality, as opposed to instead of it.)
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > Regarding the GET
> > > /connector-plugins/<plugin>/config
> > > > > > > > endpoint,
> > > > > > > > > I
> > > > > > > > > > > was
> > > > > > > > > > > > > > > thinking about the response for non-connector
> > > > plugins,
> > > > > > > e.g.,
> > > > > > > > > > > > > > > GET /connector-plugins/RegexRouter/config.
> Would
> > a
> > > > > > > "version"
> > > > > > > > > > > property
> > > > > > > > > > > > > > > appear with recommended values?
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > And new thoughts:
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > 1) Regarding the recommended values for
> > > > > > > "connector.version",
> > > > > > > > > this
> > > > > > > > > > > > might
> > > > > > > > > > > > > > be
> > > > > > > > > > > > > > > confusing since there could be differences
> > between
> > > > the
> > > > > > > > > ConfigDefs
> > > > > > > > > > > > for the
> > > > > > > > > > > > > > > latest version of the connector and prior
> > versions.
> > > > It
> > > > > > also
> > > > > > > > > makes
> > > > > > > > > > > the
> > > > > > > > > > > > > > flow
> > > > > > > > > > > > > > > a bit awkward for programmatic UI developers:
> if
> > a
> > > > user
> > > > > > > > changes
> > > > > > > > > > the
> > > > > > > > > > > > > > > connector version in, e.g., a dropdown menu,
> then
> > > the
> > > > > UI
> > > > > > > > either
> > > > > > > > > > has
> > > > > > > > > > > > to
> > > > > > > > > > > > > > > re-fetch the ConfigDef for the new version, or
> > risk
> > > > > > > operating
> > > > > > > > > on
> > > > > > > > > > > > stale
> > > > > > > > > > > > > > > information. I'm starting to doubt that
> exposing
> > > the
> > > > > > range
> > > > > > > of
> > > > > > > > > > > > available
> > > > > > > > > > > > > > > versions via recommended values is the best way
> > to
> > > > > > proceed,
> > > > > > > > > > instead
> > > > > > > > > > > > of a
> > > > > > > > > > > > > > > more explicit approach like GET
> > > > > > > > > > > > /connector-plugins/<plugin>/versions, or
> > > > > > > > > > > > > > > the "Adding new REST API endpoints" rejected
> > > > > alternative.
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > 2) I know that this is a bit heinous, but will
> it
> > > be
> > > > > > > possible
> > > > > > > > > to
> > > > > > > > > > > > > > configure
> > > > > > > > > > > > > > > a connector to use two instances of the same
> > > > transform
> > > > > or
> > > > > > > > > > > predicate,
> > > > > > > > > > > > but
> > > > > > > > > > > > > > > with different versions for each? (I don't
> think
> > > this
> > > > > is
> > > > > > > > worth
> > > > > > > > > > > > > > significant
> > > > > > > > > > > > > > > design/implementation effort, so if it would
> > > inflate
> > > > > > either
> > > > > > > > of
> > > > > > > > > > > those,
> > > > > > > > > > > > > > > please don't feel obligated to support it.)
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > 3) Just out of curiosity, why double-ding
> during
> > > > config
> > > > > > > > > > validation
> > > > > > > > > > > > if the
> > > > > > > > > > > > > > > version for a plugin class can't be found? I
> > would
> > > > have
> > > > > > > > > expected
> > > > > > > > > > > the
> > > > > > > > > > > > > > error
> > > > > > > > > > > > > > > to only be attributed to the version property,
> > and
> > > > for
> > > > > > the
> > > > > > > > > class
> > > > > > > > > > > > property
> > > > > > > > > > > > > > > to be reported as valid.
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > Cheers,
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > Chris
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > On Tue, May 14, 2024 at 1:11 PM Greg Harris
> > > > > > > > > > > > <greg.har...@aiven.io.invalid
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > Hey Chris,
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > Thanks for your comments. I'm glad you like
> the
> > > > > > > > motivations,
> > > > > > > > > > > > Snehashis
> > > > > > > > > > > > > > > > wrote that part!
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > the configuration syntax for the most basic
> > use
> > > > > case
> > > > > > of
> > > > > > > > > > > > > > > > > specifying a single desired version is
> pretty
> > > > > > > > > > counterintuitive.
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > I agree, and the "soft" requirement scheme is
> > > > > > something I
> > > > > > > > > > wasn't
> > > > > > > > > > > > > > > > explicitly looking for, but would be
> inherited
> > > from
> > > > > the
> > > > > > > > > > library.
> > > > > > > > > > > > I'm
> > > > > > > > > > > > > > > > fine with eliminating the soft requirement
> > > > semantics,
> > > > > > and
> > > > > > > > > > having
> > > > > > > > > > > > > > > > "1.0.0" behave the same as "[1.0.0]". I'm
> less
> > > > > inclined
> > > > > > > to
> > > > > > > > > > > include
> > > > > > > > > > > > > > > > "range" in the property name, or have two
> > > > properties.
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > Failing startup is drastic and has the
> > > potential
> > > > to
> > > > > > > > disrupt
> > > > > > > > > > the
> > > > > > > > > > > > > > > > > availability of connectors that would
> > otherwise
> > > > be
> > > > > > able
> > > > > > > > to
> > > > > > > > > > run
> > > > > > > > > > > > > > healthily
> > > > > > > > > > > > > > > > > because they were explicitly configured to
> > use
> > > > > valid
> > > > > > > > > > converters
> > > > > > > > > > > > > > instead
> > > > > > > > > > > > > > > > of
> > > > > > > > > > > > > > > > > the worker defaults.
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > I think this argument cuts both ways. If
> > someone
> > > > > > > > > reconfigures a
> > > > > > > > > > > > worker
> > > > > > > > > > > > > > > > and adds an invalid ".version" string to the
> > > worker
> > > > > (or
> > > > > > > > > changes
> > > > > > > > > > > the
> > > > > > > > > > > > > > > > plugin.path to make it invalid), it would be
> > > > > permitted
> > > > > > to
> > > > > > > > > enter
> > > > > > > > > > > the
> > > > > > > > > > > > > > > > group, and accept work assignments. If those
> > work
> > > > > > > > assignments
> > > > > > > > > > > used
> > > > > > > > > > > > > > > > these configurations, a set of tasks could
> > > > transition
> > > > > > to
> > > > > > > > > FAILED
> > > > > > > > > > > and
> > > > > > > > > > > > > > > > not be able to recover, because they would be
> > > > > restarted
> > > > > > > > again
> > > > > > > > > > on
> > > > > > > > > > > > the
> > > > > > > > > > > > > > > > same worker.
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > Why are metrics utilized to report
> > information
> > > > > about
> > > > > > > > plugin
> > > > > > > > > > > > versions
> > > > > > > > > > > > > > > > > utilized by connectors at runtime instead
> of
> > > > > > publishing
> > > > > > > > > this
> > > > > > > > > > > > info in
> > > > > > > > > > > > > > the
> > > > > > > > > > > > > > > > > REST API
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > I was following the existing pattern for
> > exposing
> > > > > > runtime
> > > > > > > > > > > versions
> > > > > > > > > > > > for
> > > > > > > > > > > > > > > > connectors, and it did seem like a
> "monitoring"
> > > > > > feature.
> > > > > > > If
> > > > > > > > > > that
> > > > > > > > > > > > > > > > approach is flawed and should be phased out,
> I
> > > > think
> > > > > it
> > > > > > > > would
> > > > > > > > > > be
> > > > > > > > > > > a
> > > > > > > > > > > > > > > > good idea to reconsider the REST API rejected
> > > > > > > alternative.
> > > > > > > > > > > > > > > > We would need some additional design work to
> > spec
> > > > out
> > > > > > the
> > > > > > > > > REST
> > > > > > > > > > > API
> > > > > > > > > > > > > > > > interface, as I don't have anything in mind
> > > > > currently.
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > I'm unclear on whether or not it'll be
> > possible
> > > > to
> > > > > > see
> > > > > > > > this
> > > > > > > > > > > > > > information
> > > > > > > > > > > > > > > > via the
> > > > > > > > > > > > > > > > > GET /connector-plugins/<plugin>/config
> > endpoint
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > There is room in the API to add recommenders
> > for
> > > > > > > > > > "key.converter",
> > > > > > > > > > > > > > > > "value.converter", and "header.converter",
> but
> > > not
> > > > > for
> > > > > > > > > > transforms
> > > > > > > > > > > > and
> > > > > > > > > > > > > > > > predicates, as they include aliases that
> depend
> > > on
> > > > an
> > > > > > > > actual
> > > > > > > > > > > > > > > > configuration. We could explicitly say we're
> > > going
> > > > to
> > > > > > do
> > > > > > > > > that,
> > > > > > > > > > or
> > > > > > > > > > > > do
> > > > > > > > > > > > > > > > whatever is convenient during the
> > implementation
> > > > > phase,
> > > > > > > or
> > > > > > > > > > leave
> > > > > > > > > > > it
> > > > > > > > > > > > > > > > open to be improved later.
> > > > > > > > > > > > > > > > There will not be any recommenders for
> > ".version"
> > > > > > > > properties
> > > > > > > > > in
> > > > > > > > > > > the
> > > > > > > > > > > > > > > > `/config` endpoint, because those
> recommenders
> > > are
> > > > > > > dynamic
> > > > > > > > > and
> > > > > > > > > > > > depend
> > > > > > > > > > > > > > > > on an actual configuration.
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > 5) There are two relevant lines in the KIP:
> > "If a
> > > > > > > .version
> > > > > > > > > > > property
> > > > > > > > > > > > > > > > contains a hard requirement, select the
> latest
> > > > > > installed
> > > > > > > > > > version
> > > > > > > > > > > > which
> > > > > > > > > > > > > > > > satisfies the requirement." and "This
> > > configuration
> > > > > is
> > > > > > > > > > > re-evaluated
> > > > > > > > > > > > > > > > each time the connector or task are assigned
> > to a
> > > > new
> > > > > > > > > worker".
> > > > > > > > > > I
> > > > > > > > > > > > would
> > > > > > > > > > > > > > > > call this "eager" upgrade behavior, rather
> > than a
> > > > > > > "sticky"
> > > > > > > > or
> > > > > > > > > > > > "lazy"
> > > > > > > > > > > > > > > > upgrade behavior.
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > 6) Updated!
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > Thanks,
> > > > > > > > > > > > > > > > Greg
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > On Tue, May 14, 2024 at 9:14 AM Chris Egerton
> > > > > > > > > > > > <chr...@aiven.io.invalid
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > Hi all,
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > Thanks Greg for updating the KIP, and
> thanks
> > > > > > Snehashis
> > > > > > > > for
> > > > > > > > > > > > starting
> > > > > > > > > > > > > > the
> > > > > > > > > > > > > > > > > work on this originally.
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > The motivation section makes a pretty
> > > convincing
> > > > > case
> > > > > > > for
> > > > > > > > > > this
> > > > > > > > > > > > kind
> > > > > > > > > > > > > > of
> > > > > > > > > > > > > > > > > feature. My thoughts are mostly about
> > specific
> > > > > > details:
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > 1) I like the support for version ranges
> (the
> > > > > example
> > > > > > > > > > > > demonstrating
> > > > > > > > > > > > > > how
> > > > > > > > > > > > > > > > to
> > > > > > > > > > > > > > > > > avoid KAFKA-10574 with the header converter
> > was
> > > > > > > > > particularly
> > > > > > > > > > > > > > > > entertaining),
> > > > > > > > > > > > > > > > > but the configuration syntax for the most
> > basic
> > > > use
> > > > > > > case
> > > > > > > > of
> > > > > > > > > > > > > > specifying a
> > > > > > > > > > > > > > > > > single desired version is pretty
> > > > counterintuitive.
> > > > > > > People
> > > > > > > > > may
> > > > > > > > > > > get
> > > > > > > > > > > > > > bitten
> > > > > > > > > > > > > > > > or
> > > > > > > > > > > > > > > > > at least frustrated if they put
> > > > > > connector.version=3.8.0
> > > > > > > > in
> > > > > > > > > a
> > > > > > > > > > > > config
> > > > > > > > > > > > > > but
> > > > > > > > > > > > > > > > > then version 3.7.5 ends up running. I'd
> like
> > it
> > > > if
> > > > > we
> > > > > > > > could
> > > > > > > > > > > > either
> > > > > > > > > > > > > > > > > intentionally deviate from Maven ranges
> when
> > a
> > > > bare
> > > > > > > > version
> > > > > > > > > > is
> > > > > > > > > > > > > > present,
> > > > > > > > > > > > > > > > or
> > > > > > > > > > > > > > > > > separate things out into two properties:
> > > > > foo.version
> > > > > > > > would
> > > > > > > > > be
> > > > > > > > > > > the
> > > > > > > > > > > > > > single
> > > > > > > > > > > > > > > > > accepted version for the foo plugin, and
> > > > > > > > foo.version.range
> > > > > > > > > > > would
> > > > > > > > > > > > use
> > > > > > > > > > > > > > > > Maven
> > > > > > > > > > > > > > > > > range syntax. Open to other options too,
> just
> > > > > > > providing a
> > > > > > > > > > > couple
> > > > > > > > > > > > to
> > > > > > > > > > > > > > get
> > > > > > > > > > > > > > > > the
> > > > > > > > > > > > > > > > > ball rolling.
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > 2) Although the current behavior for a
> worker
> > > > with
> > > > > an
> > > > > > > > > invalid
> > > > > > > > > > > > > > > > > key/value/header converter class specified
> in
> > > its
> > > > > > > config
> > > > > > > > > file
> > > > > > > > > > > is
> > > > > > > > > > > > a
> > > > > > > > > > > > > > little
> > > > > > > > > > > > > > > > > strange (I was surprised to learn that it
> > > > wouldn't
> > > > > > fail
> > > > > > > > on
> > > > > > > > > > > > startup),
> > > > > > > > > > > > > > I
> > > > > > > > > > > > > > > > > don't see a good reason to deviate from
> this
> > > when
> > > > > an
> > > > > > > > > invalid
> > > > > > > > > > > > version
> > > > > > > > > > > > > > is
> > > > > > > > > > > > > > > > > specified. Failing startup is drastic and
> has
> > > the
> > > > > > > > potential
> > > > > > > > > > to
> > > > > > > > > > > > > > disrupt
> > > > > > > > > > > > > > > > the
> > > > > > > > > > > > > > > > > availability of connectors that would
> > otherwise
> > > > be
> > > > > > able
> > > > > > > > to
> > > > > > > > > > run
> > > > > > > > > > > > > > healthily
> > > > > > > > > > > > > > > > > because they were explicitly configured to
> > use
> > > > > valid
> > > > > > > > > > converters
> > > > > > > > > > > > > > instead
> > > > > > > > > > > > > > > > of
> > > > > > > > > > > > > > > > > the worker defaults.
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > 3) Why are metrics utilized to report
> > > information
> > > > > > about
> > > > > > > > > > plugin
> > > > > > > > > > > > > > versions
> > > > > > > > > > > > > > > > > utilized by connectors at runtime instead
> of
> > > > > > publishing
> > > > > > > > > this
> > > > > > > > > > > > info in
> > > > > > > > > > > > > > the
> > > > > > > > > > > > > > > > > REST API? I saw that this was mentioned as
> a
> > > > > rejected
> > > > > > > > > > > > alternative,
> > > > > > > > > > > > > > but I
> > > > > > > > > > > > > > > > > didn't get a sense of why. It seems like
> the
> > > REST
> > > > > API
> > > > > > > > would
> > > > > > > > > > be
> > > > > > > > > > > > > > easier to
> > > > > > > > > > > > > > > > > access and more intuitive for most users
> than
> > > new
> > > > > > > > metrics.
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > 4) In the "Validation" section it's stated
> > that
> > > > > > "Users
> > > > > > > > can
> > > > > > > > > > use
> > > > > > > > > > > > these
> > > > > > > > > > > > > > > > > recommenders to discover the valid plugin
> > > classes
> > > > > and
> > > > > > > > > > versions,
> > > > > > > > > > > > > > without
> > > > > > > > > > > > > > > > > requiring an earlier call to GET
> > > > > > > > > > > > > > > > /connector-plugins?connectorsOnly=false."
> > > > > > > > > > > > > > > > > I really like the creativity and simplicity
> > of
> > > > > > reusing
> > > > > > > > the
> > > > > > > > > > > > > > recommender
> > > > > > > > > > > > > > > > > mechanism to expose available versions for
> > > > plugins
> > > > > > via
> > > > > > > > the
> > > > > > > > > > REST
> > > > > > > > > > > > API.
> > > > > > > > > > > > > > I'm
> > > > > > > > > > > > > > > > > unclear on whether or not it'll be possible
> > to
> > > > see
> > > > > > this
> > > > > > > > > > > > information
> > > > > > > > > > > > > > via
> > > > > > > > > > > > > > > > the
> > > > > > > > > > > > > > > > > GET /connector-plugins/<plugin>/config
> > > endpoint,
> > > > > > > though.
> > > > > > > > > It'd
> > > > > > > > > > > be
> > > > > > > > > > > > > > great if
> > > > > > > > > > > > > > > > > this were supported, since we learned in
> > > KIP-769
> > > > > [1]
> > > > > > > that
> > > > > > > > > > > people
> > > > > > > > > > > > > > really
> > > > > > > > > > > > > > > > > want to be able to see configuration
> options
> > > for
> > > > > > > > connectors
> > > > > > > > > > and
> > > > > > > > > > > > their
> > > > > > > > > > > > > > > > > plugins via some kind of GET endpoint
> without
> > > > > having
> > > > > > to
> > > > > > > > > > > provide a
> > > > > > > > > > > > > > > > complete
> > > > > > > > > > > > > > > > > connector config for validation.
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > 5) In the Maven version range docs, it's
> > stated
> > > > > that
> > > > > > > > "Maven
> > > > > > > > > > > > picks the
> > > > > > > > > > > > > > > > > highest version of each project that
> > satisfies
> > > > all
> > > > > > the
> > > > > > > > hard
> > > > > > > > > > > > > > requirements
> > > > > > > > > > > > > > > > of
> > > > > > > > > > > > > > > > > the dependencies on that project." I'm
> > guessing
> > > > > this
> > > > > > > > > behavior
> > > > > > > > > > > > will be
> > > > > > > > > > > > > > > > > retained for Connect; i.e., the
> > > highest-possible
> > > > > > > version
> > > > > > > > of
> > > > > > > > > > > each
> > > > > > > > > > > > > > plugin
> > > > > > > > > > > > > > > > > that satisfies the user-specified version
> > > > > constraints
> > > > > > > > will
> > > > > > > > > be
> > > > > > > > > > > > run?
> > > > > > > > > > > > > > (An
> > > > > > > > > > > > > > > > > alternative approach could be to have some
> > kind
> > > > of
> > > > > > > > "sticky"
> > > > > > > > > > > logic
> > > > > > > > > > > > > > that
> > > > > > > > > > > > > > > > only
> > > > > > > > > > > > > > > > > restarts connectors/tasks when their
> > > > currently-used
> > > > > > > > version
> > > > > > > > > > > > becomes
> > > > > > > > > > > > > > > > > incompatible with the configured
> > constraints.)
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > 6) (Nit) It'd be nice to add a link to the
> > > > > > TestPlugins
> > > > > > > > > class
> > > > > > > > > > or
> > > > > > > > > > > > > > somewhere
> > > > > > > > > > > > > > > > > in its neighborhood to the testing plan;
> > > > unfamiliar
> > > > > > > > readers
> > > > > > > > > > > > probably
> > > > > > > > > > > > > > > > won't
> > > > > > > > > > > > > > > > > get much out of what's there right now.
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > [1] -
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-769%3A+Connect+APIs+to+list+all+connector+plugins+and+retrieve+their+configuration+definitions
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > Cheers,
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > Chris
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > On Mon, May 13, 2024 at 2:01 PM Snehashis <
> > > > > > > > > > > > snehashisp1...@gmail.com>
> > > > > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > Hi Greg,
> > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > That is much appreciated. No complaints
> on
> > > the
> > > > > > > > additional
> > > > > > > > > > > > scope, I
> > > > > > > > > > > > > > will
> > > > > > > > > > > > > > > > > > make some time out to work on this once
> we
> > > have
> > > > > > > > approval.
> > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > Thanks
> > > > > > > > > > > > > > > > > > Snehashis
> > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > On Fri, May 10, 2024 at 9:28 PM Greg
> Harris
> > > > > > > > > > > > > > > > <greg.har...@aiven.io.invalid>
> > > > > > > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > Hey Snehashis,
> > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > I'm glad to hear you're still
> interested
> > in
> > > > > this
> > > > > > > KIP!
> > > > > > > > > > > > > > > > > > > I'm happy to let you drive this, and I
> > > > > apologize
> > > > > > > for
> > > > > > > > > > > > increasing
> > > > > > > > > > > > > > the
> > > > > > > > > > > > > > > > > > > scope of work so drastically. To make
> up
> > > for
> > > > > > that,
> > > > > > > > I'll
> > > > > > > > > > > > > > volunteer to
> > > > > > > > > > > > > > > > > > > be the primary PR reviewer to help get
> > this
> > > > > done
> > > > > > > > > quickly
> > > > > > > > > > > once
> > > > > > > > > > > > > > the KIP
> > > > > > > > > > > > > > > > > > > is approved.
> > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > Thanks,
> > > > > > > > > > > > > > > > > > > Greg
> > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > On Fri, May 10, 2024 at 3:51 AM
> > Snehashis <
> > > > > > > > > > > > > > snehashisp1...@gmail.com>
> > > > > > > > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > Hi Greg,
> > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > Thanks for the follow up to my
> original
> > > > KIP,
> > > > > I
> > > > > > am
> > > > > > > > in
> > > > > > > > > > > > favour of
> > > > > > > > > > > > > > the
> > > > > > > > > > > > > > > > > > > > additions made to expand its scope,
> the
> > > > > > addition
> > > > > > > of
> > > > > > > > > > range
> > > > > > > > > > > > > > versions
> > > > > > > > > > > > > > > > > > > > specifically make a lot of sense.
> > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > Apologies if I have not publicly
> worked
> > > on
> > > > > this
> > > > > > > KIP
> > > > > > > > > > for a
> > > > > > > > > > > > long
> > > > > > > > > > > > > > > > time.
> > > > > > > > > > > > > > > > > > The
> > > > > > > > > > > > > > > > > > > > original work was done when the move
> to
> > > > > service
> > > > > > > > > loading
> > > > > > > > > > > > was in
> > > > > > > > > > > > > > > > > > discussion
> > > > > > > > > > > > > > > > > > > > and I wanted to loop back to this
> only
> > > > after
> > > > > > that
> > > > > > > > > work
> > > > > > > > > > > was
> > > > > > > > > > > > > > > > completed.
> > > > > > > > > > > > > > > > > > > Post
> > > > > > > > > > > > > > > > > > > > its conclusion, I have not been able
> to
> > > > take
> > > > > > this
> > > > > > > > up
> > > > > > > > > > due
> > > > > > > > > > > to
> > > > > > > > > > > > > > other
> > > > > > > > > > > > > > > > > > > > priorities. If it's okay with you, I
> > > would
> > > > > > still
> > > > > > > > like
> > > > > > > > > > to
> > > > > > > > > > > > get
> > > > > > > > > > > > > > this
> > > > > > > > > > > > > > > > > > > > implemented myself, including the
> > > > additional
> > > > > > > scope.
> > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > Thanks and regards
> > > > > > > > > > > > > > > > > > > > Snehashis
> > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > On Fri, May 10, 2024 at 12:45 AM Greg
> > > > Harris
> > > > > > > > > > > > > > > > > > > <greg.har...@aiven.io.invalid>
> > > > > > > > > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > Hi all,
> > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > I'd like to reboot the discussion
> on
> > > > > KIP-891:
> > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-891%3A+Running+multiple+versions+of+Connector+plugins
> > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > I've made some changes, most
> notably:
> > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > 1. Specifying versions for all
> > plugins
> > > in
> > > > > > > > Connector
> > > > > > > > > > > > configs
> > > > > > > > > > > > > > > > > > > > > (converters, header converters,
> > > > transforms,
> > > > > > and
> > > > > > > > > > > > predicates)
> > > > > > > > > > > > > > not
> > > > > > > > > > > > > > > > just
> > > > > > > > > > > > > > > > > > > > > connectors & tasks
> > > > > > > > > > > > > > > > > > > > > 2. Specifying a range of versions
> > > instead
> > > > > of
> > > > > > an
> > > > > > > > > exact
> > > > > > > > > > > > match
> > > > > > > > > > > > > > > > > > > > > 3. New metrics to observe what
> > versions
> > > > are
> > > > > > > > in-use
> > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > Thanks to Snehashis for the
> original
> > > KIP
> > > > > > idea!
> > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > Thanks,
> > > > > > > > > > > > > > > > > > > > > Greg
> > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > On Tue, Jan 2, 2024 at 11:49 AM
> Greg
> > > > > Harris <
> > > > > > > > > > > > > > > > greg.har...@aiven.io>
> > > > > > > > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > Hi Snehashis,
> > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > Thank you for the KIP! This is
> > > > something
> > > > > > I've
> > > > > > > > > > wanted
> > > > > > > > > > > > for a
> > > > > > > > > > > > > > long
> > > > > > > > > > > > > > > > > > time.
> > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > I know the discussion has gone
> > cold,
> > > > are
> > > > > > you
> > > > > > > > > still
> > > > > > > > > > > > > > interested
> > > > > > > > > > > > > > > > in
> > > > > > > > > > > > > > > > > > > > > > pursuing this feature? I'll make
> > time
> > > > to
> > > > > > > review
> > > > > > > > > the
> > > > > > > > > > > > KIP if
> > > > > > > > > > > > > > you
> > > > > > > > > > > > > > > > are
> > > > > > > > > > > > > > > > > > > > > > still accepting comments.
> > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > Thanks,
> > > > > > > > > > > > > > > > > > > > > > Greg
> > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > On Tue, Nov 22, 2022 at 12:29 PM
> > > > > Snehashis
> > > > > > <
> > > > > > > > > > > > > > > > > > snehashisp1...@gmail.com
> > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > Thanks for the points Sagar.
> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > 1) Should we update the GET
> > > > > /connectors
> > > > > > > > > > endpoint
> > > > > > > > > > > to
> > > > > > > > > > > > > > > > include the
> > > > > > > > > > > > > > > > > > > > > version of
> > > > > > > > > > > > > > > > > > > > > > > > the plugin that is running?
> It
> > > > could
> > > > > be
> > > > > > > > > useful
> > > > > > > > > > to
> > > > > > > > > > > > > > figure
> > > > > > > > > > > > > > > > out
> > > > > > > > > > > > > > > > > > the
> > > > > > > > > > > > > > > > > > > > > version
> > > > > > > > > > > > > > > > > > > > > > > of
> > > > > > > > > > > > > > > > > > > > > > > > the plugin or I am assuming
> it
> > > gets
> > > > > > > > returned
> > > > > > > > > by
> > > > > > > > > > > the
> > > > > > > > > > > > > > > > expand=info
> > > > > > > > > > > > > > > > > > > call?
> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > I think this is good to have
> and
> > > > > possible
> > > > > > > > > future
> > > > > > > > > > > > > > > > enhancement. The
> > > > > > > > > > > > > > > > > > > > > version
> > > > > > > > > > > > > > > > > > > > > > > info will be present in the
> > config
> > > of
> > > > > the
> > > > > > > > > > connector
> > > > > > > > > > > > if
> > > > > > > > > > > > > > the
> > > > > > > > > > > > > > > > user
> > > > > > > > > > > > > > > > > > has
> > > > > > > > > > > > > > > > > > > > > > > specified the version.
> Otherwise
> > it
> > > > is
> > > > > > the
> > > > > > > > > latest
> > > > > > > > > > > > version
> > > > > > > > > > > > > > > > which
> > > > > > > > > > > > > > > > > > the
> > > > > > > > > > > > > > > > > > > > > user
> > > > > > > > > > > > > > > > > > > > > > > can find out from the
> > > > connector-plugin
> > > > > > > > > endpoint.
> > > > > > > > > > > The
> > > > > > > > > > > > > > > > information
> > > > > > > > > > > > > > > > > > > can be
> > > > > > > > > > > > > > > > > > > > > > > introduced to the response of
> the
> > > GET
> > > > > > > > > /connectors
> > > > > > > > > > > > > > endpoint
> > > > > > > > > > > > > > > > > > itself,
> > > > > > > > > > > > > > > > > > > > > however
> > > > > > > > > > > > > > > > > > > > > > > the most ideal way of doing
> this
> > > > would
> > > > > be
> > > > > > > to
> > > > > > > > > get
> > > > > > > > > > > the
> > > > > > > > > > > > > > > > currently
> > > > > > > > > > > > > > > > > > > running
> > > > > > > > > > > > > > > > > > > > > > > instance of the connector and
> get
> > > the
> > > > > > > version
> > > > > > > > > > > > directly
> > > > > > > > > > > > > > from
> > > > > > > > > > > > > > > > > > there.
> > > > > > > > > > > > > > > > > > > > > This is
> > > > > > > > > > > > > > > > > > > > > > > slightly tricky as the
> connector
> > > > could
> > > > > be
> > > > > > > > > running
> > > > > > > > > > > in
> > > > > > > > > > > > a
> > > > > > > > > > > > > > > > different
> > > > > > > > > > > > > > > > > > > node.
> > > > > > > > > > > > > > > > > > > > > > > One way to do this would be to
> > > > persist
> > > > > > the
> > > > > > > > > > version
> > > > > > > > > > > > > > > > information in
> > > > > > > > > > > > > > > > > > > the
> > > > > > > > > > > > > > > > > > > > > > > status backing store during
> > > > > instantiation
> > > > > > > of
> > > > > > > > > the
> > > > > > > > > > > > > > connector.
> > > > > > > > > > > > > > > > It
> > > > > > > > > > > > > > > > > > > requires
> > > > > > > > > > > > > > > > > > > > > > > some more thought and since the
> > > > version
> > > > > > is
> > > > > > > > part
> > > > > > > > > > of
> > > > > > > > > > > > the
> > > > > > > > > > > > > > > > configs if
> > > > > > > > > > > > > > > > > > > > > provided
> > > > > > > > > > > > > > > > > > > > > > > and evident otherwise, I have
> not
> > > > > > included
> > > > > > > it
> > > > > > > > > in
> > > > > > > > > > > this
> > > > > > > > > > > > > > KIP.
> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > 2) I am not aware of this and
> > > hence
> > > > > > > asking,
> > > > > > > > > > can 2
> > > > > > > > > > > > > > > > connectors
> > > > > > > > > > > > > > > > > > with
> > > > > > > > > > > > > > > > > > > > > > > different
> > > > > > > > > > > > > > > > > > > > > > > > versions have the same name?
> > Does
> > > > the
> > > > > > > > plugin
> > > > > > > > > > > > isolation
> > > > > > > > > > > > > > > > allow
> > > > > > > > > > > > > > > > > > > this?
> > > > > > > > > > > > > > > > > > > > > This
> > > > > > > > > > > > > > > > > > > > > > > > could have a bearing when
> using
> > > the
> > > > > > > > lifecycle
> > > > > > > > > > > > > > endpoints for
> > > > > > > > > > > > > > > > > > > > > connectors
> > > > > > > > > > > > > > > > > > > > > > > like
> > > > > > > > > > > > > > > > > > > > > > > > DELETE etc.
> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > All connectors in a cluster
> need
> > to
> > > > > have
> > > > > > > > > uniquire
> > > > > > > > > > > > > > connector
> > > > > > > > > > > > > > > > names
> > > > > > > > > > > > > > > > > > > > > > > regardless of what version of
> the
> > > > > plugin
> > > > > > > the
> > > > > > > > > > > > connector is
> > > > > > > > > > > > > > > > running
> > > > > > > > > > > > > > > > > > > > > > > underneath. This is something
> > > > enforced
> > > > > by
> > > > > > > the
> > > > > > > > > > > connect
> > > > > > > > > > > > > > runtime
> > > > > > > > > > > > > > > > > > > itself.
> > > > > > > > > > > > > > > > > > > > > All
> > > > > > > > > > > > > > > > > > > > > > > connect CRUD operations are
> keyed
> > > on
> > > > > the
> > > > > > > > > > connector
> > > > > > > > > > > > name
> > > > > > > > > > > > > > so
> > > > > > > > > > > > > > > > there
> > > > > > > > > > > > > > > > > > > will
> > > > > > > > > > > > > > > > > > > > > not
> > > > > > > > > > > > > > > > > > > > > > > be an issue.
> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > Regards
> > > > > > > > > > > > > > > > > > > > > > > Snehashis
> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > On Tue, Nov 22, 2022 at 3:16 PM
> > > > Sagar <
> > > > > > > > > > > > > > > > sagarmeansoc...@gmail.com
> > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > Hey Snehashsih,
> > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > Thanks for the KIP. It looks
> > > like a
> > > > > > very
> > > > > > > > > useful
> > > > > > > > > > > > > > feature.
> > > > > > > > > > > > > > > > Couple
> > > > > > > > > > > > > > > > > > > of
> > > > > > > > > > > > > > > > > > > > > > > > small-ish points, let me know
> > > what
> > > > > you
> > > > > > > > think:
> > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > 1) Should we update the GET
> > > > > /connectors
> > > > > > > > > > endpoint
> > > > > > > > > > > to
> > > > > > > > > > > > > > > > include the
> > > > > > > > > > > > > > > > > > > > > version of
> > > > > > > > > > > > > > > > > > > > > > > > the plugin that is running?
> It
> > > > could
> > > > > be
> > > > > > > > > useful
> > > > > > > > > > to
> > > > > > > > > > > > > > figure
> > > > > > > > > > > > > > > > out
> > > > > > > > > > > > > > > > > > the
> > > > > > > > > > > > > > > > > > > > > version of
> > > > > > > > > > > > > > > > > > > > > > > > the plugin or I am assuming
> it
> > > gets
> > > > > > > > returned
> > > > > > > > > by
> > > > > > > > > > > the
> > > > > > > > > > > > > > > > expand=info
> > > > > > > > > > > > > > > > > > > call?
> > > > > > > > > > > > > > > > > > > > > > > > 2) I am not aware of this and
> > > hence
> > > > > > > asking,
> > > > > > > > > > can 2
> > > > > > > > > > > > > > > > connectors
> > > > > > > > > > > > > > > > > > with
> > > > > > > > > > > > > > > > > > > > > different
> > > > > > > > > > > > > > > > > > > > > > > > versions have the same name?
> > Does
> > > > the
> > > > > > > > plugin
> > > > > > > > > > > > isolation
> > > > > > > > > > > > > > > > allow
> > > > > > > > > > > > > > > > > > > this?
> > > > > > > > > > > > > > > > > > > > > This
> > > > > > > > > > > > > > > > > > > > > > > > could have a bearing when
> using
> > > the
> > > > > > > > lifecycle
> > > > > > > > > > > > > > endpoints for
> > > > > > > > > > > > > > > > > > > > > connectors like
> > > > > > > > > > > > > > > > > > > > > > > > DELETE etc.
> > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > Thanks!
> > > > > > > > > > > > > > > > > > > > > > > > Sagar.
> > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > On Tue, Nov 22, 2022 at 2:10
> PM
> > > > > Ashwin
> > > > > > > > > > > > > > > > > > > <apan...@confluent.io.invalid
> > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > Hi Snehasis,
> > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > IIUC (please correct me
> if
> > I
> > > am
> > > > > > wrong
> > > > > > > > > > here),
> > > > > > > > > > > > what
> > > > > > > > > > > > > > you
> > > > > > > > > > > > > > > > > > > highlighted
> > > > > > > > > > > > > > > > > > > > > > > > above,
> > > > > > > > > > > > > > > > > > > > > > > > > is
> > > > > > > > > > > > > > > > > > > > > > > > > a versioning scheme for a
> > > > connector
> > > > > > > > config
> > > > > > > > > > for
> > > > > > > > > > > > the
> > > > > > > > > > > > > > same
> > > > > > > > > > > > > > > > > > > connector
> > > > > > > > > > > > > > > > > > > > > (and
> > > > > > > > > > > > > > > > > > > > > > > > not
> > > > > > > > > > > > > > > > > > > > > > > > > different versions of a
> > > connector
> > > > > > > > plugin).
> > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > Sorry for not being more
> > > precise
> > > > in
> > > > > > my
> > > > > > > > > > wording
> > > > > > > > > > > > -  I
> > > > > > > > > > > > > > meant
> > > > > > > > > > > > > > > > > > > > > registering
> > > > > > > > > > > > > > > > > > > > > > > > > versions of schema for
> > > connector
> > > > > > > config.
> > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > Let's take the example of a
> > > > > fictional
> > > > > > > > > > connector
> > > > > > > > > > > > which
> > > > > > > > > > > > > > > > uses a
> > > > > > > > > > > > > > > > > > > > > fictional
> > > > > > > > > > > > > > > > > > > > > > > > AWS
> > > > > > > > > > > > > > > > > > > > > > > > > service.
> > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > Fictional Connector Config
> > > schema
> > > > > > > > > version:2.0
> > > > > > > > > > > > > > > > > > > > > > > > > ---
> > > > > > > > > > > > > > > > > > > > > > > > > {
> > > > > > > > > > > > > > > > > > > > > > > > >   "$schema": "
> > > > > > > > > > > > > > http://json-schema.org/draft-04/schema#";,
> > > > > > > > > > > > > > > > > > > > > > > > >   "type": "object",
> > > > > > > > > > > > > > > > > > > > > > > > >   "properties": {
> > > > > > > > > > > > > > > > > > > > > > > > >     "name": {
> > > > > > > > > > > > > > > > > > > > > > > > >       "type": "string"
> > > > > > > > > > > > > > > > > > > > > > > > >     },
> > > > > > > > > > > > > > > > > > > > > > > > >     "schema_version": {
> > > > > > > > > > > > > > > > > > > > > > > > >       "type": "string"
> > > > > > > > > > > > > > > > > > > > > > > > >     },
> > > > > > > > > > > > > > > > > > > > > > > > >     "aws_access_key": {
> > > > > > > > > > > > > > > > > > > > > > > > >       "type": "string"
> > > > > > > > > > > > > > > > > > > > > > > > >     },
> > > > > > > > > > > > > > > > > > > > > > > > >     "aws_secret_key": {
> > > > > > > > > > > > > > > > > > > > > > > > >       "type": "string"
> > > > > > > > > > > > > > > > > > > > > > > > >     }
> > > > > > > > > > > > > > > > > > > > > > > > >   },
> > > > > > > > > > > > > > > > > > > > > > > > >   "required": [
> > > > > > > > > > > > > > > > > > > > > > > > >     "name",
> > > > > > > > > > > > > > > > > > > > > > > > >     "schema_version",
> > > > > > > > > > > > > > > > > > > > > > > > >     "aws_access_key",
> > > > > > > > > > > > > > > > > > > > > > > > >     "aws_secret_key"
> > > > > > > > > > > > > > > > > > > > > > > > >   ]
> > > > > > > > > > > > > > > > > > > > > > > > > }
> > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > Fictional Connector config
> > > schema
> > > > > > > > > version:3.0
> > > > > > > > > > > > > > > > > > > > > > > > > ---
> > > > > > > > > > > > > > > > > > > > > > > > > {
> > > > > > > > > > > > > > > > > > > > > > > > >   "$schema": "
> > > > > > > > > > > > > > http://json-schema.org/draft-04/schema#";,
> > > > > > > > > > > > > > > > > > > > > > > > >   "type": "object",
> > > > > > > > > > > > > > > > > > > > > > > > >   "properties": {
> > > > > > > > > > > > > > > > > > > > > > > > >     "name": {
> > > > > > > > > > > > > > > > > > > > > > > > >       "type": "string"
> > > > > > > > > > > > > > > > > > > > > > > > >     },
> > > > > > > > > > > > > > > > > > > > > > > > >     "schema_version": {
> > > > > > > > > > > > > > > > > > > > > > > > >       "type": "string"
> > > > > > > > > > > > > > > > > > > > > > > > >     },
> > > > > > > > > > > > > > > > > > > > > > > > >     "iam_role": {
> > > > > > > > > > > > > > > > > > > > > > > > >       "type": "string"
> > > > > > > > > > > > > > > > > > > > > > > > >     }
> > > > > > > > > > > > > > > > > > > > > > > > >   },
> > > > > > > > > > > > > > > > > > > > > > > > >   "required": [
> > > > > > > > > > > > > > > > > > > > > > > > >     "name",
> > > > > > > > > > > > > > > > > > > > > > > > >     "schema_version",
> > > > > > > > > > > > > > > > > > > > > > > > >     "iam_role"
> > > > > > > > > > > > > > > > > > > > > > > > >   ]
> > > > > > > > > > > > > > > > > > > > > > > > > }
> > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > The connector which
> supports
> > > > > > Fictional
> > > > > > > > > config
> > > > > > > > > > > > schema
> > > > > > > > > > > > > > 2.0
> > > > > > > > > > > > > > > > > > will
> > > > > > > > > > > > > > > > > > > > > validate
> > > > > > > > > > > > > > > > > > > > > > > > the
> > > > > > > > > > > > > > > > > > > > > > > > > access key and secret key.
> > > > > > > > > > > > > > > > > > > > > > > > > Whereas a connector which
> > > > supports
> > > > > > > config
> > > > > > > > > > with
> > > > > > > > > > > > schema
> > > > > > > > > > > > > > > > version
> > > > > > > > > > > > > > > > > > > 3.0
> > > > > > > > > > > > > > > > > > > > > will
> > > > > > > > > > > > > > > > > > > > > > > > only
> > > > > > > > > > > > > > > > > > > > > > > > > validate the IAM role.
> > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > This is the alternative
> > which I
> > > > > > wanted
> > > > > > > to
> > > > > > > > > > > > suggest.
> > > > > > > > > > > > > > Each
> > > > > > > > > > > > > > > > > > plugin
> > > > > > > > > > > > > > > > > > > will
> > > > > > > > > > > > > > > > > > > > > > > > > register the schema
> versions
> > of
> > > > > > > connector
> > > > > > > > > > > config
> > > > > > > > > > > > > > which it
> > > > > > > > > > > > > > > > > > > supports.
> > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > The plugin paths may be
> > > > optionally
> > > > > > > > > different
> > > > > > > > > > > > i.e  we
> > > > > > > > > > > > > > > > don't
> > > > > > > > > > > > > > > > > > > have to
> > > > > > > > > > > > > > > > > > > > > > > > > mandatorily add a new
> plugin
> > > path
> > > > > to
> > > > > > > > > support
> > > > > > > > > > a
> > > > > > > > > > > > new
> > > > > > > > > > > > > > schema
> > > > > > > > > > > > > > > > > > > version.
> > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > Thanks,
> > > > > > > > > > > > > > > > > > > > > > > > > Ashwin
> > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > On Tue, Nov 22, 2022 at
> 12:47
> > > PM
> > > > > > > > Snehashis
> > > > > > > > > <
> > > > > > > > > > > > > > > > > > > > > snehashisp1...@gmail.com>
> > > > > > > > > > > > > > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > Thanks for the input
> > Ashwin.
> > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > 1. Can you elaborate on
> > the
> > > > > > > rejected
> > > > > > > > > > > > > > alternatives ?
> > > > > > > > > > > > > > > > > > Suppose
> > > > > > > > > > > > > > > > > > > > > connector
> > > > > > > > > > > > > > > > > > > > > > > > > > > config is versioned and
> > > has a
> > > > > > > schema.
> > > > > > > > > > Then
> > > > > > > > > > > a
> > > > > > > > > > > > > > single
> > > > > > > > > > > > > > > > > > plugin
> > > > > > > > > > > > > > > > > > > > > (whose
> > > > > > > > > > > > > > > > > > > > > > > > > > > dependencies have not
> > > > changed)
> > > > > > can
> > > > > > > > > handle
> > > > > > > > > > > > > > multiple
> > > > > > > > > > > > > > > > config
> > > > > > > > > > > > > > > > > > > > > versions
> > > > > > > > > > > > > > > > > > > > > > > > for
> > > > > > > > > > > > > > > > > > > > > > > > > > the
> > > > > > > > > > > > > > > > > > > > > > > > > > > same connector class.
> > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > IIUC (please correct me
> if
> > I
> > > am
> > > > > > wrong
> > > > > > > > > > here),
> > > > > > > > > > > > what
> > > > > > > > > > > > > > you
> > > > > > > > > > > > > > > > > > > highlighted
> > > > > > > > > > > > > > > > > > > > > > > > above,
> > > > > > > > > > > > > > > > > > > > > > > > > is
> > > > > > > > > > > > > > > > > > > > > > > > > > a versioning scheme for a
> > > > > connector
> > > > > > > > > config
> > > > > > > > > > > for
> > > > > > > > > > > > the
> > > > > > > > > > > > > > same
> > > > > > > > > > > > > > > > > > > > > connector (and
> > > > > > > > > > > > > > > > > > > > > > > > > not
> > > > > > > > > > > > > > > > > > > > > > > > > > different versions of a
> > > > connector
> > > > > > > > > plugin).
> > > > > > > > > > > > That is
> > > > > > > > > > > > > > a
> > > > > > > > > > > > > > > > > > somewhat
> > > > > > > > > > > > > > > > > > > > > > > > tangential
> > > > > > > > > > > > > > > > > > > > > > > > > > problem. While it is
> > > > definitely a
> > > > > > > > useful
> > > > > > > > > > > > feature to
> > > > > > > > > > > > > > > > have,
> > > > > > > > > > > > > > > > > > > like a
> > > > > > > > > > > > > > > > > > > > > log to
> > > > > > > > > > > > > > > > > > > > > > > > > > check what changes were
> > made
> > > > over
> > > > > > > time
> > > > > > > > to
> > > > > > > > > > the
> > > > > > > > > > > > > > config
> > > > > > > > > > > > > > > > which
> > > > > > > > > > > > > > > > > > > might
> > > > > > > > > > > > > > > > > > > > > make
> > > > > > > > > > > > > > > > > > > > > > > > it
> > > > > > > > > > > > > > > > > > > > > > > > > > easier to do rollbacks,
> it
> > is
> > > > not
> > > > > > the
> > > > > > > > > focus
> > > > > > > > > > > > here.
> > > > > > > > > > > > > > Here
> > > > > > > > > > > > > > > > by
> > > > > > > > > > > > > > > > > > > > > version we
> > > > > > > > > > > > > > > > > > > > > > > > mean
> > > > > > > > > > > > > > > > > > > > > > > > > > to say what underlying
> > > version
> > > > of
> > > > > > the
> > > > > > > > > > plugin
> > > > > > > > > > > > > > should the
> > > > > > > > > > > > > > > > > > given
> > > > > > > > > > > > > > > > > > > > > > > > > configuration
> > > > > > > > > > > > > > > > > > > > > > > > > > of the connector use.
> > Perhaps
> > > > it
> > > > > is
> > > > > > > > > better
> > > > > > > > > > to
> > > > > > > > > > > > > > change
> > > > > > > > > > > > > > > > the
> > > > > > > > > > > > > > > > > > > name of
> > > > > > > > > > > > > > > > > > > > > the
> > > > > > > > > > > > > > > > > > > > > > > > > > parameter from
> > > > connector.version
> > > > > to
> > > > > > > > > > > > > > > > > > connector.plugin.version
> > > > > > > > > > > > > > > > > > > or
> > > > > > > > > > > > > > > > > > > > > > > > > > plugin.version if it was
> > > > > confusing.
> > > > > > > > wdyt?
> > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > >  2. Any plans to
> support
> > > > > assisted
> > > > > > > > > > migration
> > > > > > > > > > > > e.g
> > > > > > > > > > > > > > if a
> > > > > > > > > > > > > > > > user
> > > > > > > > > > > > > > > > > > > > > invokes
> > > > > > > > > > > > > > > > > > > > > > > > "POST
> > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > connector/config?migrate=latest",
> > > > > > > the
> > > > > > > > > > > latest
> > > > > > > > > > > > > > version
> > > > > > > > > > > > > > > > > > > > > __attempts__ to
> > > > > > > > > > > > > > > > > > > > > > > > > > > transform the existing
> > > config
> > > > > to
> > > > > > > the
> > > > > > > > > > newer
> > > > > > > > > > > > > > version.
> > > > > > > > > > > > > > > > This
> > > > > > > > > > > > > > > > > > > would
> > > > > > > > > > > > > > > > > > > > > > > > require
> > > > > > > > > > > > > > > > > > > > > > > > > > > adding a method like
> > > "boolean
> > > > > > > > > > > migrate(Version
> > > > > > > > > > > > > > > > > > > fromVersion)" to
> > > > > > > > > > > > > > > > > > > > > the
> > > > > > > > > > > > > > > > > > > > > > > > > > > connector interface.
> > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > This is an enhancement we
> > can
> > > > > think
> > > > > > > of
> > > > > > > > > > doing
> > > > > > > > > > > in
> > > > > > > > > > > > > > future.
> > > > > > > > > > > > > > > > > > > Users can
> > > > > > > > > > > > > > > > > > > > > > > > simply
> > > > > > > > > > > > > > > > > > > > > > > > > do
> > > > > > > > > > > > > > > > > > > > > > > > > > a PUT call with the
> updated
> > > > > config
> > > > > > > > which
> > > > > > > > > > has
> > > > > > > > > > > > the
> > > > > > > > > > > > > > > > updated
> > > > > > > > > > > > > > > > > > > version
> > > > > > > > > > > > > > > > > > > > > > > > number.
> > > > > > > > > > > > > > > > > > > > > > > > > > The assisted mode could
> be
> > > > handy
> > > > > as
> > > > > > > the
> > > > > > > > > > user
> > > > > > > > > > > > does
> > > > > > > > > > > > > > not
> > > > > > > > > > > > > > > > need
> > > > > > > > > > > > > > > > > > to
> > > > > > > > > > > > > > > > > > > > > know the
> > > > > > > > > > > > > > > > > > > > > > > > > > config but beyond this it
> > > does
> > > > > not
> > > > > > > seem
> > > > > > > > > to
> > > > > > > > > > > > justify
> > > > > > > > > > > > > > its
> > > > > > > > > > > > > > > > > > > existence.
> > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > Regards
> > > > > > > > > > > > > > > > > > > > > > > > > > Snehashis
> > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > On Tue, Nov 22, 2022 at
> > 10:50
> > > > AM
> > > > > > > Ashwin
> > > > > > > > > > > > > > > > > > > > > <apan...@confluent.io.invalid>
> > > > > > > > > > > > > > > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > Hi Snehasis,
> > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > This is a really useful
> > > > feature
> > > > > > and
> > > > > > > > > > thanks
> > > > > > > > > > > > for
> > > > > > > > > > > > > > > > initiating
> > > > > > > > > > > > > > > > > > > this
> > > > > > > > > > > > > > > > > > > > > > > > > > discussion.
> > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > I had the following
> > > > questions -
> > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > 1. Can you elaborate on
> > the
> > > > > > > rejected
> > > > > > > > > > > > > > alternatives ?
> > > > > > > > > > > > > > > > > > Suppose
> > > > > > > > > > > > > > > > > > > > > connector
> > > > > > > > > > > > > > > > > > > > > > > > > > > config is versioned and
> > > has a
> > > > > > > schema.
> > > > > > > > > > Then
> > > > > > > > > > > a
> > > > > > > > > > > > > > single
> > > > > > > > > > > > > > > > > > plugin
> > > > > > > > > > > > > > > > > > > > > (whose
> > > > > > > > > > > > > > > > > > > > > > > > > > > dependencies have not
> > > > changed)
> > > > > > can
> > > > > > > > > handle
> > > > > > > > > > > > > > multiple
> > > > > > > > > > > > > > > > config
> > > > > > > > > > > > > > > > > > > > > versions
> > > > > > > > > > > > > > > > > > > > > > > > for
> > > > > > > > > > > > > > > > > > > > > > > > > > the
> > > > > > > > > > > > > > > > > > > > > > > > > > > same connector class.
> > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > 2. Any plans to support
> > > > > assisted
> > > > > > > > > > migration
> > > > > > > > > > > > e.g
> > > > > > > > > > > > > > if a
> > > > > > > > > > > > > > > > user
> > > > > > > > > > > > > > > > > > > > > invokes
> > > > > > > > > > > > > > > > > > > > > > > > "POST
> > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > connector/config?migrate=latest",
> > > > > > > the
> > > > > > > > > > > latest
> > > > > > > > > > > > > > version
> > > > > > > > > > > > > > > > > > > > > __attempts__ to
> > > > > > > > > > > > > > > > > > > > > > > > > > > transform the existing
> > > config
> > > > > to
> > > > > > > the
> > > > > > > > > > newer
> > > > > > > > > > > > > > version.
> > > > > > > > > > > > > > > > This
> > > > > > > > > > > > > > > > > > > would
> > > > > > > > > > > > > > > > > > > > > > > > require
> > > > > > > > > > > > > > > > > > > > > > > > > > > adding a method like
> > > "boolean
> > > > > > > > > > > migrate(Version
> > > > > > > > > > > > > > > > > > > fromVersion)" to
> > > > > > > > > > > > > > > > > > > > > the
> > > > > > > > > > > > > > > > > > > > > > > > > > > connector interface.
> > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks,
> > > > > > > > > > > > > > > > > > > > > > > > > > > Ashwin
> > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > On Mon, Nov 21, 2022 at
> > > 2:27
> > > > PM
> > > > > > > > > > Snehashis <
> > > > > > > > > > > > > > > > > > > > > snehashisp1...@gmail.com>
> > > > > > > > > > > > > > > > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi all,
> > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > I'd like to start a
> > > > > discussion
> > > > > > > > thread
> > > > > > > > > > on
> > > > > > > > > > > > > > KIP-891:
> > > > > > > > > > > > > > > > > > Running
> > > > > > > > > > > > > > > > > > > > > multiple
> > > > > > > > > > > > > > > > > > > > > > > > > > > versions
> > > > > > > > > > > > > > > > > > > > > > > > > > > > of a connector.
> > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > The KIP aims to add
> the
> > > > > ability
> > > > > > > for
> > > > > > > > > the
> > > > > > > > > > > > connect
> > > > > > > > > > > > > > > > runtime
> > > > > > > > > > > > > > > > > > > to
> > > > > > > > > > > > > > > > > > > > > run
> > > > > > > > > > > > > > > > > > > > > > > > > multiple
> > > > > > > > > > > > > > > > > > > > > > > > > > > > versions of a
> > connector.
> > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-891%3A+Running+multiple+versions+of+a+connector
> > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > Please take a look
> and
> > > let
> > > > me
> > > > > > > know
> > > > > > > > > what
> > > > > > > > > > > you
> > > > > > > > > > > > > > think.
> > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > Thank you
> > > > > > > > > > > > > > > > > > > > > > > > > > > > Snehashis Pal
> > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to