-
Notifications
You must be signed in to change notification settings - Fork 253
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How to decompress data that is compressed by other lz4 clients. #167
Comments
Thanks for reporting. I think there are two issue here.
|
Sample Compressed Data (Go):
Lz4-java: 1.7.1 |
Thanks for the sample data. It's in the LZ4 block format. Please use LZ4FastDecompressor or LZ4SafeDecompressor, not LZ4DecompressorWithLength, to decompress it. I'll work on how to handle the runtime error.... |
I have the same question about how you decompress data without access to the size of the decompressed data -- the docs mention that the buffer should be "oversize" but doesn't specify by how much. |
I got it working with below code
|
@sahilpaudel-pe according to #168 (comment) it can be up to 256x the compressed size so it looks like using the frame oriented outputstream/inputstream is the way to go, although I don't know how you'd know at first glance whether the other client was using a block or frame format -- presumably you look at the header for magic numbers... https://github.com/lz4/lz4/blob/master/doc/lz4_Frame_format.md |
@sahilpaudel-pe It is not possible to completely avoid SIGBUS/SIGSEGV when using LZ4FastDecompressor with unknown input. By e4780ab, I have supported using LZ4SafeDecompressor in LZ4DecompressorWithLength, so that a Java exception will be thrown instead of SIGBUS or SIGSEGV when it is used with a malformed input. Thanks for the heads-up! |
I have a requirement where some data that may be encoded using go lz4 clients or ruby lz4 clients.
How can I decode that using lz4-java.
I tried using
But I got strange error
Normal java to java decoding is processed as expected.
Thanks.
The text was updated successfully, but these errors were encountered: