[wip] Explore Snappy implementations
This commit is contained in:
parent
7d2800d106
commit
676898495c
3 changed files with 21 additions and 2 deletions
|
|
@ -11,7 +11,9 @@
|
||||||
[[org.clojure/tools.reader "1.3.7"]
|
[[org.clojure/tools.reader "1.3.7"]
|
||||||
[com.taoensso/encore "3.77.0"]
|
[com.taoensso/encore "3.77.0"]
|
||||||
[org.tukaani/xz "1.9"]
|
[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
|
:profiles
|
||||||
{;; :default [:base :system :user :provided :dev]
|
{;; :default [:base :system :user :provided :dev]
|
||||||
|
|
|
||||||
|
|
@ -116,6 +116,8 @@
|
||||||
(compress [_ ba] (airlift-compress @airlift-lzo-compressor_ ba true))
|
(compress [_ ba] (airlift-compress @airlift-lzo-compressor_ ba true))
|
||||||
(decompress [_ ba] (airlift-decompress @airlift-lzo-decompressor_ ba nil))))
|
(decompress [_ ba] (airlift-decompress @airlift-lzo-decompressor_ ba nil))))
|
||||||
|
|
||||||
|
;; Using `io.airlift/aircompressor`, vulnerable to https://github.com/airlift/aircompressor/issues/183
|
||||||
|
#_
|
||||||
(do
|
(do
|
||||||
(enc/def* ^:private airlift-snappy-compressor_ (enc/thread-local (io.airlift.compress.snappy.SnappyCompressor.)))
|
(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.)))
|
(enc/def* ^:private airlift-snappy-decompressor_ (enc/thread-local (io.airlift.compress.snappy.SnappyDecompressor.)))
|
||||||
|
|
@ -127,6 +129,21 @@
|
||||||
(when-not prepend-size?
|
(when-not prepend-size?
|
||||||
(io.airlift.compress.snappy.SnappyDecompressor/getUncompressedLength ba 0))))))
|
(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
|
;;;; LZMA2
|
||||||
|
|
||||||
(deftype LZMA2Compressor [compression-level]
|
(deftype LZMA2Compressor [compression-level]
|
||||||
|
|
|
||||||
|
|
@ -429,7 +429,7 @@
|
||||||
compr/snappy-compressor
|
compr/snappy-compressor
|
||||||
compr/lzma2-compressor]]
|
compr/lzma2-compressor]]
|
||||||
|
|
||||||
(dotimes [_ 100]
|
(dotimes [_ 2e4]
|
||||||
(is
|
(is
|
||||||
(nil? (enc/catching (compr/decompress c (crypto/rand-bytes 1024))))
|
(nil? (enc/catching (compr/decompress c (crypto/rand-bytes 1024))))
|
||||||
"Decompression never core dumps, even against invalid data"))))
|
"Decompression never core dumps, even against invalid data"))))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue