Hi Chris, Thanks for the explanation. Since there are workarounds and we are not making it any worse, this should be fine.
Regards, Rajini On Wed, May 8, 2019 at 8:06 PM Chris Egerton <chr...@confluent.io> wrote: > Hi Rajini, > > That was an initial concern of mine as well but I think we should be fine. > Connect REST extensions are already capable of intercepting requests that > contain new connector configurations, through POST calls to the /connectors > endpoint and PUT calls to /connectors/<name>/config. The additional method > you pointed out would extend that capability to include not just new > connector configurations but existing connector configurations (by querying > the Connect herder) as well. > > Neither should be a problem because, as of the merging of > https://github.com/apache/kafka/pull/6129 (which addressed > https://issues.apache.org/jira/browse/KAFKA-5117), both of those > configurations can make use of the ConfigProvider mechanism in Connect to > hide sensitive configs. > > If that mechanism is not used, connector configurations are available via > the Connect REST API through GET calls to /connectors/<name> and > /connectors/<name>/config, so it seems reasonable to enable REST extensions > to view them as well. > > I hope this addresses your concerns; I'm happy to continue the discussion > if any follow-up is necessary. > > Thanks for your thoughts! > > Cheers, > > Chris > > On Wed, May 8, 2019 at 11:19 AM Rajini Sivaram <rajinisiva...@gmail.com> > wrote: > > > Hi Chris, > > > > Thanks for the KIP, looks good. I have just one question. Can ` > > ConnectClusterState#connectorConfig()` return any sensitive configs like > > passwords? > > > > Thanks, > > > > Rajini > > > > On Wed, May 8, 2019 at 1:30 AM Chris Egerton <chr...@confluent.io> > wrote: > > > > > Hi all, > > > > > > Now that KAFKA-8304 (https://issues.apache.org/jira/browse/KAFKA-8304 > ), > > > which was a blocker, has been addressed, I've published a PR for these > > > changes: https://github.com/apache/kafka/pull/6584 > > > > > > Thanks to everyone who's voted so far! If anyone else is interested, > the > > > voting thread can be found here: > > > https://www.mail-archive.com/dev@kafka.apache.org/msg97458.html. > Current > > > status: +1 binding, +2 non-binding. > > > > > > Cheers, > > > > > > Chris > > > > > > On Tue, Apr 30, 2019 at 12:40 PM Chris Egerton <chr...@confluent.io> > > > wrote: > > > > > > > Hi Konstantine, > > > > > > > > I've updated the KIP to add default method implementations to the > list > > of > > > > rejected alternatives. Technically this makes the changes in the KIP > > > > backwards incompatible, but I think I agree that for the majority of > > > cases > > > > where it would even be an issue a compile-time error is likely to be > > more > > > > beneficial than one at run time. > > > > > > > > Thanks for your thoughts and thanks for the LGTM! > > > > > > > > Cheers, > > > > > > > > Chris > > > > > > > > On Mon, Apr 29, 2019 at 12:29 PM Konstantine Karantasis < > > > > konstant...@confluent.io> wrote: > > > > > > > >> Hi Chris, > > > >> > > > >> Thanks for considering my suggestion regarding default > implementations > > > for > > > >> the new methods. > > > >> However, given that these implementations don't seem to have sane > > > defaults > > > >> and throw UnsupportedOperationException, I think we'll be better > > without > > > >> defaults. > > > >> Seems that a compile time error is preferable here, for those who > want > > > to > > > >> upgrade their implementations. > > > >> > > > >> Otherwise, the KIP LGTM. > > > >> > > > >> Konstantine > > > >> > > > >> On Thu, Apr 25, 2019 at 10:29 PM Magesh Nandakumar < > > > mage...@confluent.io> > > > >> wrote: > > > >> > > > >> > Thanks a lot, Chris. The KIP looks good to me. > > > >> > > > > >> > On Thu, Apr 25, 2019 at 7:35 PM Chris Egerton < > chr...@confluent.io> > > > >> wrote: > > > >> > > > > >> > > Hi Magesh, > > > >> > > > > > >> > > Sounds good; I've updated the KIP to make ConnectClusterDetails > an > > > >> > > interface. If we want to leave the door open to expand it in the > > > >> future > > > >> > it > > > >> > > definitely makes sense to treat it similarly to how we're > treating > > > the > > > >> > > ConnectClusterState interface now. > > > >> > > > > > >> > > Thanks, > > > >> > > > > > >> > > Chris > > > >> > > > > > >> > > On Thu, Apr 25, 2019 at 4:18 PM Magesh Nandakumar < > > > >> mage...@confluent.io> > > > >> > > wrote: > > > >> > > > > > >> > > > HI Chrise, > > > >> > > > > > > >> > > > Overall it looks good to me. Just one last comment - I was > > > >> wondering if > > > >> > > > ConnectClusterDetail should be an interface just like > > > >> > > ConnectClusterState. > > > >> > > > > > > >> > > > Thanks, > > > >> > > > Magesh > > > >> > > > > > > >> > > > On Thu, Apr 25, 2019 at 3:54 PM Chris Egerton < > > > chr...@confluent.io> > > > >> > > wrote: > > > >> > > > > > > >> > > > > Hi Magesh, > > > >> > > > > > > > >> > > > > Expanding the type we use to convey cluster metadata from > > just a > > > >> > Kafka > > > >> > > > > cluster ID string to its own class seems like a good idea > for > > > the > > > >> > sake > > > >> > > of > > > >> > > > > forwards compatibility, but I'm still not sure what the > gains > > of > > > >> > > > including > > > >> > > > > the cluster group ID would be--it's a simple map lookup away > > in > > > >> the > > > >> > > REST > > > >> > > > > extension's configure(...) method. Including information on > > > >> whether > > > >> > the > > > >> > > > > cluster is distributed or standalone definitely seems > > > convenient; > > > >> as > > > >> > > far > > > >> > > > as > > > >> > > > > I can tell there's no easy way to do that from within a REST > > > >> > extension > > > >> > > at > > > >> > > > > the moment, and relying on something like the presence of a > > > >> group.id > > > >> > > > > property to identify a distributed cluster could result in > > false > > > >> > > > positives. > > > >> > > > > However, is there a use case for it? If not, we can note > that > > > as a > > > >> > > > possible > > > >> > > > > addition to the ConnectClusterDetails class for later but > > leave > > > it > > > >> > out > > > >> > > > for > > > >> > > > > now. > > > >> > > > > > > > >> > > > > I've updated the KIP to include the new > ConnectClusterDetails > > > >> class > > > >> > but > > > >> > > > > left out the cluster type information for now; let me know > > what > > > >> you > > > >> > > > think. > > > >> > > > > > > > >> > > > > Thanks again for your thoughts! > > > >> > > > > > > > >> > > > > Cheers, > > > >> > > > > > > > >> > > > > Chris > > > >> > > > > > > > >> > > > > On Wed, Apr 24, 2019 at 4:49 PM Magesh Nandakumar < > > > >> > > mage...@confluent.io> > > > >> > > > > wrote: > > > >> > > > > > > > >> > > > > > Hi Chris, > > > >> > > > > > > > > >> > > > > > Instead of calling it ConnectClusterId, perhaps call it > > > >> > > > > > ConnectClusterDetails which can include things like > groupid, > > > >> > > underlying > > > >> > > > > > kafkaclusterId, standalone or distributed, etc. This will > > help > > > >> > expose > > > >> > > > any > > > >> > > > > > cluster related information in the future. > > > >> > > > > > Let me know if that would work? > > > >> > > > > > > > > >> > > > > > Thanks, > > > >> > > > > > Magesh > > > >> > > > > > > > > >> > > > > > On Wed, Apr 24, 2019 at 4:26 PM Chris Egerton < > > > >> chr...@confluent.io > > > >> > > > > > >> > > > > wrote: > > > >> > > > > > > > > >> > > > > > > Hi Magesh, > > > >> > > > > > > > > > >> > > > > > > 1. After ruminating for a little while on the inclusion > > of a > > > >> > method > > > >> > > > to > > > >> > > > > > > retrieve task configurations I've tentatively decided to > > > >> remove > > > >> > it > > > >> > > > from > > > >> > > > > > the > > > >> > > > > > > proposal and place it in the rejected alternatives > > section. > > > If > > > >> > > anyone > > > >> > > > > > > presents a reasonable use case for it I'll be happy to > > > discuss > > > >> > > > further > > > >> > > > > > but > > > >> > > > > > > right now I think this is the way to go. Thanks for your > > > >> > > suggestion! > > > >> > > > > > > > > > >> > > > > > > 2. The idea of a Connect cluster ID method is certainly > > > >> > > fascinating, > > > >> > > > > but > > > >> > > > > > > there are a few questions it raises. First off, what > would > > > the > > > >> > > > > group.id > > > >> > > > > > be > > > >> > > > > > > for a standalone cluster? Second, why return a formatted > > > >> string > > > >> > > there > > > >> > > > > > > instead of a new class such as a ConnectClusterId that > > > >> provides > > > >> > the > > > >> > > > two > > > >> > > > > > in > > > >> > > > > > > separate methods? And lastly, since REST extensions are > > > >> > configured > > > >> > > > with > > > >> > > > > > all > > > >> > > > > > > of the properties available to the worker, wouldn't it > be > > > >> > possible > > > >> > > to > > > >> > > > > > just > > > >> > > > > > > get the group ID of the Connect cluster from there? The > > > reason > > > >> > I'd > > > >> > > > like > > > >> > > > > > to > > > >> > > > > > > see the Kafka cluster ID made available to REST > extensions > > > is > > > >> > that > > > >> > > > > > > retrieving it isn't as simple as reading a configuration > > > from > > > >> a > > > >> > > > > > properties > > > >> > > > > > > map and instead involves creating an admin client from > > those > > > >> > > > properties > > > >> > > > > > and > > > >> > > > > > > using it to perform a `describe cluster` call, which > comes > > > >> with > > > >> > its > > > >> > > > own > > > >> > > > > > > pitfalls as far as error handling, interruptions, and > > > timeouts > > > >> > go. > > > >> > > > > Since > > > >> > > > > > > this information is available to the herder already, it > > > seems > > > >> > like > > > >> > > a > > > >> > > > > good > > > >> > > > > > > tradeoff to expose that information to REST extensions > so > > > that > > > >> > > > > developers > > > >> > > > > > > don't have to duplicate that logic themselves. I'm > unsure > > > that > > > >> > the > > > >> > > > same > > > >> > > > > > > arguments would apply to exposing a group.id to REST > > > >> extensions > > > >> > > > > through > > > >> > > > > > > the > > > >> > > > > > > ConnectClusterInterface. What do you think? > > > >> > > > > > > > > > >> > > > > > > Thanks again for your thoughts! > > > >> > > > > > > > > > >> > > > > > > Cheers, > > > >> > > > > > > > > > >> > > > > > > Chris > > > >> > > > > > > > > > >> > > > > > > On Tue, Apr 23, 2019 at 4:18 PM Magesh Nandakumar < > > > >> > > > > mage...@confluent.io> > > > >> > > > > > > wrote: > > > >> > > > > > > > > > >> > > > > > > > Chris, > > > >> > > > > > > > > > > >> > > > > > > > I certainly would love to hear others thoughts on #1 > but > > > >> IMO, > > > >> > it > > > >> > > > > might > > > >> > > > > > > not > > > >> > > > > > > > be as useful as ConnectorConfigs and as you mentioned, > > we > > > >> could > > > >> > > > > always > > > >> > > > > > > add > > > >> > > > > > > > it when the need arises. > > > >> > > > > > > > Thanks for clarifying the details on my concern #2 > > > regarding > > > >> > the > > > >> > > > > > > > kafkaClusterId. While not a perfect fit in the > > interface, > > > >> I'm > > > >> > not > > > >> > > > > > > > completely opposed to having it in the interface. The > > > other > > > >> > > > option, I > > > >> > > > > > can > > > >> > > > > > > > think is to expose a connectClusterId() returning > > > group.id > > > >> + > > > >> > > > > > > > kafkaClusterId > > > >> > > > > > > > (with some delimiter) rather than returning the > > > >> kafkaClusterId. > > > >> > > If > > > >> > > > we > > > >> > > > > > > > choose to go this route, we can even make this a > > > first-class > > > >> > > > citizen > > > >> > > > > of > > > >> > > > > > > the > > > >> > > > > > > > Herder interface. Let me know what you think. > > > >> > > > > > > > > > > >> > > > > > > > Thanks > > > >> > > > > > > > Magesh > > > >> > > > > > > > > > > >> > > > > > > > On Thu, Apr 18, 2019 at 2:45 PM Chris Egerton < > > > >> > > chr...@confluent.io > > > >> > > > > > > > >> > > > > > > wrote: > > > >> > > > > > > > > > > >> > > > > > > > > Hi Magesh, > > > >> > > > > > > > > > > > >> > > > > > > > > Thanks for your comments. I'll address them in the > > order > > > >> you > > > >> > > > > provided > > > >> > > > > > > > them: > > > >> > > > > > > > > > > > >> > > > > > > > > 1 - Reason for exposing task configurations to REST > > > >> > extensions: > > > >> > > > > > > > > Yes, the motivation is a little thin for exposing > task > > > >> > configs > > > >> > > to > > > >> > > > > > REST > > > >> > > > > > > > > extensions. I can think of a few uses for this > > > >> functionality, > > > >> > > > such > > > >> > > > > as > > > >> > > > > > > > > attempting to infer problematic configurations by > > > >> examining > > > >> > > > failed > > > >> > > > > > > tasks > > > >> > > > > > > > > and comparing their configurations to the > > configurations > > > >> of > > > >> > > > running > > > >> > > > > > > > tasks, > > > >> > > > > > > > > but like you've indicated it's dubious that the best > > > place > > > >> > for > > > >> > > > > > anything > > > >> > > > > > > > > like that belongs in a REST extension. > > > >> > > > > > > > > I'd be interested to hear others' thoughts, but > right > > > now > > > >> I'm > > > >> > > not > > > >> > > > > too > > > >> > > > > > > > > opposed to erring on the side of caution and leaving > > it > > > >> out. > > > >> > > > Worst > > > >> > > > > > > case, > > > >> > > > > > > > it > > > >> > > > > > > > > takes another KIP to add this later on down the > road, > > > but > > > >> > > that's > > > >> > > > a > > > >> > > > > > > small > > > >> > > > > > > > > price to pay to avoid adding support for a feature > > that > > > >> > nobody > > > >> > > > > needs. > > > >> > > > > > > > > > > > >> > > > > > > > > 2. Usefulness of exposing Kafka cluster ID to REST > > > >> > extensions: > > > >> > > > > > > > > As the KIP states, "the Kafka cluster ID may be > useful > > > for > > > >> > the > > > >> > > > > > purpose > > > >> > > > > > > of > > > >> > > > > > > > > uniquely identifying a Connect cluster from within a > > > REST > > > >> > > > > extension, > > > >> > > > > > > > since > > > >> > > > > > > > > users may be running multiple Kafka clusters and the > > > >> > group.id > > > >> > > > for > > > >> > > > > a > > > >> > > > > > > > > distributed Connect cluster may not be sufficient to > > > >> > identify a > > > >> > > > > > > cluster." > > > >> > > > > > > > > Even though there may be producer or consumer > > overrides > > > >> for > > > >> > > > > > > > > bootstrap.servers present in the configuration for > the > > > >> > worker, > > > >> > > > > these > > > >> > > > > > > will > > > >> > > > > > > > > not affect which Kafka cluster is used as a backing > > > store > > > >> for > > > >> > > > > > connector > > > >> > > > > > > > > configurations, offsets, and statuses, so the Kafka > > > >> cluster > > > >> > ID > > > >> > > > for > > > >> > > > > > the > > > >> > > > > > > > > worker in conjunction with the Connect group ID > should > > > be > > > >> > > > > sufficient > > > >> > > > > > to > > > >> > > > > > > > > uniquely identify a Connect cluster. > > > >> > > > > > > > > We can and should document that the Connect cluster > > with > > > >> > > > overridden > > > >> > > > > > > > > producer.bootstrap.servers or > > consumer.bootstrap.servers > > > >> may > > > >> > be > > > >> > > > > > writing > > > >> > > > > > > > > to/reading from a different Kafka cluster. However, > > REST > > > >> > > > extensions > > > >> > > > > > are > > > >> > > > > > > > > already passed the configs for their worker through > > > their > > > >> > > > > > > configure(...) > > > >> > > > > > > > > method, so they'd be able to detect any such > overrides > > > and > > > >> > act > > > >> > > > > > > > accordingly. > > > >> > > > > > > > > > > > >> > > > > > > > > Thanks again for your thoughts! > > > >> > > > > > > > > > > > >> > > > > > > > > Cheers, > > > >> > > > > > > > > > > > >> > > > > > > > > Chris > > > >> > > > > > > > > > > > >> > > > > > > > > On Thu, Apr 18, 2019 at 11:08 AM Magesh Nandakumar < > > > >> > > > > > > mage...@confluent.io > > > >> > > > > > > > > > > > >> > > > > > > > > wrote: > > > >> > > > > > > > > > > > >> > > > > > > > > > Hi Chris, > > > >> > > > > > > > > > > > > >> > > > > > > > > > Thanks for the KIP. Overall, it looks good and > > > >> > > straightforward > > > >> > > > to > > > >> > > > > > me. > > > >> > > > > > > > > > > > > >> > > > > > > > > > I had a few questions on the new methods > > > >> > > > > > > > > > > > > >> > > > > > > > > > 1. I'm not sure if an extension would ever require > > the > > > >> task > > > >> > > > > > configs. > > > >> > > > > > > An > > > >> > > > > > > > > > extension generally should only require the health > > and > > > >> > > current > > > >> > > > > > state > > > >> > > > > > > of > > > >> > > > > > > > > the > > > >> > > > > > > > > > connector which includes the connector config. I > was > > > >> > > wondering > > > >> > > > if > > > >> > > > > > > there > > > >> > > > > > > > > is > > > >> > > > > > > > > > a specific reason it would need task configs. > > > >> > > > > > > > > > 2. Also, I'm not convinced that kafkaClusterId() > > > >> belongs to > > > >> > > the > > > >> > > > > > > > > > ConnectClusterState > > > >> > > > > > > > > > interface. The interface is generally to provide > > > >> > information > > > >> > > > > about > > > >> > > > > > > the > > > >> > > > > > > > > > Connect cluster and its information. Also, the > > > >> > > kafkaClusterId > > > >> > > > > > could > > > >> > > > > > > > > > potentially change based on whether there is a > > > >> "producer." > > > >> > or > > > >> > > > > > > > "consumer." > > > >> > > > > > > > > > prefix, right? > > > >> > > > > > > > > > > > > >> > > > > > > > > > Having said that, I would prefer to have > > > >> connectorConfigs > > > >> > > > which I > > > >> > > > > > > think > > > >> > > > > > > > > is > > > >> > > > > > > > > > a great idea and addition to the interface. Let me > > > know > > > >> > what > > > >> > > > you > > > >> > > > > > > think. > > > >> > > > > > > > > > > > > >> > > > > > > > > > Thanks, > > > >> > > > > > > > > > Magesh > > > >> > > > > > > > > > > > > >> > > > > > > > > > On Sat, Apr 13, 2019 at 9:00 PM Chris Egerton < > > > >> > > > > chr...@confluent.io > > > >> > > > > > > > > > >> > > > > > > > > wrote: > > > >> > > > > > > > > > > > > >> > > > > > > > > > > Hi all, > > > >> > > > > > > > > > > > > > >> > > > > > > > > > > I've posted "KIP-454: Expansion of the > > > >> > ConnectClusterState > > > >> > > > > > > > interface", > > > >> > > > > > > > > > > which proposes that we add provide more > > information > > > >> about > > > >> > > the > > > >> > > > > > > Connect > > > >> > > > > > > > > > > cluster to REST extensions. > > > >> > > > > > > > > > > > > > >> > > > > > > > > > > The KIP can be found at > > > >> > > > > > > > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > > > > > >> > > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-454%3A+Expansion+of+the+ConnectClusterState+interface > > > >> > > > > > > > > > > > > > >> > > > > > > > > > > I'm eager to hear people's thoughts on this and > > will > > > >> > > > appreciate > > > >> > > > > > any > > > >> > > > > > > > > > > feedback. > > > >> > > > > > > > > > > > > > >> > > > > > > > > > > Cheers, > > > >> > > > > > > > > > > > > > >> > > > > > > > > > > Chris > > > >> > > > > > > > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > > > > > >> > > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > > > > > > > >