Potentially, you can pass in state related info through the properties and
use those to instantiate MyDeciderThingy.

Thanks,

Jun

On Thu, Oct 30, 2014 at 11:46 AM, Rajiv Kurian <ra...@signalfuse.com> wrote:

> 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?
> > > >> > >> >
> > > >> > >>
> > > >> > >
> > > >> > >
> > > >>
> >
>

Reply via email to