You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by svante karlsson <sa...@csi.se> on 2014/05/12 10:10:51 UTC

decoding of responses with error_codes

I'm writing (yet another) C++ binding for kafka and I'm curious on the
encoding in relation to error-code != 0

There seems to be a discrepancy as to how to decode messages in presence of
errors.

ConsumerMetadataResponse error_code !=0 -> no more data should be decoded.

in all others we continue parsing of the rest of the message. Is this
assumption correct?

ie.

ProduceResponse...   offset should always be decoded

FetchResponse          highwater_mark_offset, message_set_size and
corresponding message should be decoded (most likely 0 size)

OffsetResponse:        offsets array should be decoded (guessing 0 size or
NULL)

MetadataResponse    topic_data::error-code and partition-data::error_code,
the rest of the message should be decoded.


/svante

Re: decoding of responses with error_codes

Posted by Joel Koshy <jj...@gmail.com>.
Just checked in KAFKA-1437, so this should no longer be an issue. I'll
update the wiki as soon as the wiki is back up.

On Mon, May 12, 2014 at 05:45:27PM +0200, svante karlsson wrote:
> Thanks for the clarification.
> 
> -if (errorCode == ErrorMapping.NoError) {
> -      coordinator.get.writeTo(buffer)
> 
> The removal of the "if" statement would fix the issue but the patch
> changes other things that I can't say much about as I don't know
> scala.
> 
> /svante
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 2014-05-12 17:25 GMT+02:00 Guozhang Wang <wa...@gmail.com>:
> 
> > Hi Svante,
> >
> > This is indeed an issue with the protocol definition of
> > ConsumerMetadataResponse. Do you think this issue is fixed in the following
> > JIRA?
> >
> > https://issues.apache.org/jira/browse/KAFKA-1437
> >
> > Guozhang
> >
> >
> > On Mon, May 12, 2014 at 1:10 AM, svante karlsson <sa...@csi.se> wrote:
> >
> > > I'm writing (yet another) C++ binding for kafka and I'm curious on the
> > > encoding in relation to error-code != 0
> > >
> > > There seems to be a discrepancy as to how to decode messages in presence
> > of
> > > errors.
> > >
> > > ConsumerMetadataResponse error_code !=0 -> no more data should be
> > decoded.
> > >
> > > in all others we continue parsing of the rest of the message. Is this
> > > assumption correct?
> > >
> > > ie.
> > >
> > > ProduceResponse...   offset should always be decoded
> > >
> > > FetchResponse          highwater_mark_offset, message_set_size and
> > > corresponding message should be decoded (most likely 0 size)
> > >
> > > OffsetResponse:        offsets array should be decoded (guessing 0 size
> > or
> > > NULL)
> > >
> > > MetadataResponse    topic_data::error-code and
> > partition-data::error_code,
> > > the rest of the message should be decoded.
> > >
> > >
> > > /svante
> > >
> >
> >
> >
> > --
> > -- Guozhang
> >


Re: decoding of responses with error_codes

Posted by svante karlsson <sa...@csi.se>.
Thanks for the clarification.

-if (errorCode == ErrorMapping.NoError) {
-      coordinator.get.writeTo(buffer)

The removal of the "if" statement would fix the issue but the patch
changes other things that I can't say much about as I don't know
scala.

/svante










2014-05-12 17:25 GMT+02:00 Guozhang Wang <wa...@gmail.com>:

> Hi Svante,
>
> This is indeed an issue with the protocol definition of
> ConsumerMetadataResponse. Do you think this issue is fixed in the following
> JIRA?
>
> https://issues.apache.org/jira/browse/KAFKA-1437
>
> Guozhang
>
>
> On Mon, May 12, 2014 at 1:10 AM, svante karlsson <sa...@csi.se> wrote:
>
> > I'm writing (yet another) C++ binding for kafka and I'm curious on the
> > encoding in relation to error-code != 0
> >
> > There seems to be a discrepancy as to how to decode messages in presence
> of
> > errors.
> >
> > ConsumerMetadataResponse error_code !=0 -> no more data should be
> decoded.
> >
> > in all others we continue parsing of the rest of the message. Is this
> > assumption correct?
> >
> > ie.
> >
> > ProduceResponse...   offset should always be decoded
> >
> > FetchResponse          highwater_mark_offset, message_set_size and
> > corresponding message should be decoded (most likely 0 size)
> >
> > OffsetResponse:        offsets array should be decoded (guessing 0 size
> or
> > NULL)
> >
> > MetadataResponse    topic_data::error-code and
> partition-data::error_code,
> > the rest of the message should be decoded.
> >
> >
> > /svante
> >
>
>
>
> --
> -- Guozhang
>

Re: decoding of responses with error_codes

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

This is indeed an issue with the protocol definition of
ConsumerMetadataResponse. Do you think this issue is fixed in the following
JIRA?

https://issues.apache.org/jira/browse/KAFKA-1437

Guozhang


On Mon, May 12, 2014 at 1:10 AM, svante karlsson <sa...@csi.se> wrote:

> I'm writing (yet another) C++ binding for kafka and I'm curious on the
> encoding in relation to error-code != 0
>
> There seems to be a discrepancy as to how to decode messages in presence of
> errors.
>
> ConsumerMetadataResponse error_code !=0 -> no more data should be decoded.
>
> in all others we continue parsing of the rest of the message. Is this
> assumption correct?
>
> ie.
>
> ProduceResponse...   offset should always be decoded
>
> FetchResponse          highwater_mark_offset, message_set_size and
> corresponding message should be decoded (most likely 0 size)
>
> OffsetResponse:        offsets array should be decoded (guessing 0 size or
> NULL)
>
> MetadataResponse    topic_data::error-code and partition-data::error_code,
> the rest of the message should be decoded.
>
>
> /svante
>



-- 
-- Guozhang