fs2 gunzip doesn't support concatenated gzip files
Open
Nobody has claimed this yet.
bug
- Dominant language
- Scala
- Stars
- 2.5k
- Forks
- 636
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 7
Description
Steps to reproduce:
- generate a compressed file
echo foo > foo; echo bar > bar; gzip -c foo bar > foobar.gz
- run the following code
import cats.effect.IO
import cats.effect.unsafe.implicits.global
import fs2.compression.Compression
import java.io.FileInputStream
fs2.io
.readInputStream(
IO(new FileInputStream("foobar.gz")),
1024,
)
.through(Compression[IO].gunzip(1024))
.flatMap(_.content)
.compile
.drain
.unsafeRunSync()
This code snippet throws a java.util.zip.ZipException: Content failed CRC validation.
I expect it to run without error.
Tested on fs2 3.11.0
My gzip version is Apple gzip 430.140.2
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the provided shell command and Scala example through Compression[IO].gunzip(1024), then trace the gzip decompression entry point used by that stream. Done means concatenated gzip members decompress without throwing a CRC validation error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- scala
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100