Home | About | Sematext search-lucene.com search-hadoop.com
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB
 Search Hadoop and all its subprojects:

Switch to Threaded View
Kafka >> mail # user >> 0.8 protocol exception


Copy link to this message
-
Re: 0.8 protocol exception
Ok, so I've found out the error: The documentation is outdated, the
MetadataRequest BNF should be:

NumberOfTopics [TopicList]

Had to check the scala source code for that.

Is there a place with a most to date doc?

Regards
On Mon, Jul 8, 2013 at 6:42 AM, Vinicius Carvalho <
[EMAIL PROTECTED]> wrote:

> Hi there. I'm building the 0.8 version of a client to nodejs. I never
> coded for node and most of my code is following what the prozees guys did
> (I'm talking to them on updating the lib)
>
> But, I'm facing some errors when I test a very simple metadata request.
> I'm getting this exception on kafka:
>
> java.nio.BufferUnderflowException
> at java.nio.HeapByteBuffer.get(HeapByteBuffer.java:145)
>  at java.nio.ByteBuffer.get(ByteBuffer.java:694)
> at kafka.api.ApiUtils$.readShortString(ApiUtils.scala:38)
>  at
> kafka.api.TopicMetadataRequest$$anonfun$readFrom$1.apply(TopicMetadataRequest.scala:44)
> at
> kafka.api.TopicMetadataRequest$$anonfun$readFrom$1.apply(TopicMetadataRequest.scala:43)
>  at scala.collection.immutable.Range$ByOne$class.foreach(Range.scala:282)
> at scala.collection.immutable.Range$$anon$2.foreach(Range.scala:265)
>  at
> kafka.api.TopicMetadataRequest$.readFrom(TopicMetadataRequest.scala:43)
> at kafka.api.RequestKeys$$anonfun$4.apply(RequestKeys.scala:37)
>  at kafka.api.RequestKeys$$anonfun$4.apply(RequestKeys.scala:37)
> at kafka.network.RequestChannel$Request.<init>(RequestChannel.scala:49)
>  at kafka.network.Processor.read(SocketServer.scala:345)
> at kafka.network.Processor.run(SocketServer.scala:245)
>  at java.lang.Thread.run(Thread.java:722)
>
> My test sends a metadatarequest (api code 3) using a clientId "foo",
> correlationId 0 and topicName "myTopic"
>
> I don't know where I'm missing something. Please find the js code bellow
> and also a java counter version that I've created just for the sake of my
> lack of experience with node and js. I get the same error with the java
> version:
>
> Request.prototype.toBytes = function() {
>     var encoded = new BufferMaker()
>         .Int16BE(this.apiKey)
>         .Int16BE(API_VERSION)
>         .Int32BE(this.correlationId)
>         .Int16BE(Buffer.byteLength(this.clientId,'UTF-8'))
>         .string(this.clientId)
>         .string(this.requestMessage.toBytes()).make();
>     var bytes = new
> BufferMaker().Int32BE(encoded.length).string(encoded).make();
>
> MetadataRequest.prototype.toBytes = function () {
>     var bytes = new
> BufferMaker().Int16BE(Buffer.byteLength(this.topicName,'UTF-8')).string(this.topicName).make();
>      return bytes;
> }
>
> var req = new Request(3,0,"foo",new MetadataRequest("myTopic"));
> var status = connection.write(req.toBytes());
>
> Here's the content of the buffer:
>
> <Buffer 00 00 00 16 00 03 00 00 00 00 00 00 00 03 66 6f 6f 00 07 6d 79 54
> 6f 70 69 63>
>
> And the java version (using vertx netclient):
>
> Buffer writeBuffer = new Buffer()
>
>      .appendShort((short) 3) //metadataRequest
>
>      .appendShort((short) 0) //ApiVersion
>
>      .appendInt(0) //Correlation
>
>      .appendShort((short) "foo".getBytes("UTF-8").length).appendString(
> "foo", "UTF-8") //ShortString clientId
>
>      .appendShort((short) "myTopic".getBytes("UTF-8").length).appendString
> ("myTopic", "UTF-8"); //ShortString topicName
>
>     Buffer message = new Buffer();
>
>     message.appendInt(writeBuffer.length()); //add total Message size to
> buffer
>
>     System.out.println(writeBuffer.length());
>
>     message.appendBuffer(writeBuffer);
>
>     socket.write(message);
>
>
> --
> The intuitive mind is a sacred gift and the
> rational mind is a faithful servant. We have
> created a society that honors the servant and
> has forgotten the gift.
>

--
The intuitive mind is a sacred gift and the
rational mind is a faithful servant. We have
created a society that honors the servant and
has forgotten the gift.

 
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB