Thanks, Rajini. That makes sense. regards, Colin
On Tue, Jan 9, 2018, at 14:38, Rajini Sivaram wrote: > Hi Colin, > > Thank you for reviewing. > > Yes, validation is done on the broker, not the client. > > All configs from ZooKeeper are processed and any config that could not be > applied are logged as warnings. This includes any configs that are not > dynamic in the broker version or any configs that are not supported in the > broker version. If you downgrade to a version that is older than this KIP > (1.0 for example), then you don't get any warnings however. > > > On Tue, Jan 9, 2018 at 9:38 PM, Colin McCabe <cmcc...@apache.org> wrote: > > > On Mon, Dec 18, 2017, at 13:40, Jason Gustafson wrote: > > > Hi Rajini, > > > > > > Looking good. Just a few questions. > > > > > > 1. (Related to Jay's comment) Is the validate() method on Reconfigurable > > > necessary? I would have thought we'd validate using the ConfigDef. Do you > > > have a use case in mind in which the reconfigurable component only > > permits > > > certain reconfigurations? > > > > Hi, > > > > Sorry if this is a dumb question, but when we talk about validating on the > > ConfigDef, we're talking about validating on the server side, right? The > > software on the client side might be older or newer than the software on > > the broker side, so it seems inadvisable to do the validation there. > > > > Also, after a software downgrade, when the broker is restarted, it might > > find that there is a configuration key that is stored in ZK that is not > > dynamic in its (older) software version. It seems like, with the current > > proposal, the broker will use the value found in the local configuration > > (config file) rather than the new ZK version. Should the broker print out > > a WARN message in that scenario? > > > > best, > > Colin > > > > > 2. Should Reconfigurable extend Configurable or is the initial > > > configuration also done through reconfigure()? I ask because not all > > > plugins interfaces currently extend Configurable (e.g. > > > KafkaPrincipalBuilder). > > > 3. You mentioned a couple changes to DescribeConfigsOptions and > > > DescribeConfigsResult. Perhaps we should list the changes explicitly? One > > > not totally obvious case is what the synonyms() getter would return if > > the > > > option is not specified (i.e. should it raise an exception or return an > > > empty list?). > > > 4. Config entries in the DescribeConfigs response have an is_default > > flag. > > > Could that be replaced with the more general config_source? > > > 5. Bit of an internal question, but how do you handle config > > dependencies? > > > For example, suppose I want to add a listener and configure its principal > > > builder at once. You'd have to validate the principal builder config in > > the > > > context of the listener config, so I guess the order of the entries in > > > AlterConfigs is significant? > > > 6. KIP-48 (delegation tokens) gives us a master secret which is shared by > > > all brokers. Do you think we would make this dynamically configurable? > > > Alternatively, it might be possible to use it to encrypt the other > > > passwords we store in zookeeper. > > > > > > Thanks, > > > Jason > > > > > > > > > > > > On Mon, Dec 18, 2017 at 10:16 AM, Rajini Sivaram < > > rajinisiva...@gmail.com> > > > wrote: > > > > > > > Hi Jay, > > > > > > > > Thank you for reviewing the KIP. > > > > > > > > 1) Yes, makes sense. I will update the PR. There are some config > > updates > > > > that may be allowed depending on the context (e.g. some security > > configs > > > > can be updated for new listeners, but not existing listeners). Perhaps > > it > > > > is ok to mark them dynamic in the documentation. AdminClient would give > > > > appropriate error messages if the update is not allowed. > > > > 2) Internally, in the implementation, a mixture of direct config > > updates > > > > (e.g log config as you have pointed out) and reconfigure method > > invocations > > > > (e.g. SslFactory) are used. For configurable plugins (e.g. metrics > > > > reporter), we require the Reconfigurable interface to ensure that we > > can > > > > validate any custom configs and avoid reconfiguration for plugin > > versions > > > > that don't support it. > > > > > > > > > > > > On Mon, Dec 18, 2017 at 5:49 PM, Jay Kreps <j...@confluent.io> wrote: > > > > > > > > > Two thoughts on implementation (shouldn't effect the KIP): > > > > > > > > > > 1. It might be nice to add a parameter to ConfigDef which says > > > > whether a > > > > > configuration is dynamically updatable or not so that we can give > > > > error > > > > > messages if it isn't and also have it reflected in the > > auto-generated > > > > > docs. > > > > > 2. For many systems they don't really need to take action if a > > config > > > > > changes, they just need to use the new value. Changing them all to > > > > > Reconfigurable requires managing a fair amount of mutability in > > each > > > > > class > > > > > that accepts changes. Some need this since they need to take > > actions > > > > > when a > > > > > config changes, but it seems like many just need to update some > > value. > > > > > For > > > > > the later you might just be able to do something like what we do > > for > > > > > LogConfig where there is a single CurrentConfig instance that has > > a > > > > > reference to the current KafkaConfig and always reference your > > > > > configurable > > > > > parameters via this (e.g. config.current.myConfig). Dunno if that > > is > > > > > actually better, but thought I'd throw it out there. > > > > > > > > > > -Jay > > > > > > > > > > On Sun, Dec 10, 2017 at 8:09 AM, Rajini Sivaram < > > rajinisiva...@gmail.com > > > > > > > > > > wrote: > > > > > > > > > > > Hi Jun, > > > > > > > > > > > > Thank you! > > > > > > > > > > > > 5. Yes, that makes sense. Agree that we don't want to add protocol > > > > > changes > > > > > > to *UpdateMetadataRequest* in this KIP. I have moved the update of > > > > > > *log.message.format.version* and *inter.broker.protocol.version* > > to > > > > > reduce > > > > > > restarts during upgrade to* Future Work*. We can do this in a > > follow-on > > > > > > KIP. > > > > > > > > > > > > I will wait for another day to see if there are any more comments > > and > > > > > start > > > > > > vote on Tuesday if there are no other concerns. > > > > > > > > > > > > > > > > > > On Sat, Dec 9, 2017 at 12:22 AM, Jun Rao <j...@confluent.io> wrote: > > > > > > > > > > > > > Hi, Rajini, > > > > > > > > > > > > > > Thanks for the reply. They all make sense. > > > > > > > > > > > > > > 5. Got it. Note that currently, only live brokers are registered > > in > > > > ZK. > > > > > > > Another thing is that I am not sure that we want every broker to > > read > > > > > all > > > > > > > broker registrations directly from ZK. It's probably better to > > have > > > > the > > > > > > > controller propagate this information. That will require > > changing the > > > > > > > UpdateMetadataRequest protocol though. So, I am not sure if you > > want > > > > to > > > > > > do > > > > > > > that in the same KIP. > > > > > > > > > > > > > > Jun > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Fri, Dec 8, 2017 at 6:07 AM, Rajini Sivaram < > > > > > rajinisiva...@gmail.com> > > > > > > > wrote: > > > > > > > > > > > > > > > Hi Jun, > > > > > > > > > > > > > > > > Thank you for the review. > > > > > > > > > > > > > > > > 1. No, I am hoping to migrate partitions to new threads. We > > just > > > > need > > > > > > to > > > > > > > > ensure they don't run concurrently. > > > > > > > > > > > > > > > > 2. AdminClient has a validateOnly option for AlterConfigs. Any > > > > > > exceptions > > > > > > > > or return value of false from Reconfigurable#validate would > > fail > > > > the > > > > > > > > AlterConfigsRequest. > > > > > > > > > > > > > > > > 3. Yes, we will support describe and alter of configs with > > listener > > > > > > > prefix. > > > > > > > > We will not allow alterConfigs() of security configs without > > the > > > > > > listener > > > > > > > > prefix, since we need to prevent the whole cluster being made > > > > > unusable. > > > > > > > > > > > > > > > > 4. Thank you, will make a note of that. > > > > > > > > > > > > > > > > 5. When we are upgrading (from 1.0 to 2.0 for example), my > > > > > > understanding > > > > > > > is > > > > > > > > that we set inter.broker.protocol.version=1.0, do a rolling > > > > upgrade > > > > > of > > > > > > > the > > > > > > > > whole cluster and when all brokers are at 2.0, we do another > > > > rolling > > > > > > > > upgrade with inter.broker.protocol.version=2.0. Jason's > > suggestion > > > > > was > > > > > > > to > > > > > > > > avoid the second rolling upgrade by enabling dynamic update of > > > > > > > > inter.broker.protocol.version. To set > > > > inter.broker.protocol.version= > > > > > > 2.0 > > > > > > > > dynamically, we need to verify not just that the current > > broker is > > > > on > > > > > > > > version 2.0, but that all brokers int the cluster are on > > version > > > > 2.0 > > > > > (I > > > > > > > > thought that was the reason for the second rolling upgrade). > > The > > > > > broker > > > > > > > > version in ZK would enable that verification before performing > > the > > > > > > > update. > > > > > > > > > > > > > > > > 6. The config source would be STATIC_BROKER_CONFIG/DYNAMIC_ > > > > > > > BROKER_CONFIG, > > > > > > > > the config name would be listener.name.listenerA.configX. And > > > > > synonyms > > > > > > > > list > > > > > > > > in describeConfigs() would list listener.name.listenerA. > > configX > > > > as > > > > > > well > > > > > > > > as > > > > > > > > configX. > > > > > > > > > > > > > > > > 7. I think `default` is an overused terminology already. When > > > > configs > > > > > > are > > > > > > > > described, they return a flag indicating if the value is a > > default. > > > > > And > > > > > > > in > > > > > > > > the broker, we have so many levels of configs already and we > > are > > > > > adding > > > > > > > so > > > > > > > > many more, that it may be better to use a different term. It > > > > doesn't > > > > > > have > > > > > > > > to be synonyms, but since we want to use the same term for > > topics > > > > and > > > > > > > > brokers and we have listener configs which override > > non-prefixed > > > > > > security > > > > > > > > configs, perhaps it is ok? > > > > > > > > > > > > > > > > Regards, > > > > > > > > > > > > > > > > Rajini > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Wed, Dec 6, 2017 at 11:50 PM, Jun Rao <j...@confluent.io> > > wrote: > > > > > > > > > > > > > > > > > A couple more things. > > > > > > > > > > > > > > > > > > 6. For the SSL/SASL configurations with the listener prefix, > > do > > > > we > > > > > > need > > > > > > > > > another level in config_source since it's neither topic nor > > > > broker? > > > > > > > > > > > > > > > > > > 7. For include_synonyms in DescribeConfigs, the name makes > > sense > > > > > for > > > > > > > the > > > > > > > > > topic level configs. Not sure if it makes sense for other > > > > > > hierarchies. > > > > > > > > > Perhaps sth more generic like default will be better? > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > > > > > > > > Jun > > > > > > > > > > > > > > > > > > On Wed, Dec 6, 2017 at 3:41 PM, Jun Rao <j...@confluent.io> > > > > wrote: > > > > > > > > > > > > > > > > > > > Hi, Rajini, > > > > > > > > > > > > > > > > > > > > Thanks for the kip. Looks good overall. A few comments > > below. > > > > > > > > > > > > > > > > > > > > 1. "num.replica.fetchers: Affinity of partitions to threads > > > > will > > > > > be > > > > > > > > > > preserved for ordering." Does that mean the new fetcher > > threads > > > > > > won't > > > > > > > > be > > > > > > > > > > used until new partitions are added? This may be limiting. > > > > > > > > > > > > > > > > > > > > 2. I am wondering how the result from > > > > > reporter.validate(Map<String, > > > > > > > ?> > > > > > > > > > > configs) will be used. If it returns false, do we return > > false > > > > to > > > > > > the > > > > > > > > > admin > > > > > > > > > > client for the validation call, which will seem a bit > > weird? > > > > > > > > > > > > > > > > > > > > 3. For the SSL and SASL configuration changes, do we > > support > > > > > those > > > > > > > with > > > > > > > > > > the listener prefix (e.g., external-ssl-lisener.ssl. > > > > > > > > keystore.location). > > > > > > > > > > If so, do we plan to include them in the result of > > > > > > describeConfigs()? > > > > > > > > > > > > > > > > > > > > 4. "Updates to advertised.listeners will re-register the > > new > > > > > > listener > > > > > > > > in > > > > > > > > > > ZK". To support this, we will likely need additional logic > > in > > > > the > > > > > > > > > > controller such that the controller can broadcast the > > metadata > > > > > with > > > > > > > the > > > > > > > > > new > > > > > > > > > > listeners to every broker. > > > > > > > > > > > > > > > > > > > > 5. Including broker version in broker registration in ZK. > > I am > > > > > not > > > > > > > sure > > > > > > > > > > the usage of that. Each broker knows its version. So, is > > that > > > > for > > > > > > the > > > > > > > > > > controller? > > > > > > > > > > > > > > > > > > > > Jun > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Tue, Dec 5, 2017 at 11:05 AM, Colin McCabe < > > > > > cmcc...@apache.org> > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > >> On Tue, Dec 5, 2017, at 06:01, Rajini Sivaram wrote: > > > > > > > > > >> > Hi Colin, > > > > > > > > > >> > > > > > > > > > > >> > KAFKA-5722 already has an owner, so I didn't want to > > confuse > > > > > the > > > > > > > two > > > > > > > > > >> > KIPs. They can be done independently of each other. The > > > > goal > > > > > is > > > > > > > to > > > > > > > > > try > > > > > > > > > >> and > > > > > > > > > >> > validate every config to the minimum validation already > > in > > > > the > > > > > > > > broker > > > > > > > > > >> for > > > > > > > > > >> > the static configs, but in some cases to a more > > restrictive > > > > > > level. > > > > > > > > So > > > > > > > > > a > > > > > > > > > >> > typo like a file-not-found or class-not-found would > > > > definitely > > > > > > > fail > > > > > > > > > the > > > > > > > > > >> > AlterConfigs request (validation is performed by > > > > AlterConfigs > > > > > > > > > regardless > > > > > > > > > >> > of validateOnly flag). I am working out the additional > > > > > > validation > > > > > > > I > > > > > > > > > can > > > > > > > > > >> > perform as I implement updates for each config. For > > example, > > > > > > > > > >> > inter-broker keystore update will not be allowed unless > > it > > > > can > > > > > > be > > > > > > > > > >> > verified against the currently configured truststore. > > > > > > > > > >> > > > > > > > > > >> HI Rajini, > > > > > > > > > >> > > > > > > > > > >> I agree. It's probably better to avoid expanding the > > scope of > > > > > > > > KIP-226. > > > > > > > > > >> I hope we can get to KAFKA-5722 soon, though, since it > > will > > > > > really > > > > > > > > > >> improve the user experience for this feature. > > > > > > > > > >> > > > > > > > > > >> regards, > > > > > > > > > >> Colin > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > > > >> > On Sat, Dec 2, 2017 at 10:15 PM, Colin McCabe < > > > > > > cmcc...@apache.org > > > > > > > > > > > > > > > > > >> wrote: > > > > > > > > > >> > > > > > > > > > > >> > > On Tue, Nov 28, 2017, at 14:48, Rajini Sivaram wrote: > > > > > > > > > >> > > > Hi Colin, > > > > > > > > > >> > > > > > > > > > > > > >> > > > Thank you for reviewing the KIP. > > > > > > > > > >> > > > > > > > > > > > > >> > > > *kaka-configs.sh* will be converted to use > > *AdminClient* > > > > > > under > > > > > > > > > >> > > > KAFKA-5722. > > > > > > > > > >> > > > This is targeted for the next release (1.1.0). Under > > > > this > > > > > > KIP, > > > > > > > > we > > > > > > > > > >> will > > > > > > > > > >> > > > implement *AdminClient#alterConfigs* for the dynamic > > > > > configs > > > > > > > > > listed > > > > > > > > > >> in > > > > > > > > > >> > > > the KIP. This will include validation of the > > configs and > > > > > > will > > > > > > > > > return > > > > > > > > > >> > > > appropriate errors if configs are invalid. > > Integration > > > > > tests > > > > > > > > will > > > > > > > > > >> also be > > > > > > > > > >> > > > added using AdmnClient. Only the actual conversion > > of > > > > > > > > > ConfigCommand > > > > > > > > > >> to > > > > > > > > > >> > > > use AdminClient will be left to be done under > > > > KAFKA-5722. > > > > > > > > > >> > > > > > > > > > > > >> > > Hi Rajini, > > > > > > > > > >> > > > > > > > > > > > >> > > It seems like there is no KIP yet for KAFKA-5722. > > Does it > > > > > > make > > > > > > > > > sense > > > > > > > > > >> to > > > > > > > > > >> > > describe the conversion of kafka-configs.sh to use > > > > > AdminClient > > > > > > > in > > > > > > > > > >> > > KIP-226? Since the AlterConfigs RPCs already exist, > > it > > > > > should > > > > > > > be > > > > > > > > > >> pretty > > > > > > > > > >> > > straightforward. This would also let us add some > > > > > information > > > > > > > > about > > > > > > > > > >> how > > > > > > > > > >> > > errors will be handled, which is pretty important for > > > > users. > > > > > > > For > > > > > > > > > >> > > example, will kafka-configs.sh give an error if the > > user > > > > > > makes a > > > > > > > > > typo > > > > > > > > > >> > > when setting a configuration? > > > > > > > > > >> > > > > > > > > > > > >> > > > > > > > > > > > > >> > > > Once KAFKA-5722 is implemented,* kafka-confgs.sh* > > can be > > > > > > used > > > > > > > to > > > > > > > > > >> obtain > > > > > > > > > >> > > > the current configuration, which can be redirected > > to a > > > > > text > > > > > > > > file > > > > > > > > > to > > > > > > > > > >> > > create a > > > > > > > > > >> > > > static *server.properties* file. This should help > > when > > > > > > > > downgrading > > > > > > > > > >> - but > > > > > > > > > >> > > > it does require brokers to be running. We can also > > > > > document > > > > > > > how > > > > > > > > to > > > > > > > > > >> obtain > > > > > > > > > >> > > > the properties using *zookeeper-shell.sh* while > > > > > downgrading > > > > > > if > > > > > > > > > >> brokers > > > > > > > > > >> > > are > > > > > > > > > >> > > > down. > > > > > > > > > >> > > > > > > > > > > > > >> > > > If we rename properties, we should add the new > > property > > > > to > > > > > > ZK > > > > > > > > > based > > > > > > > > > >> on > > > > > > > > > >> > > > the value of the old property when the upgraded > > broker > > > > > > starts > > > > > > > > up. > > > > > > > > > >> But we > > > > > > > > > >> > > > would probably leave the old property as is. The old > > > > > > property > > > > > > > > will > > > > > > > > > >> be > > > > > > > > > >> > > returned > > > > > > > > > >> > > > and used as a synonym only as long as the broker is > > on a > > > > > > > version > > > > > > > > > >> where it > > > > > > > > > >> > > > is still valid. But it can remain in ZK and be > > updated > > > > if > > > > > > > > > >> downgrading - > > > > > > > > > >> > > > it will be up to the user to update the old > > property if > > > > > > > > > downgrading > > > > > > > > > >> or > > > > > > > > > >> > > > delete it if not needed. Renaming properties is > > likely > > > > to > > > > > be > > > > > > > > > >> confusing > > > > > > > > > >> > > in any > > > > > > > > > >> > > > case even without dynamic configs, so hopefully it > > will > > > > be > > > > > > > very > > > > > > > > > >> rare. > > > > > > > > > >> > > > > > > > > > > > >> > > Sounds good. > > > > > > > > > >> > > > > > > > > > > > >> > > best, > > > > > > > > > >> > > Colin > > > > > > > > > >> > > > > > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > > > > > > >> > > > Rajini > > > > > > > > > >> > > > > > > > > > > > > >> > > > On Tue, Nov 28, 2017 at 7:47 PM, Colin McCabe < > > > > > > > > cmcc...@apache.org > > > > > > > > > > > > > > > > > > > >> > > wrote: > > > > > > > > > >> > > > > > > > > > > > > >> > > > > Hi Rajini, > > > > > > > > > >> > > > > > > > > > > > > > >> > > > > This seems like a nice improvement! > > > > > > > > > >> > > > > > > > > > > > > > >> > > > > One thing that is a bit concerning is that, if > > > > > > > > > >> bin/kafka-configs.sh is > > > > > > > > > >> > > > > used, there is no way for the broker to give > > feedback > > > > > or > > > > > > > > error > > > > > > > > > >> > > > > messages. The broker can't say "sorry, I can't > > > > > > reconfigure > > > > > > > > that > > > > > > > > > >> in > > > > > > > > > >> > > that > > > > > > > > > >> > > > > way." Or even "that configuration property is not > > > > > > > > > reconfigurable > > > > > > > > > >> in > > > > > > > > > >> > > > > this version of the software." It seems like in > > the > > > > > > > examples > > > > > > > > > >> give, > > > > > > > > > >> > > > > users will simply set a configuration using > > > > > > > > > bin/kafka-configs.sh, > > > > > > > > > >> but > > > > > > > > > >> > > > > then they have to check the broker log files to > > see if > > > > > it > > > > > > > > could > > > > > > > > > >> > > actually > > > > > > > > > >> > > > > be applied. And even if it couldn't be applied, > > then > > > > it > > > > > > > still > > > > > > > > > >> lingers > > > > > > > > > >> > > > > in ZooKeeper. > > > > > > > > > >> > > > > > > > > > > > > > >> > > > > This seems like it would lead to a lot of user > > > > > confusion, > > > > > > > > since > > > > > > > > > >> they > > > > > > > > > >> > > get > > > > > > > > > >> > > > > no feedback when reconfiguring something. For > > > > example, > > > > > > > there > > > > > > > > > >> will be a > > > > > > > > > >> > > > > lot of scenarios where someone finds a > > reconfiguration > > > > > > > command > > > > > > > > > on > > > > > > > > > >> > > > > Google, runs it, but then it doesn't do anything > > > > because > > > > > > the > > > > > > > > > >> software > > > > > > > > > >> > > > > version is different. And there's no error > > message or > > > > > > > > feedback > > > > > > > > > >> about > > > > > > > > > >> > > > > this. It just doesn't work. > > > > > > > > > >> > > > > > > > > > > > > > >> > > > > To prevent this, I think we should convert > > > > > > > > bin/kafka-configs.sh > > > > > > > > > >> to use > > > > > > > > > >> > > > > AdminClient's AlterConfigsRequest. This allows > > us to > > > > > > detect > > > > > > > > > >> scenarios > > > > > > > > > >> > > > > where, because of a typo, different software > > version, > > > > > or a > > > > > > > > value > > > > > > > > > >> of the > > > > > > > > > >> > > > > wrong type (eg. string vs. int), the given > > > > configuration > > > > > > > > cannot > > > > > > > > > be > > > > > > > > > >> > > > > applied. We really should convert > > kafka-configs.sh to > > > > > use > > > > > > > > > >> AdminClient > > > > > > > > > >> > > > > anyway, for all the usual reasons-- people want to > > > > lock > > > > > > down > > > > > > > > > >> ZooKeeper, > > > > > > > > > >> > > > > ACLs should be enforced, internal representations > > > > should > > > > > > be > > > > > > > > > >> hidden, we > > > > > > > > > >> > > > > should support environments where ZK is not > > exposed, > > > > > etc. > > > > > > > etc. > > > > > > > > > >> > > > > > > > > > > > > > >> > > > > Another issue that I see here is, how does this > > > > interact > > > > > > > with > > > > > > > > > >> > > downgrade? > > > > > > > > > >> > > > > Presumably, if the user downgrades to a version > > that > > > > > > > doesn't > > > > > > > > > >> support > > > > > > > > > >> > > > > KIP-226, all the dynamic configurations stored in > > ZK > > > > > > revert > > > > > > > to > > > > > > > > > >> whatever > > > > > > > > > >> > > > > value they have in the local config files. Do we > > need > > > > > to > > > > > > > > have a > > > > > > > > > >> > > utility > > > > > > > > > >> > > > > that can reify the actual applied configuration > > into a > > > > > > local > > > > > > > > > text > > > > > > > > > >> file, > > > > > > > > > >> > > > > to make downgrades less painful? > > > > > > > > > >> > > > > > > > > > > > > > >> > > > > With regard to upgrades, what happens if we > > change the > > > > > > name > > > > > > > > of a > > > > > > > > > >> > > > > configuration key in the future? For example, if > > we > > > > > > decide > > > > > > > to > > > > > > > > > >> rename > > > > > > > > > >> > > > > min.insync.replicas to min.in.sync.replicas, > > > > presumably > > > > > we > > > > > > > > will > > > > > > > > > >> > > > > deprecate the old key name. And then perhaps it > > will > > > > be > > > > > > > > removed > > > > > > > > > >> in a > > > > > > > > > >> > > > > future release, such as Apache Kafka 2.0. In this > > > > > > scenario, > > > > > > > > > >> should the > > > > > > > > > >> > > > > Kafka upgrade process change the name of the > > > > > configuration > > > > > > > key > > > > > > > > > in > > > > > > > > > >> ZK > > > > > > > > > >> > > > > from min.insync.replicas to min.in.sync.replicas? > > > > > > Obviously > > > > > > > > > this > > > > > > > > > >> will > > > > > > > > > >> > > > > make downgrades harder, if so. But if it doesn't, > > > > then > > > > > > > > removing > > > > > > > > > >> > > > > deprecated configuration key synonyms might become > > > > very > > > > > > > > > difficult. > > > > > > > > > >> > > > > > > > > > > > > > >> > > > > best, > > > > > > > > > >> > > > > Colin > > > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > > > > > > > >> > > > > On Wed, Nov 22, 2017, at 12:52, Rajini Sivaram > > wrote: > > > > > > > > > >> > > > > > Hi Tom, > > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > No, I am not proposing this as a way to > > configure > > > > > > > > replication > > > > > > > > > >> quotas. > > > > > > > > > >> > > > > > When > > > > > > > > > >> > > > > > you describe broker configs using AdminClient, > > you > > > > > will > > > > > > > see > > > > > > > > > all > > > > > > > > > >> the > > > > > > > > > >> > > > > > configs > > > > > > > > > >> > > > > > persisted in /configs/brokers/<brokerId> in > > > > ZooKeeper > > > > > > and > > > > > > > > this > > > > > > > > > >> > > includes > > > > > > > > > >> > > > > > leader.replication.throttled.rate, > > > > > > follower.replication. > > > > > > > > > >> > > throttled.rate > > > > > > > > > >> > > > > > etc. But > > > > > > > > > >> > > > > > the broker configs that can be altered using > > > > > AdminClient > > > > > > > as > > > > > > > > a > > > > > > > > > >> result > > > > > > > > > >> > > of > > > > > > > > > >> > > > > > this KIP are those explicitly stated in the KIP > > > > (does > > > > > > not > > > > > > > > > >> include > > > > > > > > > >> > > any of > > > > > > > > > >> > > > > > the quota configs). > > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > Regards, > > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > Rajini > > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > On Wed, Nov 22, 2017 at 7:54 PM, Tom Bentley < > > > > > > > > > >> t.j.bent...@gmail.com> > > > > > > > > > >> > > > > > wrote: > > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > Hi Rajini, > > > > > > > > > >> > > > > > > > > > > > > > > > >> > > > > > > Just to clarify, are you proposing this as a > > way > > > > to > > > > > > > > > configure > > > > > > > > > >> > > > > interbroker > > > > > > > > > >> > > > > > > throttling/quotas? I don't think you are, just > > > > > wanted > > > > > > to > > > > > > > > > check > > > > > > > > > >> > > (since > > > > > > > > > >> > > > > > > KIP-179 proposes a different mechanism for > > setting > > > > > > them > > > > > > > > > which > > > > > > > > > >> > > supports > > > > > > > > > >> > > > > > > their automatic removal). > > > > > > > > > >> > > > > > > > > > > > > > > > >> > > > > > > Cheers, > > > > > > > > > >> > > > > > > > > > > > > > > > >> > > > > > > Tom > > > > > > > > > >> > > > > > > > > > > > > > > > >> > > > > > > On 22 November 2017 at 18:28, Rajini Sivaram < > > > > > > > > > >> > > rajinisiva...@gmail.com> > > > > > > > > > >> > > > > > > wrote: > > > > > > > > > >> > > > > > > > > > > > > > > > >> > > > > > > > I have made an update to the KIP to > > optionally > > > > > > return > > > > > > > > all > > > > > > > > > >> the > > > > > > > > > >> > > config > > > > > > > > > >> > > > > > > > synonyms in *DescribeConfigsResponse*. The > > > > > synonyms > > > > > > > are > > > > > > > > > >> returned > > > > > > > > > >> > > in > > > > > > > > > >> > > > > the > > > > > > > > > >> > > > > > > > order of precedence. AlterConfigsResponse > > will > > > > not > > > > > > be > > > > > > > > > >> modified > > > > > > > > > >> > > by the > > > > > > > > > >> > > > > > > KIP. > > > > > > > > > >> > > > > > > > Since many configs already have various > > > > overrides > > > > > > > (e.g. > > > > > > > > > >> topic > > > > > > > > > >> > > configs > > > > > > > > > >> > > > > > > with > > > > > > > > > >> > > > > > > > broker overrides, security properties with > > > > > listener > > > > > > > name > > > > > > > > > >> > > overrides) > > > > > > > > > >> > > > > and > > > > > > > > > >> > > > > > > we > > > > > > > > > >> > > > > > > > will be adding more levels with dynamic > > configs, > > > > > it > > > > > > > will > > > > > > > > > be > > > > > > > > > >> > > useful to > > > > > > > > > >> > > > > > > > obtain the full list in order of precedence. > > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > > > > > > On Tue, Nov 21, 2017 at 11:24 AM, Rajini > > > > Sivaram < > > > > > > > > > >> > > > > > > rajinisiva...@gmail.com> > > > > > > > > > >> > > > > > > > wrote: > > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > > > > > > > Hi Ted, > > > > > > > > > >> > > > > > > > > > > > > > > > > > >> > > > > > > > > You can quote the config name, but it is > > not > > > > > > > necessary > > > > > > > > > for > > > > > > > > > >> > > > > deleting a > > > > > > > > > >> > > > > > > > > config since the name doesn't contain any > > > > > special > > > > > > > > > >> characters > > > > > > > > > >> > > that > > > > > > > > > >> > > > > > > > requires > > > > > > > > > >> > > > > > > > > quoting. > > > > > > > > > >> > > > > > > > > > > > > > > > > > >> > > > > > > > > On Mon, Nov 20, 2017 at 9:20 PM, Ted Yu < > > > > > > > > > >> yuzhih...@gmail.com> > > > > > > > > > >> > > > > wrote: > > > > > > > > > >> > > > > > > > > > > > > > > > > > >> > > > > > > > >> Thanks for the quick response. > > > > > > > > > >> > > > > > > > >> > > > > > > > > > >> > > > > > > > >> It seems the config following > > --delete-config > > > > > > > should > > > > > > > > be > > > > > > > > > >> > > quoted. > > > > > > > > > >> > > > > > > > >> > > > > > > > > > >> > > > > > > > >> Cheers > > > > > > > > > >> > > > > > > > >> > > > > > > > > > >> > > > > > > > >> On Mon, Nov 20, 2017 at 12:02 PM, Rajini > > > > > Sivaram > > > > > > < > > > > > > > > > >> > > > > > > > rajinisiva...@gmail.com > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > >> > > > > > > > >> wrote: > > > > > > > > > >> > > > > > > > >> > > > > > > > > > >> > > > > > > > >> > Ted, > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > >> > > > > > > > >> > Have added an example for > > --delete-config. > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > >> > > > > > > > >> > On Mon, Nov 20, 2017 at 7:42 PM, Ted > > Yu < > > > > > > > > > >> > > yuzhih...@gmail.com> > > > > > > > > > >> > > > > > > wrote: > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > >> > > > > > > > >> > > bq. There is a --delete-config option > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > >> > > > > > > > >> > > Consider adding a sample with the > > above > > > > > > option > > > > > > > to > > > > > > > > > >> the KIP. > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > >> > > > > > > > >> > > Thanks > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > >> > > > > > > > >> > > On Mon, Nov 20, 2017 at 11:36 AM, > > Rajini > > > > > > > Sivaram > > > > > > > > < > > > > > > > > > >> > > > > > > > >> > rajinisiva...@gmail.com> > > > > > > > > > >> > > > > > > > >> > > wrote: > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > >> > > > > > > > >> > > > Hi Ted, > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > >> > > > Thank you for reviewing the KIP. > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > >> > > > *Would decreasing network/IO > > threads be > > > > > > > > supported > > > > > > > > > >> ?* > > > > > > > > > >> > > > > > > > >> > > > Yes, As described in the KIP, some > > > > > > > connections > > > > > > > > > >> will be > > > > > > > > > >> > > > > closed if > > > > > > > > > >> > > > > > > > >> > network > > > > > > > > > >> > > > > > > > >> > > > thread count is reduced (and > > > > > reconnections > > > > > > > will > > > > > > > > > be > > > > > > > > > >> > > > > processed on > > > > > > > > > >> > > > > > > > >> > remaining > > > > > > > > > >> > > > > > > > >> > > > threads) > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > >> > > > *What if some keys in configs are > > not > > > > in > > > > > > the > > > > > > > > Set > > > > > > > > > >> > > returned > > > > > > > > > >> > > > > > > > >> > > > by reconfigurableConfigs()? Would > > > > > exception > > > > > > > be > > > > > > > > > >> thrown ?* > > > > > > > > > >> > > > > > > > >> > > > No, *reconfigurableConfigs() *will > > be > > > > > used > > > > > > to > > > > > > > > > >> decide > > > > > > > > > >> > > which > > > > > > > > > >> > > > > > > classes > > > > > > > > > >> > > > > > > > >> are > > > > > > > > > >> > > > > > > > >> > > > notified when a configuration > > update is > > > > > > > made*. > > > > > > > > > >> > > > > > > > >> > **reconfigure(Map<String, > > > > > > > > > >> > > > > > > > >> > > ?> > > > > > > > > > >> > > > > > > > >> > > > configs)* will be invoked with all > > of > > > > the > > > > > > > > > >> configured > > > > > > > > > >> > > > > configs of > > > > > > > > > >> > > > > > > > the > > > > > > > > > >> > > > > > > > >> > > broker, > > > > > > > > > >> > > > > > > > >> > > > similar to > > *configure(Map<String, ?> > > > > > > > > configs). > > > > > > > > > >> *For > > > > > > > > > >> > > > > example, > > > > > > > > > >> > > > > > > > when > > > > > > > > > >> > > > > > > > >> > > > *SslChannelBuilder* is made > > > > > reconfigurable, > > > > > > > it > > > > > > > > > >> could > > > > > > > > > >> > > just > > > > > > > > > >> > > > > > > create a > > > > > > > > > >> > > > > > > > >> new > > > > > > > > > >> > > > > > > > >> > > > SslFactory with the latest configs, > > > > using > > > > > > the > > > > > > > > > same > > > > > > > > > >> code > > > > > > > > > >> > > as > > > > > > > > > >> > > > > > > > >> > *configure()*. > > > > > > > > > >> > > > > > > > >> > > > We avoid reconfiguring > > > > *SslChannelBuilder > > > > > > > > > >> > > *unnecessarily*, > > > > > > > > > >> > > > > *for > > > > > > > > > >> > > > > > > > >> example > > > > > > > > > >> > > > > > > > >> > > if > > > > > > > > > >> > > > > > > > >> > > > a topic config has changed, since > > topic > > > > > > > configs > > > > > > > > > >> are not > > > > > > > > > >> > > > > listed > > > > > > > > > >> > > > > > > in > > > > > > > > > >> > > > > > > > >> the > > > > > > > > > >> > > > > > > > >> > > > *SslChannelBuilder#** > > > > > > > reconfigurableConfigs().* > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > >> > > > *The sample commands for > > > > > bin/kafka-configs > > > > > > > > > include > > > > > > > > > >> > > > > > > '--add-config'. > > > > > > > > > >> > > > > > > > >> > Would > > > > > > > > > >> > > > > > > > >> > > > there be '--remove-config' ?* > > > > > > > > > >> > > > > > > > >> > > > bin/kafka-configs.sh is an existing > > > > tool > > > > > > > whose > > > > > > > > > >> > > parameters > > > > > > > > > >> > > > > will > > > > > > > > > >> > > > > > > not > > > > > > > > > >> > > > > > > > >> be > > > > > > > > > >> > > > > > > > >> > > > modified by this KIP. There is a > > > > > > > > --delete-config > > > > > > > > > >> option. > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > >> > > > *ssl.keystore.password appears a > > few > > > > > lines > > > > > > > > above. > > > > > > > > > >> Would > > > > > > > > > >> > > > > there be > > > > > > > > > >> > > > > > > > any > > > > > > > > > >> > > > > > > > >> > > > issue with mixture of connections > > (with > > > > > old > > > > > > > and > > > > > > > > > new > > > > > > > > > >> > > > > password) ?* > > > > > > > > > >> > > > > > > > >> > > > No, passwords (and the actual > > keystore) > > > > > are > > > > > > > > only > > > > > > > > > >> used > > > > > > > > > >> > > during > > > > > > > > > >> > > > > > > > >> > > > authentication. Any channel created > > > > using > > > > > > the > > > > > > > > old > > > > > > > > > >> > > SslFactory > > > > > > > > > >> > > > > > > will > > > > > > > > > >> > > > > > > > >> not > > > > > > > > > >> > > > > > > > >> > be > > > > > > > > > >> > > > > > > > >> > > > impacted. > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > >> > > > Regards, > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > >> > > > Rajini > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > >> > > > On Mon, Nov 20, 2017 at 4:39 PM, > > Ted > > > > Yu < > > > > > > > > > >> > > > > yuzhih...@gmail.com> > > > > > > > > > >> > > > > > > > >> wrote: > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > >> > > > > bq. (e.g. increase network/IO > > > > threads) > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > >> > > > > Would decreasing network/IO > > threads > > > > be > > > > > > > > > supported > > > > > > > > > >> ? > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > >> > > > > bq. void > > reconfigure(Map<String, > > > > ?> > > > > > > > > > configs); > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > >> > > > > What if some keys in configs are > > not > > > > in > > > > > > the > > > > > > > > Set > > > > > > > > > >> > > returned > > > > > > > > > >> > > > > by > > > > > > > > > >> > > > > > > > >> > > > > reconfigurableConfigs() > > > > > > > > > >> > > > > > > > >> > > > > ? Would exception be thrown ? > > > > > > > > > >> > > > > > > > >> > > > > If so, please specify which > > exception > > > > > > would > > > > > > > > be > > > > > > > > > >> thrown. > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > >> > > > > The sample commands for > > > > > bin/kafka-configs > > > > > > > > > include > > > > > > > > > >> > > > > > > > '--add-config'. > > > > > > > > > >> > > > > > > > >> > > > > Would there be '--remove-config' > > ? > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > >> > > > > bq. Existing connections will > > not be > > > > > > > > affected, > > > > > > > > > >> new > > > > > > > > > >> > > > > connections > > > > > > > > > >> > > > > > > > >> will > > > > > > > > > >> > > > > > > > >> > use > > > > > > > > > >> > > > > > > > >> > > > the > > > > > > > > > >> > > > > > > > >> > > > > new keystore. > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > >> > > > > ssl.keystore.password appears a > > few > > > > > lines > > > > > > > > > above. > > > > > > > > > >> Would > > > > > > > > > >> > > > > there > > > > > > > > > >> > > > > > > be > > > > > > > > > >> > > > > > > > >> any > > > > > > > > > >> > > > > > > > >> > > issue > > > > > > > > > >> > > > > > > > >> > > > > with mixture of connections > > (with old > > > > > and > > > > > > > new > > > > > > > > > >> > > password) ? > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > >> > > > > Cheers > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > >> > > > > On Mon, Nov 20, 2017 at 5:57 AM, > > > > Rajini > > > > > > > > > Sivaram < > > > > > > > > > >> > > > > > > > >> > > rajinisiva...@gmail.com > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > >> > > > > wrote: > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > >> > > > > > Hi all, > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > > >> > > > > > I have submitted KIP-226 to > > enable > > > > > > > dynamic > > > > > > > > > >> > > > > reconfiguration > > > > > > > > > >> > > > > > > of > > > > > > > > > >> > > > > > > > >> > brokers > > > > > > > > > >> > > > > > > > >> > > > > > without restart: > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > > >> > > > > > https://cwiki.apache.org/ > > > > > > > > > >> > > confluence/display/KAFKA/KIP- > > > > > > > > > >> > > > > > > > >> > > > > > 226+-+Dynamic+Broker+ > > Configuration > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > > >> > > > > > The KIP proposes to extend the > > > > > current > > > > > > > > > dynamic > > > > > > > > > >> > > > > replication > > > > > > > > > >> > > > > > > > quota > > > > > > > > > >> > > > > > > > >> > > > > > configuration for brokers to > > > > support > > > > > > > > dynamic > > > > > > > > > >> > > > > reconfiguration > > > > > > > > > >> > > > > > > > of > > > > > > > > > >> > > > > > > > >> a > > > > > > > > > >> > > > > > > > >> > > > limited > > > > > > > > > >> > > > > > > > >> > > > > > set of configuration options > > that > > > > are > > > > > > > > > typically > > > > > > > > > >> > > updated > > > > > > > > > >> > > > > > > during > > > > > > > > > >> > > > > > > > >> the > > > > > > > > > >> > > > > > > > >> > > > > lifetime > > > > > > > > > >> > > > > > > > >> > > > > > of a broker. > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > > >> > > > > > Feedback and suggestions are > > > > welcome. > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > > >> > > > > > Thank you... > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > > >> > > > > > Regards, > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > > >> > > > > > Rajini > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > > >> > > > > > > > >> > > > > > > > > > > >> > > > > > > > >> > > > > > > > > > >> > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >