kafka git commit: MINOR: Allow timestamp parameter in `ProcessorTopologyTestDriver.process`

2017-08-31 Thread guozhang
Repository: kafka
Updated Branches:
  refs/heads/trunk 75070bdb5 -> 51af6fb65


MINOR: Allow timestamp parameter in `ProcessorTopologyTestDriver.process`

All current implementations process records using the same timestamp. This 
makes it difficult to test operations that require time windows, like 
`KStream-KStream joins`.

This change would allow tests to simulate records created at different times, 
thus making it possible to test operations like the above mentioned joins.

Author: Sebastian Gavril 

Reviewers: Bill Bejeck , Guozhang Wang 

Closes #3753 from sebigavril/allow-timestamps-in-test-driver


Project: http://git-wip-us.apache.org/repos/asf/kafka/repo
Commit: http://git-wip-us.apache.org/repos/asf/kafka/commit/51af6fb6
Tree: http://git-wip-us.apache.org/repos/asf/kafka/tree/51af6fb6
Diff: http://git-wip-us.apache.org/repos/asf/kafka/diff/51af6fb6

Branch: refs/heads/trunk
Commit: 51af6fb654c482fb6fdd85126991149238640fd7
Parents: 75070bd
Author: Sebastian Gavril 
Authored: Thu Aug 31 14:57:54 2017 -0700
Committer: Guozhang Wang 
Committed: Thu Aug 31 14:57:54 2017 -0700

--
 .../internals/ProcessorTopologyTest.java| 46 +++-
 .../kafka/test/ProcessorTopologyTestDriver.java | 23 +-
 2 files changed, 56 insertions(+), 13 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kafka/blob/51af6fb6/streams/src/test/java/org/apache/kafka/streams/processor/internals/ProcessorTopologyTest.java
--
diff --git 
a/streams/src/test/java/org/apache/kafka/streams/processor/internals/ProcessorTopologyTest.java
 
b/streams/src/test/java/org/apache/kafka/streams/processor/internals/ProcessorTopologyTest.java
index fd3afa8..1ea09cd 100644
--- 
a/streams/src/test/java/org/apache/kafka/streams/processor/internals/ProcessorTopologyTest.java
+++ 
b/streams/src/test/java/org/apache/kafka/streams/processor/internals/ProcessorTopologyTest.java
@@ -63,7 +63,6 @@ public class ProcessorTopologyTest {
 private static final String OUTPUT_TOPIC_2 = "output-topic-2";
 private static final String THROUGH_TOPIC_1 = "through-topic-1";
 
-private static long timestamp = 1000L;
 private final TopologyBuilder builder = new TopologyBuilder();
 private final MockProcessorSupplier mockProcessorSupplier = new 
MockProcessorSupplier();
 
@@ -315,20 +314,43 @@ public class ProcessorTopologyTest {
 assertThat(result, 
containsString("child-two:\n\t\tchildren:\t[child-two-one]"));
 }
 
-private void assertNextOutputRecord(String topic, String key, String 
value) {
-ProducerRecord record = driver.readOutput(topic, 
STRING_DESERIALIZER, STRING_DESERIALIZER);
-assertEquals(topic, record.topic());
-assertEquals(key, record.key());
-assertEquals(value, record.value());
-assertNull(record.partition());
+@Test
+public void shouldConsiderTimeStamps() throws Exception {
+final int partition = 10;
+driver = new ProcessorTopologyTestDriver(config, 
createSimpleTopology(partition).internalTopologyBuilder);
+driver.process(INPUT_TOPIC_1, "key1", "value1", STRING_SERIALIZER, 
STRING_SERIALIZER, 10L);
+driver.process(INPUT_TOPIC_1, "key2", "value2", STRING_SERIALIZER, 
STRING_SERIALIZER, 20L);
+driver.process(INPUT_TOPIC_1, "key3", "value3", STRING_SERIALIZER, 
STRING_SERIALIZER, 30L);
+assertNextOutputRecord(OUTPUT_TOPIC_1, "key1", "value1", partition, 
10L);
+assertNextOutputRecord(OUTPUT_TOPIC_1, "key2", "value2", partition, 
20L);
+assertNextOutputRecord(OUTPUT_TOPIC_1, "key3", "value3", partition, 
30L);
 }
 
-private void assertNextOutputRecord(String topic, String key, String 
value, Integer partition) {
+
+private void assertNextOutputRecord(final String topic,
+final String key,
+final String value) {
+assertNextOutputRecord(topic, key, value, null, 0L);
+}
+
+private void assertNextOutputRecord(final String topic,
+final String key,
+final String value,
+final Integer partition) {
+assertNextOutputRecord(topic, key, value, partition, 0L);
+}
+
+private void assertNextOutputRecord(final String topic,
+final String key,
+final String value,
+final Integer partition,
+final Long timestamp) {
 ProducerRecord record = 

kafka git commit: MINOR: Increase timeout of Zookeeper service in system tests

2017-08-31 Thread ewencp
Repository: kafka
Updated Branches:
  refs/heads/0.10.2 c9168e10f -> b4271b5cb


MINOR: Increase timeout of Zookeeper service in system tests

The previous timeout was 10 seconds, but system test failures have occurred 
when Zookeeper has started after about 11 seconds. Increasing the timeout to 30 
seconds, since most of the time this extra time will not be required, and when 
it is it will prevent a failed system test.

In addition to merging to `trunk`, please backport to the `0.11.x` and 
`0.10.2.x` branches.

Author: Randall Hauch 

Reviewers: Ewen Cheslack-Postava 

Closes #3774 from 
rhauch/MINOR-Increase-timeout-of-zookeeper-service-in-system-tests

(cherry picked from commit 75070bdb5d70cc0b2f52faf4f769144f68f02ee2)
Signed-off-by: Ewen Cheslack-Postava 


Project: http://git-wip-us.apache.org/repos/asf/kafka/repo
Commit: http://git-wip-us.apache.org/repos/asf/kafka/commit/b4271b5c
Tree: http://git-wip-us.apache.org/repos/asf/kafka/tree/b4271b5c
Diff: http://git-wip-us.apache.org/repos/asf/kafka/diff/b4271b5c

Branch: refs/heads/0.10.2
Commit: b4271b5cbc229143d485d9375b35cbb7a3a826c1
Parents: c9168e1
Author: Randall Hauch 
Authored: Thu Aug 31 14:53:44 2017 -0700
Committer: Ewen Cheslack-Postava 
Committed: Thu Aug 31 14:54:05 2017 -0700

--
 tests/kafkatest/services/zookeeper.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/kafka/blob/b4271b5c/tests/kafkatest/services/zookeeper.py
--
diff --git a/tests/kafkatest/services/zookeeper.py 
b/tests/kafkatest/services/zookeeper.py
index 6606598..d10a2bc 100644
--- a/tests/kafkatest/services/zookeeper.py
+++ b/tests/kafkatest/services/zookeeper.py
@@ -79,7 +79,7 @@ class ZookeeperService(KafkaPathResolverMixin, Service):
 start_cmd += "/mnt/zookeeper.properties 1>> %(path)s 2>> %(path)s &" % 
self.logs["zk_log"]
 node.account.ssh(start_cmd)
 
-wait_until(lambda: self.listening(node), timeout_sec=10, 
err_msg="Zookeeper node failed to start")
+wait_until(lambda: self.listening(node), timeout_sec=30, 
err_msg="Zookeeper node failed to start")
 
 def listening(self, node):
 try:



kafka git commit: MINOR: Increase timeout of Zookeeper service in system tests

2017-08-31 Thread ewencp
Repository: kafka
Updated Branches:
  refs/heads/0.11.0 c3980a22b -> 5ec185e27


MINOR: Increase timeout of Zookeeper service in system tests

The previous timeout was 10 seconds, but system test failures have occurred 
when Zookeeper has started after about 11 seconds. Increasing the timeout to 30 
seconds, since most of the time this extra time will not be required, and when 
it is it will prevent a failed system test.

In addition to merging to `trunk`, please backport to the `0.11.x` and 
`0.10.2.x` branches.

Author: Randall Hauch 

Reviewers: Ewen Cheslack-Postava 

Closes #3774 from 
rhauch/MINOR-Increase-timeout-of-zookeeper-service-in-system-tests

(cherry picked from commit 75070bdb5d70cc0b2f52faf4f769144f68f02ee2)
Signed-off-by: Ewen Cheslack-Postava 


Project: http://git-wip-us.apache.org/repos/asf/kafka/repo
Commit: http://git-wip-us.apache.org/repos/asf/kafka/commit/5ec185e2
Tree: http://git-wip-us.apache.org/repos/asf/kafka/tree/5ec185e2
Diff: http://git-wip-us.apache.org/repos/asf/kafka/diff/5ec185e2

Branch: refs/heads/0.11.0
Commit: 5ec185e277051798f048657df944c643562e86e1
Parents: c3980a2
Author: Randall Hauch 
Authored: Thu Aug 31 14:53:44 2017 -0700
Committer: Ewen Cheslack-Postava 
Committed: Thu Aug 31 14:53:57 2017 -0700

--
 tests/kafkatest/services/zookeeper.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/kafka/blob/5ec185e2/tests/kafkatest/services/zookeeper.py
--
diff --git a/tests/kafkatest/services/zookeeper.py 
b/tests/kafkatest/services/zookeeper.py
index f484fb1..b1eed33 100644
--- a/tests/kafkatest/services/zookeeper.py
+++ b/tests/kafkatest/services/zookeeper.py
@@ -79,7 +79,7 @@ class ZookeeperService(KafkaPathResolverMixin, Service):
 start_cmd += "/mnt/zookeeper.properties 1>> %(path)s 2>> %(path)s &" % 
self.logs["zk_log"]
 node.account.ssh(start_cmd)
 
-wait_until(lambda: self.listening(node), timeout_sec=10, 
err_msg="Zookeeper node failed to start")
+wait_until(lambda: self.listening(node), timeout_sec=30, 
err_msg="Zookeeper node failed to start")
 
 def listening(self, node):
 try:



kafka git commit: MINOR: Increase timeout of Zookeeper service in system tests

2017-08-31 Thread ewencp
Repository: kafka
Updated Branches:
  refs/heads/trunk ded874117 -> 75070bdb5


MINOR: Increase timeout of Zookeeper service in system tests

The previous timeout was 10 seconds, but system test failures have occurred 
when Zookeeper has started after about 11 seconds. Increasing the timeout to 30 
seconds, since most of the time this extra time will not be required, and when 
it is it will prevent a failed system test.

In addition to merging to `trunk`, please backport to the `0.11.x` and 
`0.10.2.x` branches.

Author: Randall Hauch 

Reviewers: Ewen Cheslack-Postava 

Closes #3774 from 
rhauch/MINOR-Increase-timeout-of-zookeeper-service-in-system-tests


Project: http://git-wip-us.apache.org/repos/asf/kafka/repo
Commit: http://git-wip-us.apache.org/repos/asf/kafka/commit/75070bdb
Tree: http://git-wip-us.apache.org/repos/asf/kafka/tree/75070bdb
Diff: http://git-wip-us.apache.org/repos/asf/kafka/diff/75070bdb

Branch: refs/heads/trunk
Commit: 75070bdb5d70cc0b2f52faf4f769144f68f02ee2
Parents: ded8741
Author: Randall Hauch 
Authored: Thu Aug 31 14:53:44 2017 -0700
Committer: Ewen Cheslack-Postava 
Committed: Thu Aug 31 14:53:44 2017 -0700

--
 tests/kafkatest/services/zookeeper.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/kafka/blob/75070bdb/tests/kafkatest/services/zookeeper.py
--
diff --git a/tests/kafkatest/services/zookeeper.py 
b/tests/kafkatest/services/zookeeper.py
index b469c0c..dcf0eb8 100644
--- a/tests/kafkatest/services/zookeeper.py
+++ b/tests/kafkatest/services/zookeeper.py
@@ -82,7 +82,7 @@ class ZookeeperService(KafkaPathResolverMixin, Service):
 start_cmd += "%s/zookeeper.properties &>> %s &" % 
(ZookeeperService.ROOT, self.logs["zk_log"]["path"])
 node.account.ssh(start_cmd)
 
-wait_until(lambda: self.listening(node), timeout_sec=10, 
err_msg="Zookeeper node failed to start")
+wait_until(lambda: self.listening(node), timeout_sec=30, 
err_msg="Zookeeper node failed to start")
 
 def listening(self, node):
 try:



kafka git commit: MINOR: Fix unit test failures from last commit, cherry-pick fix for SASL principal

2017-08-31 Thread rsivaram
Repository: kafka
Updated Branches:
  refs/heads/0.10.2 0b4daa4bf -> c9168e10f


MINOR: Fix unit test failures from last commit, cherry-pick fix for SASL 
principal

This fixes PlainSaslServerTest from the last commit which uses a class not 
present in 0.10.2. Also cherry-picked commit 9934d28 to 0.10.2 since that is 
required for multiple mechanism support (SaslMultiMechanismConsumerTest was 
failing with the changes without this).

Author: Rajini Sivaram 

Reviewers: Ismael Juma , Jun Rao 

Closes #3773 from rajinisivaram/MINOR-0.10.2-buildfix


Project: http://git-wip-us.apache.org/repos/asf/kafka/repo
Commit: http://git-wip-us.apache.org/repos/asf/kafka/commit/c9168e10
Tree: http://git-wip-us.apache.org/repos/asf/kafka/tree/c9168e10
Diff: http://git-wip-us.apache.org/repos/asf/kafka/diff/c9168e10

Branch: refs/heads/0.10.2
Commit: c9168e10f93d713ad78ed421f50e9819b3f046b5
Parents: 0b4daa4
Author: Rajini Sivaram 
Authored: Thu Aug 31 16:20:33 2017 -0400
Committer: Rajini Sivaram 
Committed: Thu Aug 31 16:20:33 2017 -0400

--
 .../consumer/internals/AbstractCoordinator.java |  2 +-
 .../apache/kafka/common/network/Selector.java   | 17 +-
 .../kafka/common/protocol/types/Struct.java |  2 +-
 .../authenticator/SaslClientAuthenticator.java  | 35 
 .../SaslClientCallbackHandler.java  |  2 +-
 .../authenticator/SaslServerAuthenticator.java  | 10 +++---
 .../clients/producer/ProducerRecordTest.java| 12 +++
 .../authenticator/SaslAuthenticatorTest.java|  9 +++--
 .../security/plain/PlainSaslServerTest.java | 16 ++---
 .../security/scram/ScramSaslServerTest.java |  2 +-
 10 files changed, 76 insertions(+), 31 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kafka/blob/c9168e10/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AbstractCoordinator.java
--
diff --git 
a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AbstractCoordinator.java
 
b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AbstractCoordinator.java
index d0d5e8d..c8096ef 100644
--- 
a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AbstractCoordinator.java
+++ 
b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AbstractCoordinator.java
@@ -966,7 +966,7 @@ public abstract class AbstractCoordinator implements 
Closeable {
 log.error("Unexpected interrupt received in heartbeat thread 
for group {}", groupId, e);
 this.failed.set(new RuntimeException(e));
 } catch (RuntimeException e) {
-log.error("Heartbeat thread for group {} failed due to 
unexpected error" , groupId, e);
+log.error("Heartbeat thread for group {} failed due to 
unexpected error", groupId, e);
 this.failed.set(e);
 } finally {
 log.debug("Heartbeat thread for group {} has closed", groupId);

http://git-wip-us.apache.org/repos/asf/kafka/blob/c9168e10/clients/src/main/java/org/apache/kafka/common/network/Selector.java
--
diff --git 
a/clients/src/main/java/org/apache/kafka/common/network/Selector.java 
b/clients/src/main/java/org/apache/kafka/common/network/Selector.java
index df35266..f55dc96 100644
--- a/clients/src/main/java/org/apache/kafka/common/network/Selector.java
+++ b/clients/src/main/java/org/apache/kafka/common/network/Selector.java
@@ -185,7 +185,17 @@ public class Selector implements Selectable {
 throw e;
 }
 SelectionKey key = socketChannel.register(nioSelector, 
SelectionKey.OP_CONNECT);
-KafkaChannel channel = channelBuilder.buildChannel(id, key, 
maxReceiveSize);
+KafkaChannel channel;
+try {
+channel = channelBuilder.buildChannel(id, key, maxReceiveSize);
+} catch (Exception e) {
+try {
+socketChannel.close();
+} finally {
+key.cancel();
+}
+throw new IOException("Channel could not be created for socket " + 
socketChannel, e);
+}
 key.attach(channel);
 this.channels.put(id, channel);
 
@@ -650,6 +660,11 @@ public class Selector implements Selectable {
 this.sensors.recordBytesReceived(channel.id(), 
networkReceive.payload().limit());
 }
 
+// only for testing
+public Set keys() {
+return new HashSet<>(nioSelector.keys());
+}
+
 private class SelectorMetrics {
 private final Metrics metrics;
 public final Sensor connectionClosed;


kafka git commit: KAFKA-5806; Fix transient unit test failure in trogdor coordinator shutdown

2017-08-31 Thread jgus
Repository: kafka
Updated Branches:
  refs/heads/trunk 47c275349 -> ded874117


KAFKA-5806; Fix transient unit test failure in trogdor coordinator shutdown

In the coordinator, we should check that 'shutdown' is not true before going to 
sleep waiting for the condition.

Author: Colin P. Mccabe 

Reviewers: Apurva Mehta , Jason Gustafson 


Closes #3755 from cmccabe/KAFKA-5806


Project: http://git-wip-us.apache.org/repos/asf/kafka/repo
Commit: http://git-wip-us.apache.org/repos/asf/kafka/commit/ded87411
Tree: http://git-wip-us.apache.org/repos/asf/kafka/tree/ded87411
Diff: http://git-wip-us.apache.org/repos/asf/kafka/diff/ded87411

Branch: refs/heads/trunk
Commit: ded8741173854c98f3be0525403b6a17a55b6027
Parents: 47c2753
Author: Colin P. Mccabe 
Authored: Thu Aug 31 13:19:28 2017 -0700
Committer: Jason Gustafson 
Committed: Thu Aug 31 13:19:28 2017 -0700

--
 .../apache/kafka/trogdor/coordinator/Coordinator.java| 11 +++
 1 file changed, 7 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kafka/blob/ded87411/tools/src/main/java/org/apache/kafka/trogdor/coordinator/Coordinator.java
--
diff --git 
a/tools/src/main/java/org/apache/kafka/trogdor/coordinator/Coordinator.java 
b/tools/src/main/java/org/apache/kafka/trogdor/coordinator/Coordinator.java
index 1f71fc5..2759a36 100644
--- a/tools/src/main/java/org/apache/kafka/trogdor/coordinator/Coordinator.java
+++ b/tools/src/main/java/org/apache/kafka/trogdor/coordinator/Coordinator.java
@@ -130,16 +130,19 @@ public final class Coordinator {
 List toStart = new ArrayList<>();
 lock.lock();
 try {
+if (shutdown) {
+break;
+}
 if (nextWakeMs > now) {
 if (cond.await(nextWakeMs - now, 
TimeUnit.MILLISECONDS)) {
 log.trace("CoordinatorRunnable woke up 
early.");
 }
+now = time.milliseconds();
+if (shutdown) {
+break;
+}
 }
 nextWakeMs = now + (60L * 60L * 1000L);
-if (shutdown) {
-log.info("CoordinatorRunnable shutting down.");
-return;
-}
 Iterator iter = pendingFaults.iterateByStart();
 while (iter.hasNext()) {
 Fault fault = iter.next();



kafka git commit: KAFKA-2105; Check for null in KafkaProducer.partitionsFor

2017-08-31 Thread ijuma
Repository: kafka
Updated Branches:
  refs/heads/0.11.0 9f3468645 -> c3980a22b


KAFKA-2105; Check for null in KafkaProducer.partitionsFor

Author: Manikumar Reddy 

Reviewers: Ismael Juma 

Closes #3697 from omkreddy/KAFKA-2105

(cherry picked from commit 9836adc732288924813927c4869ffb3908febba1)
Signed-off-by: Ismael Juma 


Project: http://git-wip-us.apache.org/repos/asf/kafka/repo
Commit: http://git-wip-us.apache.org/repos/asf/kafka/commit/c3980a22
Tree: http://git-wip-us.apache.org/repos/asf/kafka/tree/c3980a22
Diff: http://git-wip-us.apache.org/repos/asf/kafka/diff/c3980a22

Branch: refs/heads/0.11.0
Commit: c3980a22bdbe9f7477b6b56c4194f5c46d0307f9
Parents: 9f34686
Author: Manikumar Reddy 
Authored: Thu Aug 31 16:30:33 2017 +0100
Committer: Ismael Juma 
Committed: Thu Aug 31 18:31:03 2017 +0100

--
 .../src/main/java/org/apache/kafka/clients/Metadata.java |  1 +
 .../org/apache/kafka/clients/producer/KafkaProducer.java |  2 ++
 .../apache/kafka/clients/producer/KafkaProducerTest.java | 11 +++
 3 files changed, 14 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/kafka/blob/c3980a22/clients/src/main/java/org/apache/kafka/clients/Metadata.java
--
diff --git a/clients/src/main/java/org/apache/kafka/clients/Metadata.java 
b/clients/src/main/java/org/apache/kafka/clients/Metadata.java
index 0963bad..b4521c3 100644
--- a/clients/src/main/java/org/apache/kafka/clients/Metadata.java
+++ b/clients/src/main/java/org/apache/kafka/clients/Metadata.java
@@ -112,6 +112,7 @@ public final class Metadata {
  * will be reset on the next update.
  */
 public synchronized void add(String topic) {
+Objects.requireNonNull(topic, "topic cannot be null");
 if (topics.put(topic, TOPIC_EXPIRY_NEEDS_UPDATE) == null) {
 requestUpdateForNewTopics();
 }

http://git-wip-us.apache.org/repos/asf/kafka/blob/c3980a22/clients/src/main/java/org/apache/kafka/clients/producer/KafkaProducer.java
--
diff --git 
a/clients/src/main/java/org/apache/kafka/clients/producer/KafkaProducer.java 
b/clients/src/main/java/org/apache/kafka/clients/producer/KafkaProducer.java
index f9c5538..7690cac 100644
--- a/clients/src/main/java/org/apache/kafka/clients/producer/KafkaProducer.java
+++ b/clients/src/main/java/org/apache/kafka/clients/producer/KafkaProducer.java
@@ -66,6 +66,7 @@ import java.net.InetSocketAddress;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Properties;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
@@ -956,6 +957,7 @@ public class KafkaProducer implements Producer {
  */
 @Override
 public List partitionsFor(String topic) {
+Objects.requireNonNull(topic, "topic cannot be null");
 try {
 return waitOnMetadata(topic, null, 
maxBlockTimeMs).cluster.partitionsForTopic(topic);
 } catch (InterruptedException e) {

http://git-wip-us.apache.org/repos/asf/kafka/blob/c3980a22/clients/src/test/java/org/apache/kafka/clients/producer/KafkaProducerTest.java
--
diff --git 
a/clients/src/test/java/org/apache/kafka/clients/producer/KafkaProducerTest.java
 
b/clients/src/test/java/org/apache/kafka/clients/producer/KafkaProducerTest.java
index 56c1b18..46dcf14 100644
--- 
a/clients/src/test/java/org/apache/kafka/clients/producer/KafkaProducerTest.java
+++ 
b/clients/src/test/java/org/apache/kafka/clients/producer/KafkaProducerTest.java
@@ -473,4 +473,15 @@ public class KafkaProducerTest {
 
 }
 
+@Test
+public void testPartitionsForWithNullTopic() {
+Properties props = new Properties();
+props.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, 
"localhost:9000");
+try (KafkaProducer producer = new 
KafkaProducer<>(props, new ByteArraySerializer(), new ByteArraySerializer())) {
+producer.partitionsFor(null);
+fail("Expected NullPointerException to be raised");
+} catch (NullPointerException e) {
+// expected
+}
+}
 }



kafka git commit: MINOR: Test SASL authorization id

2017-08-31 Thread rsivaram
Repository: kafka
Updated Branches:
  refs/heads/0.10.2 565455eae -> 0b4daa4bf


MINOR: Test SASL authorization id

Author: Rajini Sivaram 

Reviewers: Ismael Juma 

Closes #3766 from rajinisivaram/MINOR-sasl

(cherry picked from commit 47c2753496875db2849065ad91ee03c7c842c8e9)
Signed-off-by: Rajini Sivaram 


Project: http://git-wip-us.apache.org/repos/asf/kafka/repo
Commit: http://git-wip-us.apache.org/repos/asf/kafka/commit/0b4daa4b
Tree: http://git-wip-us.apache.org/repos/asf/kafka/tree/0b4daa4b
Diff: http://git-wip-us.apache.org/repos/asf/kafka/diff/0b4daa4b

Branch: refs/heads/0.10.2
Commit: 0b4daa4bf48517b4b3e9cda11692e80ade620b04
Parents: 565455e
Author: Rajini Sivaram 
Authored: Thu Aug 31 12:42:08 2017 -0400
Committer: Rajini Sivaram 
Committed: Thu Aug 31 12:44:00 2017 -0400

--
 .../common/security/plain/PlainSaslServer.java  | 14 ++--
 .../common/security/scram/ScramSaslServer.java  | 18 +++--
 .../security/plain/PlainSaslServerTest.java | 75 
 .../security/scram/ScramSaslServerTest.java | 74 +++
 4 files changed, 172 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kafka/blob/0b4daa4b/clients/src/main/java/org/apache/kafka/common/security/plain/PlainSaslServer.java
--
diff --git 
a/clients/src/main/java/org/apache/kafka/common/security/plain/PlainSaslServer.java
 
b/clients/src/main/java/org/apache/kafka/common/security/plain/PlainSaslServer.java
index 0928057..af0affd 100644
--- 
a/clients/src/main/java/org/apache/kafka/common/security/plain/PlainSaslServer.java
+++ 
b/clients/src/main/java/org/apache/kafka/common/security/plain/PlainSaslServer.java
@@ -50,7 +50,7 @@ public class PlainSaslServer implements SaslServer {
 private static final String JAAS_USER_PREFIX = "user_";
 
 private boolean complete;
-private String authorizationID;
+private String authorizationId;
 
 public PlainSaslServer(CallbackHandler callbackHandler) {
 }
@@ -78,7 +78,7 @@ public class PlainSaslServer implements SaslServer {
 }
 if (tokens.length != 3)
 throw new SaslException("Invalid SASL/PLAIN response: expected 3 
tokens, got " + tokens.length);
-authorizationID = tokens[0];
+String authorizationIdFromClient = tokens[0];
 String username = tokens[1];
 String password = tokens[2];
 
@@ -88,8 +88,6 @@ public class PlainSaslServer implements SaslServer {
 if (password.isEmpty()) {
 throw new SaslException("Authentication failed: password not 
specified");
 }
-if (authorizationID.isEmpty())
-authorizationID = username;
 
 try {
 String expectedPassword = 
JaasUtils.defaultServerJaasConfigOption(JAAS_USER_PREFIX + username, 
PlainLoginModule.class.getName());
@@ -99,6 +97,12 @@ public class PlainSaslServer implements SaslServer {
 } catch (IOException e) {
 throw new SaslException("Authentication failed: Invalid JAAS 
configuration", e);
 }
+
+if (!authorizationIdFromClient.isEmpty() && 
!authorizationIdFromClient.equals(username))
+throw new SaslException("Authentication failed: Client requested 
an authorization id that is different from username");
+
+this.authorizationId = username;
+
 complete = true;
 return new byte[0];
 }
@@ -107,7 +111,7 @@ public class PlainSaslServer implements SaslServer {
 public String getAuthorizationID() {
 if (!complete)
 throw new IllegalStateException("Authentication exchange has not 
completed");
-return authorizationID;
+return authorizationId;
 }
 
 @Override

http://git-wip-us.apache.org/repos/asf/kafka/blob/0b4daa4b/clients/src/main/java/org/apache/kafka/common/security/scram/ScramSaslServer.java
--
diff --git 
a/clients/src/main/java/org/apache/kafka/common/security/scram/ScramSaslServer.java
 
b/clients/src/main/java/org/apache/kafka/common/security/scram/ScramSaslServer.java
index 4298f98..e95a0c0 100644
--- 
a/clients/src/main/java/org/apache/kafka/common/security/scram/ScramSaslServer.java
+++ 
b/clients/src/main/java/org/apache/kafka/common/security/scram/ScramSaslServer.java
@@ -66,7 +66,6 @@ public class ScramSaslServer implements SaslServer {
 private String username;
 private ClientFirstMessage clientFirstMessage;
 private ServerFirstMessage serverFirstMessage;
-private String serverNonce;
 private ScramCredential scramCredential;
 
 public ScramSaslServer(ScramMechanism mechanism, Map 

kafka git commit: MINOR: Test SASL authorization id

2017-08-31 Thread rsivaram
Repository: kafka
Updated Branches:
  refs/heads/0.11.0 0cffb6237 -> 9f3468645


MINOR: Test SASL authorization id

Author: Rajini Sivaram 

Reviewers: Ismael Juma 

Closes #3766 from rajinisivaram/MINOR-sasl

(cherry picked from commit 47c2753496875db2849065ad91ee03c7c842c8e9)
Signed-off-by: Rajini Sivaram 


Project: http://git-wip-us.apache.org/repos/asf/kafka/repo
Commit: http://git-wip-us.apache.org/repos/asf/kafka/commit/9f346864
Tree: http://git-wip-us.apache.org/repos/asf/kafka/tree/9f346864
Diff: http://git-wip-us.apache.org/repos/asf/kafka/diff/9f346864

Branch: refs/heads/0.11.0
Commit: 9f3468645b968761ca9141d18337cb6adadbae97
Parents: 0cffb62
Author: Rajini Sivaram 
Authored: Thu Aug 31 12:42:08 2017 -0400
Committer: Rajini Sivaram 
Committed: Thu Aug 31 12:43:24 2017 -0400

--
 .../common/security/plain/PlainSaslServer.java  | 14 ++--
 .../common/security/scram/ScramSaslServer.java  | 18 +++--
 .../security/plain/PlainSaslServerTest.java | 75 
 .../security/scram/ScramSaslServerTest.java | 74 +++
 4 files changed, 172 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kafka/blob/9f346864/clients/src/main/java/org/apache/kafka/common/security/plain/PlainSaslServer.java
--
diff --git 
a/clients/src/main/java/org/apache/kafka/common/security/plain/PlainSaslServer.java
 
b/clients/src/main/java/org/apache/kafka/common/security/plain/PlainSaslServer.java
index 6fe3b25..93faee0 100644
--- 
a/clients/src/main/java/org/apache/kafka/common/security/plain/PlainSaslServer.java
+++ 
b/clients/src/main/java/org/apache/kafka/common/security/plain/PlainSaslServer.java
@@ -50,7 +50,7 @@ public class PlainSaslServer implements SaslServer {
 private final JaasContext jaasContext;
 
 private boolean complete;
-private String authorizationID;
+private String authorizationId;
 
 public PlainSaslServer(JaasContext jaasContext) {
 this.jaasContext = jaasContext;
@@ -79,7 +79,7 @@ public class PlainSaslServer implements SaslServer {
 }
 if (tokens.length != 3)
 throw new SaslException("Invalid SASL/PLAIN response: expected 3 
tokens, got " + tokens.length);
-authorizationID = tokens[0];
+String authorizationIdFromClient = tokens[0];
 String username = tokens[1];
 String password = tokens[2];
 
@@ -89,14 +89,18 @@ public class PlainSaslServer implements SaslServer {
 if (password.isEmpty()) {
 throw new SaslException("Authentication failed: password not 
specified");
 }
-if (authorizationID.isEmpty())
-authorizationID = username;
 
 String expectedPassword = 
jaasContext.configEntryOption(JAAS_USER_PREFIX + username,
 PlainLoginModule.class.getName());
 if (!password.equals(expectedPassword)) {
 throw new SaslException("Authentication failed: Invalid username 
or password");
 }
+
+if (!authorizationIdFromClient.isEmpty() && 
!authorizationIdFromClient.equals(username))
+throw new SaslException("Authentication failed: Client requested 
an authorization id that is different from username");
+
+this.authorizationId = username;
+
 complete = true;
 return new byte[0];
 }
@@ -105,7 +109,7 @@ public class PlainSaslServer implements SaslServer {
 public String getAuthorizationID() {
 if (!complete)
 throw new IllegalStateException("Authentication exchange has not 
completed");
-return authorizationID;
+return authorizationId;
 }
 
 @Override

http://git-wip-us.apache.org/repos/asf/kafka/blob/9f346864/clients/src/main/java/org/apache/kafka/common/security/scram/ScramSaslServer.java
--
diff --git 
a/clients/src/main/java/org/apache/kafka/common/security/scram/ScramSaslServer.java
 
b/clients/src/main/java/org/apache/kafka/common/security/scram/ScramSaslServer.java
index 942c299..04b9afa 100644
--- 
a/clients/src/main/java/org/apache/kafka/common/security/scram/ScramSaslServer.java
+++ 
b/clients/src/main/java/org/apache/kafka/common/security/scram/ScramSaslServer.java
@@ -64,7 +64,6 @@ public class ScramSaslServer implements SaslServer {
 private String username;
 private ClientFirstMessage clientFirstMessage;
 private ServerFirstMessage serverFirstMessage;
-private String serverNonce;
 private ScramCredential scramCredential;
 
 public ScramSaslServer(ScramMechanism mechanism, Map props, 
CallbackHandler callbackHandler) throws 

kafka git commit: MINOR: Test SASL authorization id

2017-08-31 Thread rsivaram
Repository: kafka
Updated Branches:
  refs/heads/trunk 9ebc303bb -> 47c275349


MINOR: Test SASL authorization id

Author: Rajini Sivaram 

Reviewers: Ismael Juma 

Closes #3766 from rajinisivaram/MINOR-sasl


Project: http://git-wip-us.apache.org/repos/asf/kafka/repo
Commit: http://git-wip-us.apache.org/repos/asf/kafka/commit/47c27534
Tree: http://git-wip-us.apache.org/repos/asf/kafka/tree/47c27534
Diff: http://git-wip-us.apache.org/repos/asf/kafka/diff/47c27534

Branch: refs/heads/trunk
Commit: 47c2753496875db2849065ad91ee03c7c842c8e9
Parents: 9ebc303
Author: Rajini Sivaram 
Authored: Thu Aug 31 12:42:08 2017 -0400
Committer: Rajini Sivaram 
Committed: Thu Aug 31 12:42:08 2017 -0400

--
 .../common/security/plain/PlainSaslServer.java  | 14 ++--
 .../common/security/scram/ScramSaslServer.java  | 18 +++--
 .../security/plain/PlainSaslServerTest.java | 75 
 .../security/scram/ScramSaslServerTest.java | 74 +++
 4 files changed, 172 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kafka/blob/47c27534/clients/src/main/java/org/apache/kafka/common/security/plain/PlainSaslServer.java
--
diff --git 
a/clients/src/main/java/org/apache/kafka/common/security/plain/PlainSaslServer.java
 
b/clients/src/main/java/org/apache/kafka/common/security/plain/PlainSaslServer.java
index 6fe3b25..93faee0 100644
--- 
a/clients/src/main/java/org/apache/kafka/common/security/plain/PlainSaslServer.java
+++ 
b/clients/src/main/java/org/apache/kafka/common/security/plain/PlainSaslServer.java
@@ -50,7 +50,7 @@ public class PlainSaslServer implements SaslServer {
 private final JaasContext jaasContext;
 
 private boolean complete;
-private String authorizationID;
+private String authorizationId;
 
 public PlainSaslServer(JaasContext jaasContext) {
 this.jaasContext = jaasContext;
@@ -79,7 +79,7 @@ public class PlainSaslServer implements SaslServer {
 }
 if (tokens.length != 3)
 throw new SaslException("Invalid SASL/PLAIN response: expected 3 
tokens, got " + tokens.length);
-authorizationID = tokens[0];
+String authorizationIdFromClient = tokens[0];
 String username = tokens[1];
 String password = tokens[2];
 
@@ -89,14 +89,18 @@ public class PlainSaslServer implements SaslServer {
 if (password.isEmpty()) {
 throw new SaslException("Authentication failed: password not 
specified");
 }
-if (authorizationID.isEmpty())
-authorizationID = username;
 
 String expectedPassword = 
jaasContext.configEntryOption(JAAS_USER_PREFIX + username,
 PlainLoginModule.class.getName());
 if (!password.equals(expectedPassword)) {
 throw new SaslException("Authentication failed: Invalid username 
or password");
 }
+
+if (!authorizationIdFromClient.isEmpty() && 
!authorizationIdFromClient.equals(username))
+throw new SaslException("Authentication failed: Client requested 
an authorization id that is different from username");
+
+this.authorizationId = username;
+
 complete = true;
 return new byte[0];
 }
@@ -105,7 +109,7 @@ public class PlainSaslServer implements SaslServer {
 public String getAuthorizationID() {
 if (!complete)
 throw new IllegalStateException("Authentication exchange has not 
completed");
-return authorizationID;
+return authorizationId;
 }
 
 @Override

http://git-wip-us.apache.org/repos/asf/kafka/blob/47c27534/clients/src/main/java/org/apache/kafka/common/security/scram/ScramSaslServer.java
--
diff --git 
a/clients/src/main/java/org/apache/kafka/common/security/scram/ScramSaslServer.java
 
b/clients/src/main/java/org/apache/kafka/common/security/scram/ScramSaslServer.java
index 942c299..04b9afa 100644
--- 
a/clients/src/main/java/org/apache/kafka/common/security/scram/ScramSaslServer.java
+++ 
b/clients/src/main/java/org/apache/kafka/common/security/scram/ScramSaslServer.java
@@ -64,7 +64,6 @@ public class ScramSaslServer implements SaslServer {
 private String username;
 private ClientFirstMessage clientFirstMessage;
 private ServerFirstMessage serverFirstMessage;
-private String serverNonce;
 private ScramCredential scramCredential;
 
 public ScramSaslServer(ScramMechanism mechanism, Map props, 
CallbackHandler callbackHandler) throws NoSuchAlgorithmException {
@@ -80,7 +79,7 @@ public class ScramSaslServer implements SaslServer {
 switch (state) {
 

kafka git commit: KAFKA-5379 follow up: reduce redundant mock processor context

2017-08-31 Thread guozhang
Repository: kafka
Updated Branches:
  refs/heads/trunk 9836adc73 -> 9ebc303bb


KAFKA-5379 follow up: reduce redundant mock processor context

Author: Guozhang Wang 

Reviewers: Matthias J. Sax 

Closes #3757 from guozhangwang/K5379-follow-up


Project: http://git-wip-us.apache.org/repos/asf/kafka/repo
Commit: http://git-wip-us.apache.org/repos/asf/kafka/commit/9ebc303b
Tree: http://git-wip-us.apache.org/repos/asf/kafka/tree/9ebc303b
Diff: http://git-wip-us.apache.org/repos/asf/kafka/diff/9ebc303b

Branch: refs/heads/trunk
Commit: 9ebc303bb85bf5aae2b732c60d3b3e0a6e07512d
Parents: 9836adc
Author: Guozhang Wang 
Authored: Thu Aug 31 08:43:13 2017 -0700
Committer: Guozhang Wang 
Committed: Thu Aug 31 08:43:13 2017 -0700

--
 .../internals/AbstractProcessorContext.java |   4 +-
 .../processor/internals/ProcessorNodeTest.java  |   6 +-
 .../state/internals/RocksDBStoreTest.java   |  49 +-
 .../apache/kafka/test/MockProcessorContext.java | 160 +++
 4 files changed, 66 insertions(+), 153 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kafka/blob/9ebc303b/streams/src/main/java/org/apache/kafka/streams/processor/internals/AbstractProcessorContext.java
--
diff --git 
a/streams/src/main/java/org/apache/kafka/streams/processor/internals/AbstractProcessorContext.java
 
b/streams/src/main/java/org/apache/kafka/streams/processor/internals/AbstractProcessorContext.java
index 2c28226..3c8e077 100644
--- 
a/streams/src/main/java/org/apache/kafka/streams/processor/internals/AbstractProcessorContext.java
+++ 
b/streams/src/main/java/org/apache/kafka/streams/processor/internals/AbstractProcessorContext.java
@@ -41,8 +41,8 @@ public abstract class AbstractProcessorContext implements 
InternalProcessorConte
 private final ThreadCache cache;
 private final Serde valueSerde;
 private boolean initialized;
-private RecordContext recordContext;
-private ProcessorNode currentNode;
+protected RecordContext recordContext;
+protected ProcessorNode currentNode;
 final StateManager stateManager;
 
 public AbstractProcessorContext(final TaskId taskId,

http://git-wip-us.apache.org/repos/asf/kafka/blob/9ebc303b/streams/src/test/java/org/apache/kafka/streams/processor/internals/ProcessorNodeTest.java
--
diff --git 
a/streams/src/test/java/org/apache/kafka/streams/processor/internals/ProcessorNodeTest.java
 
b/streams/src/test/java/org/apache/kafka/streams/processor/internals/ProcessorNodeTest.java
index ab29c5c..f37a674 100644
--- 
a/streams/src/test/java/org/apache/kafka/streams/processor/internals/ProcessorNodeTest.java
+++ 
b/streams/src/test/java/org/apache/kafka/streams/processor/internals/ProcessorNodeTest.java
@@ -102,16 +102,16 @@ public class ProcessorNodeTest {
 "The average number of occurrence of " + opName + " operation 
per second.", metricTags)));
 
 }
+
 @Test
 public void testMetrics() {
 final StateSerdes anyStateSerde = 
StateSerdes.withBuiltinTypes("anyName", Bytes.class, Bytes.class);
 
-final MockProcessorContext context = new 
MockProcessorContext(anyStateSerde,  new RecordCollectorImpl(null, null));
+final Metrics metrics = new Metrics();
+final MockProcessorContext context = new 
MockProcessorContext(anyStateSerde,  new RecordCollectorImpl(null, null), 
metrics);
 final ProcessorNode node = new ProcessorNode("name", new 
NoOpProcessor(), Collections.emptySet());
 node.init(context);
 
-Metrics metrics = context.baseMetrics();
-String name = "task." + context.taskId();
 String[] latencyOperations = {"process", "punctuate", "create", 
"destroy"};
 String throughputOperation =  "forward";
 String groupName = "stream-processor-node-metrics";

http://git-wip-us.apache.org/repos/asf/kafka/blob/9ebc303b/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBStoreTest.java
--
diff --git 
a/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBStoreTest.java
 
b/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBStoreTest.java
index 8b916cb..2f93a7c 100644
--- 
a/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBStoreTest.java
+++ 
b/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBStoreTest.java
@@ -22,11 +22,6 @@ import org.apache.kafka.common.utils.Utils;
 import org.apache.kafka.streams.KeyValue;
 import org.apache.kafka.streams.StreamsConfig;
 import org.apache.kafka.streams.errors.ProcessorStateException;
-import 

kafka git commit: KAFKA-2105; Check for null in KafkaProducer.partitionsFor

2017-08-31 Thread ijuma
Repository: kafka
Updated Branches:
  refs/heads/trunk ce04b1435 -> 9836adc73


KAFKA-2105; Check for null in KafkaProducer.partitionsFor

Author: Manikumar Reddy 

Reviewers: Ismael Juma 

Closes #3697 from omkreddy/KAFKA-2105


Project: http://git-wip-us.apache.org/repos/asf/kafka/repo
Commit: http://git-wip-us.apache.org/repos/asf/kafka/commit/9836adc7
Tree: http://git-wip-us.apache.org/repos/asf/kafka/tree/9836adc7
Diff: http://git-wip-us.apache.org/repos/asf/kafka/diff/9836adc7

Branch: refs/heads/trunk
Commit: 9836adc732288924813927c4869ffb3908febba1
Parents: ce04b14
Author: Manikumar Reddy 
Authored: Thu Aug 31 16:30:33 2017 +0100
Committer: Ismael Juma 
Committed: Thu Aug 31 16:30:42 2017 +0100

--
 .../main/java/org/apache/kafka/clients/Metadata.java|  1 +
 .../apache/kafka/clients/producer/KafkaProducer.java|  2 ++
 .../kafka/clients/producer/KafkaProducerTest.java   | 12 
 3 files changed, 15 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/kafka/blob/9836adc7/clients/src/main/java/org/apache/kafka/clients/Metadata.java
--
diff --git a/clients/src/main/java/org/apache/kafka/clients/Metadata.java 
b/clients/src/main/java/org/apache/kafka/clients/Metadata.java
index 0963bad..b4521c3 100644
--- a/clients/src/main/java/org/apache/kafka/clients/Metadata.java
+++ b/clients/src/main/java/org/apache/kafka/clients/Metadata.java
@@ -112,6 +112,7 @@ public final class Metadata {
  * will be reset on the next update.
  */
 public synchronized void add(String topic) {
+Objects.requireNonNull(topic, "topic cannot be null");
 if (topics.put(topic, TOPIC_EXPIRY_NEEDS_UPDATE) == null) {
 requestUpdateForNewTopics();
 }

http://git-wip-us.apache.org/repos/asf/kafka/blob/9836adc7/clients/src/main/java/org/apache/kafka/clients/producer/KafkaProducer.java
--
diff --git 
a/clients/src/main/java/org/apache/kafka/clients/producer/KafkaProducer.java 
b/clients/src/main/java/org/apache/kafka/clients/producer/KafkaProducer.java
index b06b415..3fa007a 100644
--- a/clients/src/main/java/org/apache/kafka/clients/producer/KafkaProducer.java
+++ b/clients/src/main/java/org/apache/kafka/clients/producer/KafkaProducer.java
@@ -66,6 +66,7 @@ import java.net.InetSocketAddress;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Properties;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
@@ -964,6 +965,7 @@ public class KafkaProducer implements Producer {
  */
 @Override
 public List partitionsFor(String topic) {
+Objects.requireNonNull(topic, "topic cannot be null");
 try {
 return waitOnMetadata(topic, null, 
maxBlockTimeMs).cluster.partitionsForTopic(topic);
 } catch (InterruptedException e) {

http://git-wip-us.apache.org/repos/asf/kafka/blob/9836adc7/clients/src/test/java/org/apache/kafka/clients/producer/KafkaProducerTest.java
--
diff --git 
a/clients/src/test/java/org/apache/kafka/clients/producer/KafkaProducerTest.java
 
b/clients/src/test/java/org/apache/kafka/clients/producer/KafkaProducerTest.java
index dd62457..26f7588 100644
--- 
a/clients/src/test/java/org/apache/kafka/clients/producer/KafkaProducerTest.java
+++ 
b/clients/src/test/java/org/apache/kafka/clients/producer/KafkaProducerTest.java
@@ -464,4 +464,16 @@ public class KafkaProducerTest {
 
 EasyMock.verify(interceptors);
 }
+
+@Test
+public void testPartitionsForWithNullTopic() {
+Properties props = new Properties();
+props.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, 
"localhost:9000");
+try (KafkaProducer producer = new 
KafkaProducer<>(props, new ByteArraySerializer(), new ByteArraySerializer())) {
+producer.partitionsFor(null);
+fail("Expected NullPointerException to be raised");
+} catch (NullPointerException e) {
+// expected
+}
+}
 }



kafka-site git commit: Add Damian's PGP

2017-08-31 Thread damianguy
Repository: kafka-site
Updated Branches:
  refs/heads/asf-site 52b928144 -> 07a0b4045


Add Damian's PGP


Project: http://git-wip-us.apache.org/repos/asf/kafka-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/kafka-site/commit/07a0b404
Tree: http://git-wip-us.apache.org/repos/asf/kafka-site/tree/07a0b404
Diff: http://git-wip-us.apache.org/repos/asf/kafka-site/diff/07a0b404

Branch: refs/heads/asf-site
Commit: 07a0b4045f5f3d55af44e0d1bfde60c90915d9ab
Parents: 52b9281
Author: Damian Guy 
Authored: Thu Aug 31 10:29:03 2017 +0100
Committer: Damian Guy 
Committed: Thu Aug 31 10:29:03 2017 +0100

--
 KEYS | 57 +
 1 file changed, 57 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/kafka-site/blob/07a0b404/KEYS
--
diff --git a/KEYS b/KEYS
index 2efca24..75298ca 100644
--- a/KEYS
+++ b/KEYS
@@ -711,3 +711,60 @@ 
U0PdwcFXT1sU3rtuhREDUTagZ3FmwIOse/NXbN5dHcnnZMWn+qqzMxiutb4MuN01
 qUAdpxxKffByAEiV
 =LJo0
 -END PGP PUBLIC KEY BLOCK-
+pub   4096R/518830CF 2017-08-31
+uid   [ultimate] Damian Guy (CODE SIGNING KEY) 
+sig 3518830CF 2017-08-31  Damian Guy (CODE SIGNING KEY) 

+sub   4096R/6B21A95F 2017-08-31
+sig  518830CF 2017-08-31  Damian Guy (CODE SIGNING KEY) 

+
+-BEGIN PGP PUBLIC KEY BLOCK-
+
+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
+xc4GtaeCajdGhBWlwaEba0Go
+=ZGR0
+-END PGP PUBLIC KEY BLOCK-