Return-Path: X-Original-To: apmail-incubator-kafka-dev-archive@minotaur.apache.org Delivered-To: apmail-incubator-kafka-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id D5C6B774B for ; Tue, 1 Nov 2011 05:10:54 +0000 (UTC) Received: (qmail 16065 invoked by uid 500); 1 Nov 2011 05:10:54 -0000 Delivered-To: apmail-incubator-kafka-dev-archive@incubator.apache.org Received: (qmail 16049 invoked by uid 500); 1 Nov 2011 05:10:54 -0000 Mailing-List: contact kafka-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: kafka-dev@incubator.apache.org Delivered-To: mailing list kafka-dev@incubator.apache.org Received: (qmail 16041 invoked by uid 99); 1 Nov 2011 05:10:53 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 01 Nov 2011 05:10:53 +0000 X-ASF-Spam-Status: No, hits=-2000.1 required=5.0 tests=ALL_TRUSTED,FRT_OFFER2,RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.116] (HELO hel.zones.apache.org) (140.211.11.116) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 01 Nov 2011 05:10:52 +0000 Received: from hel.zones.apache.org (hel.zones.apache.org [140.211.11.116]) by hel.zones.apache.org (Postfix) with ESMTP id 5C9F232B03E for ; Tue, 1 Nov 2011 05:10:32 +0000 (UTC) Date: Tue, 1 Nov 2011 05:10:32 +0000 (UTC) From: "Neha Narkhede (Commented) (JIRA)" To: kafka-dev@incubator.apache.org Message-ID: <331465572.44599.1320124232380.JavaMail.tomcat@hel.zones.apache.org> In-Reply-To: <608847248.19343.1319651612523.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] [Commented] (KAFKA-171) Kafka producer should do a single write to send message sets MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/KAFKA-171?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13140935#comment-13140935 ] Neha Narkhede commented on KAFKA-171: ------------------------------------- nnarkhed-mn:kafka-171 nnarkhed$ find . -name "*scala" -exec grep -Hi "asInstanceOf\[Int\]" {} \; ./core/src/main/scala/kafka/api/OffsetRequest.scala: header.putInt(size.asInstanceOf[Int] + 2) ./core/src/main/scala/kafka/api/ProducerRequest.scala: def sizeInBytes(): Int = 2 + topic.length + 4 + 4 + messages.sizeInBytes.asInstanceOf[Int] ./core/src/main/scala/kafka/network/BoundedByteBufferSend.scala: written.asInstanceOf[Int] ./core/src/main/scala/kafka/producer/SyncProducer.scala: val setSize = messages.sizeInBytes.asInstanceOf[Int] ./core/src/main/scala/kafka/server/MessageSetSend.scala: header.putInt(size.asInstanceOf[Int] + 2) ./core/src/main/scala/kafka/server/MessageSetSend.scala: written += fileBytesSent.asInstanceOf[Int] ./core/src/main/scala/kafka/server/MessageSetSend.scala: def sendSize: Int = size.asInstanceOf[Int] + header.capacity ./core/src/main/scala/kafka/utils/Utils.scala: buffer.putInt((value & 0xffffffffL).asInstanceOf[Int]) ./core/src/main/scala/kafka/utils/Utils.scala: buffer.putInt(index, (value & 0xffffffffL).asInstanceOf[Int]) Its not great that we have so many places where we need to worry about coercion, but we can clean this up the next time we change the on wire protocol. +1 on the latest patch > Kafka producer should do a single write to send message sets > ------------------------------------------------------------ > > Key: KAFKA-171 > URL: https://issues.apache.org/jira/browse/KAFKA-171 > Project: Kafka > Issue Type: Bug > Components: core > Affects Versions: 0.7, 0.8 > Reporter: Jay Kreps > Assignee: Jay Kreps > Fix For: 0.8 > > Attachments: KAFKA-171-draft.patch, KAFKA-171-v2.patch, KAFKA-171.patch > > > From email thread: > http://mail-archives.apache.org/mod_mbox/incubator-kafka-dev/201110.mbox/%3cCAFbh0Q1PYUj32thBaYQ29E6J4wT_mrG5SuUsfdeGWj6rmEx9Gw@mail.gmail.com%3e > > Before sending an actual message, kafka producer do send a (control) message of 4 bytes to the server. Kafka producer always does this action before send some message to the server. > I think this is because in BoundedByteBufferSend.scala we do essentially > channel.write(sizeBuffer) > channel.write(dataBuffer) > The correct solution is to use vector I/O and instead do > channel.write(Array(sizeBuffer, dataBuffer)) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira