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