You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by Anuj Mehta <me...@gmail.com> on 2013/09/13 09:21:28 UTC

Query : failed due to Leader not local for partition

Hi

I am a newbie "Kafka" user. I had 0.8 branch code and trying to run a
simple producer (currently no consumer) from kafka-java-examples on *Window
XP*

When the producer tries to send a message I get following

[2013-09-13 12:39:28,244] WARN [KafkaApi-0] Produce request with
correlation id 2 from client  on partition [test,0] *failed due to Leader
not local for partition* [test,0] on broker 0 (kafka.server.KafkaApis)
[2013-09-13 12:39:28,431] INFO [KafkaApi-0] Send the close connection
response due to error handling produce request [clientId = , correlationId
= 2, topicAndPartition = [test,0]] with Ack=0 (kafka.server.KafkaApis)


Looks like there is a similar issue (
https://issues.apache.org/jira/browse/KAFKA-876) but it's resolved.
I am attaching server and zookeeper logs for reference.
Please guide.

Cheers!!
Anuj
http://anuj-mehta.blogspot.com/

Re: Query : failed due to Leader not local for partition

Posted by Guozhang Wang <wa...@gmail.com>.
Hi Anuj,

Could you describe how to reproduce this? And will this exception result in
message failed to send in the end? I still think this is transient, as the
producer retries in the future and as the leader be elected, the messages
should be sent eventually.

Guozhang


On Mon, Sep 16, 2013 at 7:18 AM, Neha Narkhede <ne...@gmail.com>wrote:

> Anuj,
>
> If you look at Partition.makeLeader(), leaderReplicaOpt gets updated to the
> latest leader.
>
> As Guozhang pointed out, this error should be transient.
>
> Thanks,
> Neha
> On Sep 16, 2013 5:22 AM, "Anuj Mehta" <me...@gmail.com> wrote:
>
> > Hi Guozhang
> >
> > Thanks for your reply. The problem is not transient in my case. I tried
> > debugging the issue and find problem in following code snippet (please
> > correct me if I am wrong)
> >
> > As part of code for handling ProducerRequest (from KafkaApis) following
> > code is executed
> >
> >  val partitionOpt = replicaManager.getPartition(topicAndPartition.topic,
> > topicAndPartition.partition)
> >         val (start, end) =
> >           partitionOpt match {
> >             case Some(partition) => *partition.appendMessagesToLeader*
> > (messages.asInstanceOf[ByteBufferMessageSet])
> >
> > Now problem lies with "appendMessagesToLeader" method of Partition.scala
> > where in the below code snippet the value of *"leaderReplicaOpt"* is
> always
> > *None *leading to "leader not local partition"
> >
> >  def appendMessagesToLeader(messages: ByteBufferMessageSet): (Long,
> Long) =
> > {
> >     leaderIsrUpdateLock synchronized {
> >       val leaderReplicaOpt = leaderReplicaIfLocal()
> >
> >
> > Cheers!!
> > Anuj
> > http://anuj-mehta.blogspot.com/
> >
> >
> > On Sat, Sep 14, 2013 at 1:09 AM, Guozhang Wang <wa...@gmail.com>
> wrote:
> >
> > > Hi Anuj,
> > >
> > > The LeaderNotLocalException could be transient:
> > >
> > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/FAQ#FAQ-WhydoIseelotsofLeadernotlocalexceptionsonthebrokerduringcontrolledshutdown%3F
> > >
> > >
> > > Guozhang
> > >
> > >
> > > On Fri, Sep 13, 2013 at 12:21 AM, Anuj Mehta <me...@gmail.com>
> > wrote:
> > >
> > > > Hi
> > > >
> > > > I am a newbie "Kafka" user. I had 0.8 branch code and trying to run a
> > > > simple producer (currently no consumer) from kafka-java-examples on
> > > *Window
> > > > XP*
> > > >
> > > > When the producer tries to send a message I get following
> > > >
> > > > [2013-09-13 12:39:28,244] WARN [KafkaApi-0] Produce request with
> > > > correlation id 2 from client  on partition [test,0] *failed due to
> > Leader
> > > > not local for partition* [test,0] on broker 0
> (kafka.server.KafkaApis)
> > > > [2013-09-13 12:39:28,431] INFO [KafkaApi-0] Send the close connection
> > > > response due to error handling produce request [clientId = ,
> > > correlationId
> > > > = 2, topicAndPartition = [test,0]] with Ack=0
> (kafka.server.KafkaApis)
> > > >
> > > >
> > > > Looks like there is a similar issue (
> > > > https://issues.apache.org/jira/browse/KAFKA-876) but it's resolved.
> > > > I am attaching server and zookeeper logs for reference.
> > > > Please guide.
> > > >
> > > > Cheers!!
> > > > Anuj
> > > > http://anuj-mehta.blogspot.com/
> > > >
> > >
> > >
> > >
> > > --
> > > -- Guozhang
> > >
> >
>



-- 
-- Guozhang

Re: Query : failed due to Leader not local for partition

Posted by Neha Narkhede <ne...@gmail.com>.
Anuj,

If you look at Partition.makeLeader(), leaderReplicaOpt gets updated to the
latest leader.

As Guozhang pointed out, this error should be transient.

Thanks,
Neha
On Sep 16, 2013 5:22 AM, "Anuj Mehta" <me...@gmail.com> wrote:

> Hi Guozhang
>
> Thanks for your reply. The problem is not transient in my case. I tried
> debugging the issue and find problem in following code snippet (please
> correct me if I am wrong)
>
> As part of code for handling ProducerRequest (from KafkaApis) following
> code is executed
>
>  val partitionOpt = replicaManager.getPartition(topicAndPartition.topic,
> topicAndPartition.partition)
>         val (start, end) =
>           partitionOpt match {
>             case Some(partition) => *partition.appendMessagesToLeader*
> (messages.asInstanceOf[ByteBufferMessageSet])
>
> Now problem lies with "appendMessagesToLeader" method of Partition.scala
> where in the below code snippet the value of *"leaderReplicaOpt"* is always
> *None *leading to "leader not local partition"
>
>  def appendMessagesToLeader(messages: ByteBufferMessageSet): (Long, Long) =
> {
>     leaderIsrUpdateLock synchronized {
>       val leaderReplicaOpt = leaderReplicaIfLocal()
>
>
> Cheers!!
> Anuj
> http://anuj-mehta.blogspot.com/
>
>
> On Sat, Sep 14, 2013 at 1:09 AM, Guozhang Wang <wa...@gmail.com> wrote:
>
> > Hi Anuj,
> >
> > The LeaderNotLocalException could be transient:
> >
> >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/FAQ#FAQ-WhydoIseelotsofLeadernotlocalexceptionsonthebrokerduringcontrolledshutdown%3F
> >
> >
> > Guozhang
> >
> >
> > On Fri, Sep 13, 2013 at 12:21 AM, Anuj Mehta <me...@gmail.com>
> wrote:
> >
> > > Hi
> > >
> > > I am a newbie "Kafka" user. I had 0.8 branch code and trying to run a
> > > simple producer (currently no consumer) from kafka-java-examples on
> > *Window
> > > XP*
> > >
> > > When the producer tries to send a message I get following
> > >
> > > [2013-09-13 12:39:28,244] WARN [KafkaApi-0] Produce request with
> > > correlation id 2 from client  on partition [test,0] *failed due to
> Leader
> > > not local for partition* [test,0] on broker 0 (kafka.server.KafkaApis)
> > > [2013-09-13 12:39:28,431] INFO [KafkaApi-0] Send the close connection
> > > response due to error handling produce request [clientId = ,
> > correlationId
> > > = 2, topicAndPartition = [test,0]] with Ack=0 (kafka.server.KafkaApis)
> > >
> > >
> > > Looks like there is a similar issue (
> > > https://issues.apache.org/jira/browse/KAFKA-876) but it's resolved.
> > > I am attaching server and zookeeper logs for reference.
> > > Please guide.
> > >
> > > Cheers!!
> > > Anuj
> > > http://anuj-mehta.blogspot.com/
> > >
> >
> >
> >
> > --
> > -- Guozhang
> >
>

Re: Query : failed due to Leader not local for partition

Posted by Anuj Mehta <me...@gmail.com>.
Hi Guozhang

Thanks for your reply. The problem is not transient in my case. I tried
debugging the issue and find problem in following code snippet (please
correct me if I am wrong)

As part of code for handling ProducerRequest (from KafkaApis) following
code is executed

 val partitionOpt = replicaManager.getPartition(topicAndPartition.topic,
topicAndPartition.partition)
        val (start, end) =
          partitionOpt match {
            case Some(partition) => *partition.appendMessagesToLeader*
(messages.asInstanceOf[ByteBufferMessageSet])

Now problem lies with "appendMessagesToLeader" method of Partition.scala
where in the below code snippet the value of *"leaderReplicaOpt"* is always
*None *leading to "leader not local partition"

 def appendMessagesToLeader(messages: ByteBufferMessageSet): (Long, Long) =
{
    leaderIsrUpdateLock synchronized {
      val leaderReplicaOpt = leaderReplicaIfLocal()


Cheers!!
Anuj
http://anuj-mehta.blogspot.com/


On Sat, Sep 14, 2013 at 1:09 AM, Guozhang Wang <wa...@gmail.com> wrote:

> Hi Anuj,
>
> The LeaderNotLocalException could be transient:
>
>
> https://cwiki.apache.org/confluence/display/KAFKA/FAQ#FAQ-WhydoIseelotsofLeadernotlocalexceptionsonthebrokerduringcontrolledshutdown%3F
>
>
> Guozhang
>
>
> On Fri, Sep 13, 2013 at 12:21 AM, Anuj Mehta <me...@gmail.com> wrote:
>
> > Hi
> >
> > I am a newbie "Kafka" user. I had 0.8 branch code and trying to run a
> > simple producer (currently no consumer) from kafka-java-examples on
> *Window
> > XP*
> >
> > When the producer tries to send a message I get following
> >
> > [2013-09-13 12:39:28,244] WARN [KafkaApi-0] Produce request with
> > correlation id 2 from client  on partition [test,0] *failed due to Leader
> > not local for partition* [test,0] on broker 0 (kafka.server.KafkaApis)
> > [2013-09-13 12:39:28,431] INFO [KafkaApi-0] Send the close connection
> > response due to error handling produce request [clientId = ,
> correlationId
> > = 2, topicAndPartition = [test,0]] with Ack=0 (kafka.server.KafkaApis)
> >
> >
> > Looks like there is a similar issue (
> > https://issues.apache.org/jira/browse/KAFKA-876) but it's resolved.
> > I am attaching server and zookeeper logs for reference.
> > Please guide.
> >
> > Cheers!!
> > Anuj
> > http://anuj-mehta.blogspot.com/
> >
>
>
>
> --
> -- Guozhang
>

Re: Query : failed due to Leader not local for partition

Posted by Guozhang Wang <wa...@gmail.com>.
Hi Anuj,

The LeaderNotLocalException could be transient:

https://cwiki.apache.org/confluence/display/KAFKA/FAQ#FAQ-WhydoIseelotsofLeadernotlocalexceptionsonthebrokerduringcontrolledshutdown%3F


Guozhang


On Fri, Sep 13, 2013 at 12:21 AM, Anuj Mehta <me...@gmail.com> wrote:

> Hi
>
> I am a newbie "Kafka" user. I had 0.8 branch code and trying to run a
> simple producer (currently no consumer) from kafka-java-examples on *Window
> XP*
>
> When the producer tries to send a message I get following
>
> [2013-09-13 12:39:28,244] WARN [KafkaApi-0] Produce request with
> correlation id 2 from client  on partition [test,0] *failed due to Leader
> not local for partition* [test,0] on broker 0 (kafka.server.KafkaApis)
> [2013-09-13 12:39:28,431] INFO [KafkaApi-0] Send the close connection
> response due to error handling produce request [clientId = , correlationId
> = 2, topicAndPartition = [test,0]] with Ack=0 (kafka.server.KafkaApis)
>
>
> Looks like there is a similar issue (
> https://issues.apache.org/jira/browse/KAFKA-876) but it's resolved.
> I am attaching server and zookeeper logs for reference.
> Please guide.
>
> Cheers!!
> Anuj
> http://anuj-mehta.blogspot.com/
>



-- 
-- Guozhang