[ https://issues.apache.org/jira/browse/KAFKA-3160?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15275852#comment-15275852 ]
ASF GitHub Bot commented on KAFKA-3160: --------------------------------------- GitHub user dpkp opened a pull request: https://github.com/apache/kafka/pull/1344 Fixup KAFKA-3160: catch decompression errors in constructor After testing KAFKA-3160 a bit more, I found that the error code was not being set properly in ProduceResponse. This happened because the validation error is raised in the CompressionFactory constructor, which was not wrapped in a try / catch. @ijuma @junrao (This contribution is my original work and I license the work under Apache 2.0.) You can merge this pull request into a Git repository by running: $ git pull https://github.com/dpkp/kafka decompress_error_code Alternatively you can review and apply these changes as the patch at: https://github.com/apache/kafka/pull/1344.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #1344 ---- commit bac92e133cb80aa13ee155a1200bf085947376b7 Author: Dana Powers <dana.pow...@gmail.com> Date: 2016-05-09T01:54:22Z Fixup to KAFKA-3160: catch decompression errors in constructor; return CorruptMessageError ---- > Kafka LZ4 framing code miscalculates header checksum > ---------------------------------------------------- > > Key: KAFKA-3160 > URL: https://issues.apache.org/jira/browse/KAFKA-3160 > Project: Kafka > Issue Type: Bug > Components: compression > Affects Versions: 0.8.2.0, 0.8.2.1, 0.9.0.0, 0.8.2.2, 0.9.0.1 > Reporter: Dana Powers > Assignee: Dana Powers > Priority: Critical > Labels: compatibility, compression, lz4 > Fix For: 0.10.0.0 > > > KAFKA-1493 partially implements the LZ4 framing specification, but it > incorrectly calculates the header checksum. This causes > KafkaLZ4BlockInputStream to raise an error > [IOException(DESCRIPTOR_HASH_MISMATCH)] if a client sends *correctly* framed > LZ4 data. It also causes KafkaLZ4BlockOutputStream to generate incorrectly > framed LZ4 data, which means clients decoding LZ4 messages from kafka will > always receive incorrectly framed data. > Specifically, the current implementation includes the 4-byte MagicNumber in > the checksum, which is incorrect. > http://cyan4973.github.io/lz4/lz4_Frame_format.html > Third-party clients that attempt to use off-the-shelf lz4 framing find that > brokers reject messages as having a corrupt checksum. So currently non-java > clients must 'fixup' lz4 packets to deal with the broken checksum. > Magnus first identified this issue in librdkafka; kafka-python has the same > problem. -- This message was sent by Atlassian JIRA (v6.3.4#6332)