You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kafka.apache.org by ne...@apache.org on 2012/03/22 17:59:12 UTC

svn commit: r1303890 - /incubator/kafka/trunk/core/src/main/scala/kafka/message/ByteBufferMessageSet.scala

Author: nehanarkhede
Date: Thu Mar 22 16:59:11 2012
New Revision: 1303890

URL: http://svn.apache.org/viewvc?rev=1303890&view=rev
Log:
KAFKA-309 Bug in FileMessageSet's append API can corrupt on disk log; patched by nehanarkhede; reviewed by junrao

Modified:
    incubator/kafka/trunk/core/src/main/scala/kafka/message/ByteBufferMessageSet.scala

Modified: incubator/kafka/trunk/core/src/main/scala/kafka/message/ByteBufferMessageSet.scala
URL: http://svn.apache.org/viewvc/incubator/kafka/trunk/core/src/main/scala/kafka/message/ByteBufferMessageSet.scala?rev=1303890&r1=1303889&r2=1303890&view=diff
==============================================================================
--- incubator/kafka/trunk/core/src/main/scala/kafka/message/ByteBufferMessageSet.scala (original)
+++ incubator/kafka/trunk/core/src/main/scala/kafka/message/ByteBufferMessageSet.scala Thu Mar 22 16:59:11 2012
@@ -72,8 +72,12 @@ class ByteBufferMessageSet(private val b
   }
   
   /** Write the messages in this set to the given channel */
-  def writeTo(channel: GatheringByteChannel, offset: Long, size: Long): Long =
-    channel.write(buffer.duplicate)
+  def writeTo(channel: GatheringByteChannel, offset: Long, size: Long): Long = {
+    buffer.mark()
+    val written = channel.write(buffer)
+    buffer.reset()
+    written
+  }
   
   override def iterator: Iterator[MessageAndOffset] = internalIterator()