[
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 <[email protected]>
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)