diff --git a/build.gradle b/build.gradle index b514ac8..45cf502 100644 --- a/build.gradle +++ b/build.gradle @@ -197,7 +197,7 @@ project(':core') { dependencies { compile project(':clients') compile "org.scala-lang:scala-library:$scalaVersion" - compile 'org.apache.zookeeper:zookeeper:3.3.4' + compile 'org.apache.zookeeper:zookeeper:3.4.6' compile 'com.101tec:zkclient:0.3' compile 'com.yammer.metrics:metrics-core:2.2.0' compile 'net.sf.jopt-simple:jopt-simple:3.2' diff --git a/core/src/main/scala/kafka/tools/ZooKeeperMainWrapper.scala b/core/src/main/scala/kafka/tools/ZooKeeperMainWrapper.scala new file mode 100644 index 0000000..4c51f31 --- /dev/null +++ b/core/src/main/scala/kafka/tools/ZooKeeperMainWrapper.scala @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package kafka.tools + +import org.apache.zookeeper.ZooKeeperMain + +class ZooKeeperMainWrapper(args: Array[String]) extends ZooKeeperMain(args) { + def runCmd(): Unit = { + processCmd(this.cl) + System.exit(0) + } +} + +/** + * ZooKeeper 3.4.6 broke being able to pass commands on command line. + * See ZOOKEEPER-1897. This class is a hack to restore this faclity. + */ +object ZooKeeperMainWrapper { + + def main(args: Array[String]): Unit = { + val main: ZooKeeperMainWrapper = new ZooKeeperMainWrapper(args) + main.runCmd() + } +} diff --git a/core/src/test/scala/unit/kafka/zk/EmbeddedZookeeper.scala b/core/src/test/scala/unit/kafka/zk/EmbeddedZookeeper.scala index d883bde..3021a8c 100644 --- a/core/src/test/scala/unit/kafka/zk/EmbeddedZookeeper.scala +++ b/core/src/test/scala/unit/kafka/zk/EmbeddedZookeeper.scala @@ -19,6 +19,7 @@ package kafka.zk import org.apache.zookeeper.server.ZooKeeperServer import org.apache.zookeeper.server.NIOServerCnxn +import org.apache.zookeeper.server.NIOServerCnxnFactory import kafka.utils.TestUtils import java.net.InetSocketAddress import kafka.utils.Utils @@ -29,7 +30,8 @@ class EmbeddedZookeeper(val connectString: String) { val tickTime = 500 val zookeeper = new ZooKeeperServer(snapshotDir, logDir, tickTime) val port = connectString.split(":")(1).toInt - val factory = new NIOServerCnxn.Factory(new InetSocketAddress("127.0.0.1", port)) + val factory = new NIOServerCnxnFactory() + factory.configure(new InetSocketAddress("127.0.0.1", port),0) factory.startup(zookeeper) def shutdown() { diff --git a/system_test/utils/kafka_system_test_utils.py b/system_test/utils/kafka_system_test_utils.py index fcacf0a..1093b66 100644 --- a/system_test/utils/kafka_system_test_utils.py +++ b/system_test/utils/kafka_system_test_utils.py @@ -2055,7 +2055,7 @@ def get_controller_attributes(systemTestEnv, testcaseEnv): cmdStrList = ["ssh " + hostname, "\"JAVA_HOME=" + javaHome, - kafkaRunClassBin + " org.apache.zookeeper.ZooKeeperMain", + kafkaRunClassBin + " kafka.tools.ZooKeeperMainWrapper ", "-server " + testcaseEnv.userDefinedEnvVarDict["sourceZkConnectStr"], "get /controller 2> /dev/null | tail -1\""] @@ -2426,7 +2426,7 @@ def get_leader_for(systemTestEnv, testcaseEnv, topic, partition): cmdStrList = ["ssh " + hostname, "\"JAVA_HOME=" + javaHome, - kafkaRunClassBin + " org.apache.zookeeper.ZooKeeperMain", + kafkaRunClassBin + " kafka.tools.ZooKeeperMainWrapper ", "-server " + testcaseEnv.userDefinedEnvVarDict["sourceZkConnectStr"], zkQueryStr + " 2> /dev/null | tail -1\""] cmdStr = " ".join(cmdStrList) @@ -2470,7 +2470,7 @@ def get_leader_attributes(systemTestEnv, testcaseEnv): cmdStrList = ["ssh " + hostname, "\"JAVA_HOME=" + javaHome, - kafkaRunClassBin + " org.apache.zookeeper.ZooKeeperMain", + kafkaRunClassBin + " kafka.tools.ZooKeeperMainWrapper ", "-server " + testcaseEnv.userDefinedEnvVarDict["sourceZkConnectStr"], zkQueryStr + " 2> /dev/null | tail -1\""] cmdStr = " ".join(cmdStrList)