You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kafka.apache.org by ij...@apache.org on 2017/10/12 09:05:25 UTC

kafka git commit: KAFKA-6053; Fix NoSuchMethodError when creating ProducerRecords with older client versions

Repository: kafka
Updated Branches:
  refs/heads/trunk f6e724b12 -> bdf8e211e


KAFKA-6053; Fix NoSuchMethodError when creating ProducerRecords with older client versions

Author: Apurva Mehta <ap...@confluent.io>

Reviewers: Ismael Juma <is...@juma.me.uk>

Closes #4057 from apurvam/KAFKA-6053-fix-no-such-method-error-in-producer-record


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

Branch: refs/heads/trunk
Commit: bdf8e211ecb50a24071390d493cf1c1732f7346d
Parents: f6e724b
Author: Apurva Mehta <ap...@confluent.io>
Authored: Thu Oct 12 10:05:14 2017 +0100
Committer: Ismael Juma <is...@juma.me.uk>
Committed: Thu Oct 12 10:05:14 2017 +0100

----------------------------------------------------------------------
 .../org/apache/kafka/tools/VerifiableProducer.java     | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kafka/blob/bdf8e211/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java
----------------------------------------------------------------------
diff --git a/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java b/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java
index 8de115f..975cba7 100644
--- a/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java
+++ b/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java
@@ -229,9 +229,18 @@ public class VerifiableProducer {
 
     /** Produce a message with given key and value. */
     public void send(String key, String value) {
-        ProducerRecord<String, String> record = new ProducerRecord<>(topic, null, createTime, key, value);
-        if (createTime != null)
+        ProducerRecord<String, String> record;
+
+        // Older versions of ProducerRecord don't include the message create time in the constructor. So including
+        // even a 'null' argument results in a NoSuchMethodException. Thus we only include the create time if it is
+        // explicitly specified to remain fully backward compatible with older clients.
+        if (createTime != null) {
+            record = new ProducerRecord<>(topic, null, createTime, key, value);
             createTime += System.currentTimeMillis() - startTime;
+        } else {
+            record = new ProducerRecord<>(topic, key, value);
+        }
+
         numSent++;
         try {
             producer.send(record, new PrintInfoCallback(key, value));