diff --git a/cmd/karma/views.go b/cmd/karma/views.go index 5761f77d5..ba0f74ee3 100644 --- a/cmd/karma/views.go +++ b/cmd/karma/views.go @@ -2,7 +2,6 @@ package main import ( "bytes" - "compress/gzip" "encoding/base64" "encoding/json" "fmt" @@ -20,6 +19,7 @@ import ( "github.com/prymitive/karma/internal/transform" "github.com/gin-gonic/gin" + "github.com/klauspost/compress/zstd" log "github.com/sirupsen/logrus" ) @@ -38,15 +38,19 @@ func pong(c *gin.Context) { func compressResponse(data []byte) ([]byte, error) { var b bytes.Buffer - // this only fails if we pass unsupported level (3 is valid) - gz, _ := gzip.NewWriterLevel(&b, 3) - _, err := gz.Write(data) + w, err := zstd.NewWriter(&b) if err != nil { + return nil, fmt.Errorf("failed to create a compressor: %s", err.Error()) + } + + _, err = w.Write(data) + if err != nil { + w.Close() return nil, fmt.Errorf("failed to compress data: %s", err.Error()) } - if err = gz.Close(); err != nil { + if err = w.Close(); err != nil { return nil, fmt.Errorf("failed to close compression writer: %s", err.Error()) } @@ -58,11 +62,13 @@ func compressResponse(data []byte) ([]byte, error) { func decompressCachedResponse(data []byte) ([]byte, error) { b := bytes.NewReader(data) - z, err := gzip.NewReader(b) + + r, err := zstd.NewReader(b) if err != nil { return nil, fmt.Errorf("failed to created new compression reader: %s", err.Error()) } - p, err := ioutil.ReadAll(z) + + p, err := ioutil.ReadAll(r) if err != nil { return nil, fmt.Errorf("failed to decompress data: %s", err.Error()) } diff --git a/go.mod b/go.mod index fccbb4069..b2f8f3566 100644 --- a/go.mod +++ b/go.mod @@ -27,6 +27,7 @@ require ( github.com/google/go-querystring v1.0.0 // indirect github.com/hansrodtang/randomcolor v0.0.0-20160512071917-d27108b3d7a5 github.com/jarcoal/httpmock v1.0.5 + github.com/klauspost/compress v1.10.5 github.com/knadh/koanf v0.10.0 github.com/mitchellh/mapstructure v1.3.0 github.com/patrickmn/go-cache v2.1.1-0.20180815053127-5633e0862627+incompatible diff --git a/go.sum b/go.sum index 4f4474096..97d948a73 100644 --- a/go.sum +++ b/go.sum @@ -312,7 +312,10 @@ github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQL github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.4.1 h1:8VMb5+0wMgdBykOV96DwNwKFQ+WTI4pzYURP99CcB9E= github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.10.5 h1:7q6vHIqubShURwQz8cQK6yIe/xC3IF0Vm7TGfqjewrc= +github.com/klauspost/compress v1.10.5/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/knadh/koanf v0.10.0 h1:yLhpmguhSOvtLNXHqqyVrvNc27PZMHoj7bdbUt3kzes=