Skip to content

KAFKA-9203: Revert "MINOR: Remove workarounds for lz4-java bug affecting byte buffers (#6679)"#7769

Merged
ijuma merged 1 commit into
apache:trunkfrom
ijuma:kafka-9203-lz4-exception
Dec 3, 2019
Merged

KAFKA-9203: Revert "MINOR: Remove workarounds for lz4-java bug affecting byte buffers (#6679)"#7769
ijuma merged 1 commit into
apache:trunkfrom
ijuma:kafka-9203-lz4-exception

Conversation

@ijuma

@ijuma ijuma commented Dec 3, 2019

Copy link
Copy Markdown
Member

This reverts commit 90043d5 as it caused a regression in some cases:

Caused by: java.io.IOException: Stream frame descriptor corrupted
at org.apache.kafka.common.record.KafkaLZ4BlockInputStream.readHeader(KafkaLZ4BlockInputStream.java:132)
at org.apache.kafka.common.record.KafkaLZ4BlockInputStream.(KafkaLZ4BlockInputStream.java:78)
at org.apache.kafka.common.record.CompressionType$4.wrapForInput(CompressionType.java:110)

I will investigate why after, but I want to get the safe fix into 2.4.0.
The reporter of KAFKA-9203 has verified that reverting this change
makes the problem go away.

Committer Checklist (excluded from commit message)

  • Verify design and implementation
  • Verify test coverage and CI build status
  • Verify documentation (including upgrade notes)

…ing byte buffers (apache#6679)"

This reverts commit 90043d5 as it caused a regression in some cases:

Caused by: java.io.IOException: Stream frame descriptor corrupted
        at org.apache.kafka.common.record.KafkaLZ4BlockInputStream.readHeader(KafkaLZ4BlockInputStream.java:132)
        at org.apache.kafka.common.record.KafkaLZ4BlockInputStream.<init>(KafkaLZ4BlockInputStream.java:78)
        at org.apache.kafka.common.record.CompressionType$4.wrapForInput(CompressionType.java:110)

I will investigate why after, but I want to get the safe fix into
2.4.0.
@ijuma ijuma requested a review from omkreddy December 3, 2019 14:02

@omkreddy omkreddy left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ijuma Thanks for the PR. LGTM.

@ijuma ijuma merged commit 5cddf98 into apache:trunk Dec 3, 2019
@ijuma ijuma deleted the kafka-9203-lz4-exception branch December 3, 2019 16:26
ijuma added a commit that referenced this pull request Dec 3, 2019
…ing byte buffers (#6679)" (#7769)

This reverts commit 90043d5 as it caused a regression in some cases:

> Caused by: java.io.IOException: Stream frame descriptor corrupted
>         at org.apache.kafka.common.record.KafkaLZ4BlockInputStream.readHeader(KafkaLZ4BlockInputStream.java:132)
>         at org.apache.kafka.common.record.KafkaLZ4BlockInputStream.<init>(KafkaLZ4BlockInputStream.java:78)
>         at org.apache.kafka.common.record.CompressionType$4.wrapForInput(CompressionType.java:110)

I will investigate why after, but I want to get the safe fix into 2.4.0.
The reporter of KAFKA-9203 has verified that reverting this change
makes the problem go away.

Reviewers: Manikumar Reddy <manikumar.reddy@gmail.com>
ijuma added a commit that referenced this pull request Dec 3, 2019
…ing byte buffers (#6679)" (#7769)

This reverts commit 90043d5 as it caused a regression in some cases:

> Caused by: java.io.IOException: Stream frame descriptor corrupted
>         at org.apache.kafka.common.record.KafkaLZ4BlockInputStream.readHeader(KafkaLZ4BlockInputStream.java:132)
>         at org.apache.kafka.common.record.KafkaLZ4BlockInputStream.<init>(KafkaLZ4BlockInputStream.java:78)
>         at org.apache.kafka.common.record.CompressionType$4.wrapForInput(CompressionType.java:110)

I will investigate why after, but I want to get the safe fix into 2.4.0.
The reporter of KAFKA-9203 has verified that reverting this change
makes the problem go away.

Reviewers: Manikumar Reddy <manikumar.reddy@gmail.com>
xiowu0 pushed a commit to xiowu0/kafka that referenced this pull request Jun 3, 2020
…nds for lz4-java bug affecting byte buffers (apache#6679)" (apache#7769)

TICKET = KAFKA-9203
LI_DESCRIPTION =

EXIT_CRITERIA = HASH [f8129f6]
ORIGINAL_DESCRIPTION =

This reverts commit 90043d5 as it caused a regression in some cases:

> Caused by: java.io.IOException: Stream frame descriptor corrupted
>         at org.apache.kafka.common.record.KafkaLZ4BlockInputStream.readHeader(KafkaLZ4BlockInputStream.java:132)
>         at org.apache.kafka.common.record.KafkaLZ4BlockInputStream.<init>(KafkaLZ4BlockInputStream.java:78)
>         at org.apache.kafka.common.record.CompressionType$4.wrapForInput(CompressionType.java:110)

I will investigate why after, but I want to get the safe fix into 2.4.0.
The reporter of KAFKA-9203 has verified that reverting this change
makes the problem go away.

Reviewers: Manikumar Reddy <manikumar.reddy@gmail.com>
(cherry picked from commit f8129f6)
xiowu0 added a commit to linkedin/kafka that referenced this pull request Jun 3, 2020
…nds for lz4-java bug affecting byte buffers (apache#6679)" (apache#7769) (#84)

TICKET = KAFKA-9203
LI_DESCRIPTION =

EXIT_CRITERIA = HASH [f8129f6]
ORIGINAL_DESCRIPTION =

This reverts commit 90043d5 as it caused a regression in some cases:

> Caused by: java.io.IOException: Stream frame descriptor corrupted
>         at org.apache.kafka.common.record.KafkaLZ4BlockInputStream.readHeader(KafkaLZ4BlockInputStream.java:132)
>         at org.apache.kafka.common.record.KafkaLZ4BlockInputStream.<init>(KafkaLZ4BlockInputStream.java:78)
>         at org.apache.kafka.common.record.CompressionType$4.wrapForInput(CompressionType.java:110)

I will investigate why after, but I want to get the safe fix into 2.4.0.
The reporter of KAFKA-9203 has verified that reverting this change
makes the problem go away.

Reviewers: Manikumar Reddy <manikumar.reddy@gmail.com>
(cherry picked from commit f8129f6)

Co-authored-by: Ismael Juma <ismael@juma.me.uk>
ijuma added a commit that referenced this pull request Jul 23, 2021
…rkarounds (#10196)

* Remove the workarounds that were added back in #7769
* Add a check to detect buggy LZ4 library versions

This check allows us to safely remove the workarounds for buggy
LZ4 versions without users encountering cryptic errors if they
accidentally have an older LZ4 library on the classpath, as
described in KAFKA-9203.

With this change the use will get a clear error message indicating
what the problem might be if they encounter this situation.

Note: This now instantiates a compressor in the decompression code.
This should be safe with respect to JNI libraries, since we always use
`LZ4Factory.fastestInstance()` which takes care of falling back to a pure
Java implementation if JNI libraries are not present.

This was tested with lz4 1.3.0 to make sure it triggers the exception when running
`KafkaLZ4Test`.

Reviewers: Manikumar Reddy <manikumar.reddy@gmail.com>, Ismael Juma <ismael@juma.me.uk>

Co-authored-by: Ismael Juma <ismael@juma.me.uk>
xdgrulez pushed a commit to xdgrulez/kafka that referenced this pull request Dec 22, 2021
…rkarounds (apache#10196)

* Remove the workarounds that were added back in apache#7769
* Add a check to detect buggy LZ4 library versions

This check allows us to safely remove the workarounds for buggy
LZ4 versions without users encountering cryptic errors if they
accidentally have an older LZ4 library on the classpath, as
described in KAFKA-9203.

With this change the use will get a clear error message indicating
what the problem might be if they encounter this situation.

Note: This now instantiates a compressor in the decompression code.
This should be safe with respect to JNI libraries, since we always use
`LZ4Factory.fastestInstance()` which takes care of falling back to a pure
Java implementation if JNI libraries are not present.

This was tested with lz4 1.3.0 to make sure it triggers the exception when running
`KafkaLZ4Test`.

Reviewers: Manikumar Reddy <manikumar.reddy@gmail.com>, Ismael Juma <ismael@juma.me.uk>

Co-authored-by: Ismael Juma <ismael@juma.me.uk>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants