Yes I am using the old producer. When I use the producer I do something like this:
Properties config = new Properties(); // put other stuff in the config. // Put the partitioner class that kafka will instantiate. config.put("partitioner.class", partitionerClass.getName()); return new Producer<K, M>(new ProducerConfig(config)); So I assume that the kafka code uses reflection to instantiate the partitioner object. My partitioner object looks like this: public class MyPartitioner implements Partitioner<MyStuff> { MyDeciderThingy thingy; public RawBusIdPartitioner(VerifiableProperties props) {} @Override public int partition(MyStuff stuff, int numPartitions) { return thingy.decide(stuff); } } The problem is I don't know how to pass a MyDeciderThingy to my Partitioner object given Kafka instantiates it. Thanks! On Thu, Oct 30, 2014 at 11:34 AM, Joel Koshy <jjkosh...@gmail.com> wrote: > Not sure I follow - you just need to extend the Partitioner trait. You > don't _have_ to use that specific constructor. > > It is slightly different with the new producer, but looks like you are > on the old producer. > > On Thu, Oct 30, 2014 at 11:16:28AM -0700, Rajiv Kurian wrote: > > Actually I figured out what the problem was. My producer was using a > > partitioner which was causing a null pointer exception. This actually > > raises another question for me. I want some state in my partitioner and > the > > only constructor that Kafka seems to use is this one: > > > > public MyPartitioner(VerifiableProperties props) {} > > > > How do I inject an object here that I can use to decide what partition my > > messages should go to? As an ugly hack I am using a static variable from > > somewhere else. > > > > On Thu, Oct 30, 2014 at 10:25 AM, Rajiv Kurian <ra...@signalfuse.com> > wrote: > > > > > Yes I see a ton of WARN messages on the broker logs of this form: > > > > > > 2014-10-30T17:21:54.281Z WARN [kafka-request-handler-6 ] > > > [state.change.logger ]: Broker 0 received invalid > > > LeaderAndIsr request with correlation id 158 from controller 0 epoch > 29083 > > > with an older leader epoch 5 for partition [myTopic, 56], current > leader > > > epoch is 5 > > > > > > 2014-10-30T17:21:54.282Z WARN [kafka-request-handler-6 ] > > > [state.change.logger ]: Broker 0 received invalid > > > LeaderAndIsr request with correlation id 158 from controller 0 epoch > 29083 > > > with an older leader epoch 5 for partition myTopic,385], current leader > > > epoch is 5 > > > > > > 2014-10-30T17:21:54.283Z WARN [kafka-request-handler-6 ] > > > [state.change.logger ]: Broker 0 received invalid > > > LeaderAndIsr request with correlation id 158 from controller 0 epoch > 29083 > > > with an older leader epoch 5 for partition [myTopic,684], current > leader > > > epoch is 5 > > > > > > 2014-10-30T17:21:54.283Z WARN [kafka-request-handler-6 ] > > > [state.change.logger ]: Broker 0 received invalid > > > LeaderAndIsr request with correlation id 158 from controller 0 epoch > 29083 > > > with an older leader epoch 5 for partition [myTopic,1002], current > leader > > > epoch is > > > > > > On Thu, Oct 30, 2014 at 10:03 AM, Joel Koshy <jjkosh...@gmail.com> > wrote: > > > > > >> Do you see any errors on the broker logs? Can you check the broker's > > >> public access logs and see if there are topic metadata requests coming > > >> in from the producer? > > >> > > >> On Wed, Oct 29, 2014 at 07:15:15PM -0700, Rajiv Kurian wrote: > > >> > I don't see anything else that is relevant. I traced the first of > these > > >> > error messages to figure out the ordering. It actually goes > something > > >> like > > >> > this: > > >> > > > >> > 2014-10-30T01:51:32.400Z ERROR [ProducerSendThread- ] > > >> > [k.producer.async.DefaultEventHandler] {}: Failed to collate > messages by > > >> > topic, partition due to: null > > >> > > > >> > 2014-10-30T01:51:34.082Z ERROR [ProducerSendThread- ] > > >> > [k.producer.async.DefaultEventHandler] {}: Failed to collate > messages by > > >> > topic, partition due to: null > > >> > > > >> > 2014-10-30T01:51:34.422Z ERROR [ProducerSendThread- ] > > >> > [k.producer.async.DefaultEventHandler] {}: Failed to collate > messages by > > >> > topic, partition due to: null > > >> > > > >> > 2014-10-30T01:51:34.664Z ERROR [ProducerSendThread- ] > > >> > [k.producer.async.DefaultEventHandler] {}: Failed to collate > messages by > > >> > topic, partition due to: null > > >> > > > >> > 2014-10-30T01:51:34.902Z ERROR [ProducerSendThread- ] > > >> > [k.producer.async.DefaultEventHandler] {}: Failed to send requests > for > > >> > topics myTopic with correlation ids in [0,8] > > >> > > > >> > 2014-10-30T01:51:35.007Z ERROR [ProducerSendThread- ] > > >> > [k.producer.async.ProducerSendThread ] {}: Error in handling batch > of 1 > > >> > events > > >> > > > >> > kafka.common.FailedToSendMessageException: Failed to send messages > > >> after 3 > > >> > tries. > > >> > > > >> > at kafka.producer.async.DefaultEventHandler.handle(Unknown Source) > > >> > ~[kafka_2.10-0.8.0.jar:0.8.0] > > >> > > > >> > at kafka.producer.async.ProducerSendThread.tryToHandle(Unknown > Source) > > >> > [kafka_2.10-0.8.0.jar:0.8.0] > > >> > > > >> > at > > >> > > > >> > kafka.producer.async.ProducerSendThread$$anonfun$processEvents$3.apply(Unknown > > >> > Source) [kafka_2.10-0.8.0.jar:0.8.0] > > >> > > > >> > at > > >> > > > >> > kafka.producer.async.ProducerSendThread$$anonfun$processEvents$3.apply(Unknown > > >> > Source) [kafka_2.10-0.8.0.jar:0.8.0] > > >> > > > >> > at scala.collection.immutable.Stream.foreach(Stream.scala:547) > > >> > [scala-library-2.10.1.jar:na] > > >> > > > >> > at kafka.producer.async.ProducerSendThread.processEvents(Unknown > Source) > > >> > [kafka_2.10-0.8.0.jar:0.8.0] > > >> > > > >> > at kafka.producer.async.ProducerSendThread.run(Unknown Source) > > >> > [kafka_2.10-0.8.0.jar:0.8.0] > > >> > > > >> > Thanks! > > >> > > > >> > On Wed, Oct 29, 2014 at 7:02 PM, Rajiv Kurian <ra...@signalfuse.com > > > > >> wrote: > > >> > > > >> > > This pattern seems to repeat: > > >> > > > > >> > > 2014-10-30T01:54:46.004Z ERROR [ProducerSendThread- > ] > > >> > > [k.producer.async.DefaultEventHandler] {}: Failed to send > requests for > > >> > > topics myTopic with correlation ids in [1729,1736] > > >> > > > > >> > > 2014-10-30T01:54:46.008Z ERROR [ProducerSendThread- > ] > > >> > > [k.producer.async.ProducerSendThread ] {}: Error in handling > batch of > > >> 4 > > >> > > events > > >> > > > > >> > > kafka.common.FailedToSendMessageException: Failed to send messages > > >> after 3 > > >> > > tries. > > >> > > > > >> > > at kafka.producer.async.DefaultEventHandler.handle(Unknown Source) > > >> > > ~[kafka_2.10-0.8.0.jar:0.8.0] > > >> > > > > >> > > at kafka.producer.async.ProducerSendThread.tryToHandle(Unknown > Source) > > >> > > [kafka_2.10-0.8.0.jar:0.8.0] > > >> > > > > >> > > at > > >> > > > > >> > kafka.producer.async.ProducerSendThread$$anonfun$processEvents$3.apply(Unknown > > >> > > Source) [kafka_2.10-0.8.0.jar:0.8.0] > > >> > > > > >> > > at > > >> > > > > >> > kafka.producer.async.ProducerSendThread$$anonfun$processEvents$3.apply(Unknown > > >> > > Source) [kafka_2.10-0.8.0.jar:0.8.0] > > >> > > > > >> > > at scala.collection.immutable.Stream.foreach(Stream.scala:547) > > >> > > [scala-library-2.10.1.jar:na] > > >> > > > > >> > > at kafka.producer.async.ProducerSendThread.processEvents(Unknown > > >> Source) > > >> > > [kafka_2.10-0.8.0.jar:0.8.0] > > >> > > > > >> > > at kafka.producer.async.ProducerSendThread.run(Unknown Source) > > >> > > [kafka_2.10-0.8.0.jar:0.8.0] > > >> > > > > >> > > 2014-10-30T01:54:46.025Z ERROR [ProducerSendThread- > ] > > >> > > [k.producer.async.DefaultEventHandler] {}: Failed to collate > messages > > >> by > > >> > > topic, partition due to: null > > >> > > > > >> > > 2014-10-30T01:54:46.174Z ERROR [ProducerSendThread- > ] > > >> > > [k.producer.async.DefaultEventHandler] {}: Failed to collate > messages > > >> by > > >> > > topic, partition due to: null > > >> > > > > >> > > 2014-10-30T01:54:46.356Z ERROR [ProducerSendThread- > ] > > >> > > [k.producer.async.DefaultEventHandler] {}: Failed to collate > messages > > >> by > > >> > > topic, partition due to: null > > >> > > > > >> > > 2014-10-30T01:54:46.644Z ERROR [ProducerSendThread- > ] > > >> > > [k.producer.async.DefaultEventHandler] {}: Failed to collate > messages > > >> by > > >> > > topic, partition due to: null > > >> > > > > >> > > On Wed, Oct 29, 2014 at 6:57 PM, Jun Rao <jun...@gmail.com> > wrote: > > >> > > > > >> > >> The log before that will show you the cause of the error. Could > you > > >> dig > > >> > >> that out? > > >> > >> > > >> > >> Thanks, > > >> > >> > > >> > >> Jun > > >> > >> > > >> > >> On Wed, Oct 29, 2014 at 6:43 PM, Rajiv Kurian < > ra...@signalfuse.com> > > >> > >> wrote: > > >> > >> > > >> > >> > I keep seeing these errors in my code that is just trying to > send > > >> some > > >> > >> data > > >> > >> > using an AsyncProducer: > > >> > >> > > > >> > >> > kafka.common.FailedToSendMessageException: Failed to send > messages > > >> > >> after 3 > > >> > >> > tries. > > >> > >> > > > >> > >> > at kafka.producer.async.DefaultEventHandler.handle(Unknown > Source) > > >> > >> > ~[kafka_2.10-0.8.0.jar:0.8.0] > > >> > >> > > > >> > >> > at kafka.producer.async.ProducerSendThread.tryToHandle(Unknown > > >> Source) > > >> > >> > [kafka_2.10-0.8.0.jar:0.8.0] > > >> > >> > > > >> > >> > at > > >> > >> > > > >> > >> > > > >> > >> > > >> > kafka.producer.async.ProducerSendThread$$anonfun$processEvents$3.apply(Unknown > > >> > >> > Source) [kafka_2.10-0.8.0.jar:0.8.0] > > >> > >> > > > >> > >> > at > > >> > >> > > > >> > >> > > > >> > >> > > >> > kafka.producer.async.ProducerSendThread$$anonfun$processEvents$3.apply(Unknown > > >> > >> > Source) [kafka_2.10-0.8.0.jar:0.8.0] > > >> > >> > > > >> > >> > at scala.collection.immutable.Stream.foreach(Stream.scala:547) > > >> > >> > [scala-library-2.10.1.jar:na] > > >> > >> > > > >> > >> > at > kafka.producer.async.ProducerSendThread.processEvents(Unknown > > >> Source) > > >> > >> > [kafka_2.10-0.8.0.jar:0.8.0] > > >> > >> > > > >> > >> > at kafka.producer.async.ProducerSendThread.run(Unknown Source) > > >> > >> > [kafka_2.10-0.8.0.jar:0.8.0] > > >> > >> > > > >> > >> > 2014-10-30T01:40:45.176Z ERROR [ProducerSendThread- > > >> ] > > >> > >> > [k.producer.async.DefaultEventHandler] {}: Failed to collate > > >> messages by > > >> > >> > topic, partition due to: null > > >> > >> > > > >> > >> > 2014-10-30T01:40:45.506Z ERROR [ProducerSendThread- > > >> ] > > >> > >> > [k.producer.async.DefaultEventHandler] {}: Failed to collate > > >> messages by > > >> > >> > topic, partition due to: null > > >> > >> > > > >> > >> > 2014-10-30T01:40:45.647Z ERROR [ProducerSendThread- > > >> ] > > >> > >> > [k.producer.async.DefaultEventHandler] {}: Failed to collate > > >> messages by > > >> > >> > topic, partition due to: null > > >> > >> > > > >> > >> > 2014-10-30T01:40:45.772Z ERROR [ProducerSendThread- > > >> ] > > >> > >> > [k.producer.async.DefaultEventHandler] {}: Failed to collate > > >> messages by > > >> > >> > topic, partition due to: null > > >> > >> > > > >> > >> > 2014-10-30T01:40:45.890Z ERROR [ProducerSendThread- > > >> ] > > >> > >> > [k.producer.async.DefaultEventHandler] {}: Failed to send > requests > > >> for > > >> > >> > topics myTopic with correlation ids in [169,176] > > >> > >> > > > >> > >> > 2014-10-30T01:40:45.892Z ERROR [ProducerSendThread- > > >> ] > > >> > >> > [k.producer.async.ProducerSendThread ] {}: Error in handling > batch > > >> of 29 > > >> > >> > events > > >> > >> > > > >> > >> > > > >> > >> > I created the topic before starting using bin/kafka-topics.sh. > I > > >> checked > > >> > >> > zookeeper and seems like the topic was indeed created. Any > ideas? > > >> > >> > > > >> > >> > > >> > > > > >> > > > > >> >