Dustin Cote created KAFKA-6107:
----------------------------------

             Summary: SCRAM user add fails if Kafka has never been started
                 Key: KAFKA-6107
                 URL: https://issues.apache.org/jira/browse/KAFKA-6107
             Project: Kafka
          Issue Type: Bug
          Components: tools, zkclient
    Affects Versions: 0.11.0.0
            Reporter: Dustin Cote
            Priority: Minor


When trying to add a SCRAM user in ZooKeeper without having ever starting 
Kafka, the kafka-configs tool does not handle it well. This is a common use 
case because starting a new cluster where you want SCRAM for inter broker 
communication would generally result in seeing this problem. Today, the 
workaround is to start Kafka, add the user, then restart Kafka. Here's how to 
reproduce:

1) Start ZooKeeper
2) Run 
{code}
bin/kafka-configs --zookeeper localhost:2181 --alter --add-config 
'SCRAM-SHA-256=[iterations=8192,password=broker_pwd],SCRAM-SHA-512=[password=broker_pwd]'
 --entity-type users --entity-name broker
{code}

This will result in:
{code}
bin/kafka-configs --zookeeper localhost:2181 --alter --add-config 
'SCRAM-SHA-256=[iterations=8192,password=broker_pwd],SCRAM-SHA-512=[password=broker_pwd]'
 --entity-type users --entity-name broker
Error while executing config command 
org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode 
for /config/changes/config_change_
org.I0Itec.zkclient.exception.ZkNoNodeException: 
org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode 
for /config/changes/config_change_
        at org.I0Itec.zkclient.exception.ZkException.create(ZkException.java:47)
        at org.I0Itec.zkclient.ZkClient.retryUntilConnected(ZkClient.java:1001)
        at org.I0Itec.zkclient.ZkClient.create(ZkClient.java:528)
        at 
org.I0Itec.zkclient.ZkClient.createPersistentSequential(ZkClient.java:444)
        at kafka.utils.ZkPath.createPersistentSequential(ZkUtils.scala:1045)
        at kafka.utils.ZkUtils.createSequentialPersistentPath(ZkUtils.scala:527)
        at 
kafka.admin.AdminUtils$.kafka$admin$AdminUtils$$changeEntityConfig(AdminUtils.scala:600)
        at 
kafka.admin.AdminUtils$.changeUserOrUserClientIdConfig(AdminUtils.scala:551)
        at kafka.admin.AdminUtilities$class.changeConfigs(AdminUtils.scala:63)
        at kafka.admin.AdminUtils$.changeConfigs(AdminUtils.scala:72)
        at kafka.admin.ConfigCommand$.alterConfig(ConfigCommand.scala:101)
        at kafka.admin.ConfigCommand$.main(ConfigCommand.scala:68)
        at kafka.admin.ConfigCommand.main(ConfigCommand.scala)
Caused by: org.apache.zookeeper.KeeperException$NoNodeException: 
KeeperErrorCode = NoNode for /config/changes/config_change_
        at org.apache.zookeeper.KeeperException.create(KeeperException.java:111)
        at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
        at org.apache.zookeeper.ZooKeeper.create(ZooKeeper.java:783)
        at org.I0Itec.zkclient.ZkConnection.create(ZkConnection.java:100)
        at org.I0Itec.zkclient.ZkClient$3.call(ZkClient.java:531)
        at org.I0Itec.zkclient.ZkClient$3.call(ZkClient.java:528)
        at org.I0Itec.zkclient.ZkClient.retryUntilConnected(ZkClient.java:991)
        ... 11 more
{code}

The command doesn't appear to fail but it does throw an exception and return an 
error.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to