[wip] Explore Snappy implementations

This commit is contained in:
Peter Taoussanis 2024-02-06 12:57:04 +01:00
parent 7d2800d106
commit 676898495c
3 changed files with 21 additions and 2 deletions

View file

@ -11,7 +11,9 @@
[[org.clojure/tools.reader "1.3.7"]
[com.taoensso/encore "3.77.0"]
[org.tukaani/xz "1.9"]
[io.airlift/aircompressor "0.25"]]
[io.airlift/aircompressor "0.25"]
[org.iq80.snappy/snappy "0.4"]
[org.xerial.snappy/snappy-java "1.1.10.5"]]
:profiles
{;; :default [:base :system :user :provided :dev]

View file

@ -116,6 +116,8 @@
(compress [_ ba] (airlift-compress @airlift-lzo-compressor_ ba true))
(decompress [_ ba] (airlift-decompress @airlift-lzo-decompressor_ ba nil))))
;; Using `io.airlift/aircompressor`, vulnerable to https://github.com/airlift/aircompressor/issues/183
#_
(do
(enc/def* ^:private airlift-snappy-compressor_ (enc/thread-local (io.airlift.compress.snappy.SnappyCompressor.)))
(enc/def* ^:private airlift-snappy-decompressor_ (enc/thread-local (io.airlift.compress.snappy.SnappyDecompressor.)))
@ -127,6 +129,21 @@
(when-not prepend-size?
(io.airlift.compress.snappy.SnappyDecompressor/getUncompressedLength ba 0))))))
;; Using `org.iq80.snappy/snappy`, vulnerable to https://github.com/airlift/aircompressor/issues/183
#_
(deftype SnappyCompressor [_]
ICompressor
(header-id [_] :snappy)
(compress [_ ba] (org.iq80.snappy.Snappy/compress ba))
(decompress [_ ba] (org.iq80.snappy.Snappy/uncompress ba 0 (alength ^bytes ba))))
;; Using `org.xerial.snappy/snappy-java`, some compatibility issues due to JNI
(deftype SnappyCompressor [_]
ICompressor
(header-id [_] :snappy)
(compress [_ ba] (org.xerial.snappy.Snappy/compress ba))
(decompress [_ ba] (org.xerial.snappy.Snappy/uncompress ba)))
;;;; LZMA2
(deftype LZMA2Compressor [compression-level]

View file

@ -429,7 +429,7 @@
compr/snappy-compressor
compr/lzma2-compressor]]
(dotimes [_ 100]
(dotimes [_ 2e4]
(is
(nil? (enc/catching (compr/decompress c (crypto/rand-bytes 1024))))
"Decompression never core dumps, even against invalid data"))))