[ 
https://issues.apache.org/jira/browse/KAFKA-308?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13942349#comment-13942349
 ] 

Jay Kreps commented on KAFKA-308:
---------------------------------

[~nehanarkhede] If no updates perhaps we should close this--perhaps it was just 
random disk corruption or something...

> Corrupted message stored in log segment on disk
> -----------------------------------------------
>
>                 Key: KAFKA-308
>                 URL: https://issues.apache.org/jira/browse/KAFKA-308
>             Project: Kafka
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 0.7
>            Reporter: Neha Narkhede
>            Priority: Blocker
>
> One of our consumers got stuck on a particular topic partition and threw the 
> following exception -
> 2012/03/16 05:20:51.285 ERROR [FetcherRunnable] [FetchRunnable-0] [kafka] 
> error in FetcherRunnable for service-call:33-0: fetched offset = 
> 387722824645: consumed offset = 387722824645
> kafka.common.InvalidMessageSizeException: invalid message size: 393216 only 
> received bytes: 143266 at 387722824645( possible causes (1) a single message 
> larger than the fetch size; (2) log corruption )
>         at 
> kafka.message.ByteBufferMessageSet$$anon$1.makeNextOuter(ByteBufferMessageSet.scala:114)
>         at 
> kafka.message.ByteBufferMessageSet$$anon$1.makeNext(ByteBufferMessageSet.scala:161)
>         at 
> kafka.message.ByteBufferMessageSet$$anon$1.makeNext(ByteBufferMessageSet.scala:94)
>         at 
> kafka.utils.IteratorTemplate.maybeComputeNext(IteratorTemplate.scala:59)
>         at kafka.utils.IteratorTemplate.hasNext(IteratorTemplate.scala:51)
>         at 
> kafka.message.ByteBufferMessageSet.shallowValidBytes(ByteBufferMessageSet.scala:65)
>         at 
> kafka.message.ByteBufferMessageSet.validBytes(ByteBufferMessageSet.scala:60)
>         at 
> kafka.consumer.PartitionTopicInfo.enqueue(PartitionTopicInfo.scala:57)
>         at 
> kafka.consumer.FetcherRunnable$$anonfun$run$5.apply(FetcherRunnable.scala:79)
>         at 
> kafka.consumer.FetcherRunnable$$anonfun$run$5.apply(FetcherRunnable.scala:65)
>         at 
> scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:61)
>         at scala.collection.immutable.List.foreach(List.scala:45)
>         at kafka.consumer.FetcherRunnable.run(FetcherRunnable.scala:65)
> We ran the DumpLogSegments tool on the log segment for that partition and it 
> shows the log segment is corrupted - 
> [2012-03-17 17:44:45,269] INFO offset: 387722824645 isvalid: false 
> payloadsize: 393211 magic: 0 compresscodec: NoCompressionCodec 
> (kafka.tools.DumpLogSegments$)
> [2012-03-17 17:44:45,269] INFO 
> Reading file message set from location 394088 (kafka.message.FileMessageSet)
> [2012-03-17 17:44:45,269] INFO Creating message byte buffer of size 
> 1634499840 (kafka.message.FileMessageSet)
> Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
>       at java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:39)
>       at java.nio.ByteBuffer.allocate(ByteBuffer.java:312)
>       at 
> kafka.message.FileMessageSet$$anon$1.makeNext(FileMessageSet.scala:126)
>       at 
> kafka.message.FileMessageSet$$anon$1.makeNext(FileMessageSet.scala:108)
>       at 
> kafka.utils.IteratorTemplate.maybeComputeNext(IteratorTemplate.scala:59)
>       at kafka.utils.IteratorTemplate.hasNext(IteratorTemplate.scala:51)
>       at scala.collection.Iterator$class.foreach(Iterator.scala:631)
>       at kafka.utils.IteratorTemplate.foreach(IteratorTemplate.scala:30)
>       at scala.collection.IterableLike$class.foreach(IterableLike.scala:79)
>       at kafka.message.MessageSet.foreach(MessageSet.scala:87)
>       at kafka.tools.DumpLogSegments$.main(DumpLogSegments.scala:92)
>       at kafka.tools.DumpLogSegments.main(DumpLogSegments.scala)
> Upon inspecting the log segment using hexdump, it shows that the corrupted 
> message had a suspicious size (larger than the rest of the messages for that 
> topic), followed by a magic byte value of 0 and attributes value of 3
> nnarkhed-ld:kafka-trunk nnarkhed$ hexdump /tmp/387722823777.kafka -s 868 -n 6 
> -x
> 0000364    0600    0000    0300                                        
> The first 4 bytes are the size of the mesage (393216) and the last 2 bytes 
> are the magic byte followed by attributes byte. 



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to