diff --git a/.chloggen/msg_feature-include-lz4-compression.yaml b/.chloggen/msg_feature-include-lz4-compression.yaml new file mode 100644 index 00000000000..4c09166b1bc --- /dev/null +++ b/.chloggen/msg_feature-include-lz4-compression.yaml @@ -0,0 +1,25 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: "enhancement" + +# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver) +component: "confighttp" + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Adding support for lz4 compression into the project + +# One or more tracking issues or pull requests related to the change +issues: [9128] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: + +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: [user] diff --git a/cmd/otelcorecol/go.mod b/cmd/otelcorecol/go.mod index 8baa3145da3..7ccc15d0d98 100644 --- a/cmd/otelcorecol/go.mod +++ b/cmd/otelcorecol/go.mod @@ -64,6 +64,7 @@ require ( github.com/modern-go/reflect2 v1.0.2 // indirect github.com/mostynb/go-grpc-compression v1.2.3 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/pierrec/lz4/v4 v4.1.21 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect github.com/prometheus/client_golang v1.20.4 // indirect diff --git a/cmd/otelcorecol/go.sum b/cmd/otelcorecol/go.sum index 980387635b8..2d3ba5c2eec 100644 --- a/cmd/otelcorecol/go.sum +++ b/cmd/otelcorecol/go.sum @@ -72,6 +72,8 @@ github.com/mostynb/go-grpc-compression v1.2.3 h1:42/BKWMy0KEJGSdWvzqIyOZ95YcR9mL github.com/mostynb/go-grpc-compression v1.2.3/go.mod h1:AghIxF3P57umzqM9yz795+y1Vjs47Km/Y2FE6ouQ7Lg= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ= +github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= diff --git a/config/configcompression/compressiontype.go b/config/configcompression/compressiontype.go index 004e9558665..fd4fd87cf42 100644 --- a/config/configcompression/compressiontype.go +++ b/config/configcompression/compressiontype.go @@ -14,6 +14,7 @@ const ( TypeDeflate Type = "deflate" TypeSnappy Type = "snappy" TypeZstd Type = "zstd" + TypeLz4 Type = "lz4" typeNone Type = "none" typeEmpty Type = "" ) @@ -31,6 +32,7 @@ func (ct *Type) UnmarshalText(in []byte) error { typ == TypeDeflate || typ == TypeSnappy || typ == TypeZstd || + typ == TypeLz4 || typ == typeNone || typ == typeEmpty { *ct = typ diff --git a/config/configcompression/compressiontype_test.go b/config/configcompression/compressiontype_test.go index cf8166d5a24..5fb78c054bc 100644 --- a/config/configcompression/compressiontype_test.go +++ b/config/configcompression/compressiontype_test.go @@ -57,6 +57,12 @@ func TestUnmarshalText(t *testing.T) { compressionName: []byte("none"), shouldError: false, }, + { + name: "ValidLz4", + compressionName: []byte("lz4"), + isCompressed: true, + shouldError: false, + }, { name: "Invalid", compressionName: []byte("ggip"), diff --git a/config/confighttp/README.md b/config/confighttp/README.md index 07ac4a1d8a9..8b0c40a9bad 100644 --- a/config/confighttp/README.md +++ b/config/confighttp/README.md @@ -23,7 +23,7 @@ README](../configtls/README.md). - [`read_buffer_size`](https://golang.org/pkg/net/http/#Transport) - [`timeout`](https://golang.org/pkg/net/http/#Client) - [`write_buffer_size`](https://golang.org/pkg/net/http/#Transport) -- `compression`: Compression type to use among `gzip`, `zstd`, `snappy`, `zlib`, and `deflate`. +- `compression`: Compression type to use among `gzip`, `zstd`, `snappy`, `zlib`, `deflate`, and `lz4`. - look at the documentation for the server-side of the communication. - `none` will be treated as uncompressed, and any other inputs will cause an error. - [`max_idle_conns`](https://golang.org/pkg/net/http/#Transport) @@ -79,7 +79,7 @@ will not be enabled. not set, browsers use a default of 5 seconds. - `endpoint`: Valid value syntax available [here](https://github.com/grpc/grpc/blob/master/doc/naming.md) - `max_request_body_size`: configures the maximum allowed body size in bytes for a single request. Default: `20971520` (20MiB) -- `compression_algorithms`: configures the list of compression algorithms the server can accept. Default: ["", "gzip", "zstd", "zlib", "snappy", "deflate"] +- `compression_algorithms`: configures the list of compression algorithms the server can accept. Default: ["", "gzip", "zstd", "zlib", "snappy", "deflate", "lz4"] - [`tls`](../configtls/README.md) - [`auth`](../configauth/README.md) - `request_params`: a list of query parameter names to add to the auth context, along with the HTTP headers diff --git a/config/confighttp/compression.go b/config/confighttp/compression.go index 6680b61ff4f..144b30affe9 100644 --- a/config/confighttp/compression.go +++ b/config/confighttp/compression.go @@ -15,6 +15,7 @@ import ( "github.com/golang/snappy" "github.com/klauspost/compress/zstd" + "github.com/pierrec/lz4/v4" "go.opentelemetry.io/collector/config/configcompression" ) @@ -66,6 +67,13 @@ var availableDecoders = map[string]func(body io.ReadCloser) (io.ReadCloser, erro orig: body, }, nil }, + //nolint:unparam // Ignoring the linter request to remove error return since it needs to match the method signature + "lz4": func(body io.ReadCloser) (io.ReadCloser, error) { + return &compressReadCloser{ + Reader: lz4.NewReader(body), + orig: body, + }, nil + }, } func newCompressRoundTripper(rt http.RoundTripper, compressionType configcompression.Type) (*compressRoundTripper, error) { @@ -119,7 +127,6 @@ type decompressor struct { // httpContentDecompressor offloads the task of handling compressed HTTP requests // by identifying the compression format in the "Content-Encoding" header and re-writing // request body so that the handlers further in the chain can work on decompressed data. -// It supports gzip and deflate/zlib compression. func httpContentDecompressor(h http.Handler, maxRequestBodySize int64, eh func(w http.ResponseWriter, r *http.Request, errorMsg string, statusCode int), enableDecoders []string, decoders map[string]func(body io.ReadCloser) (io.ReadCloser, error)) http.Handler { errHandler := defaultErrorHandler if eh != nil { diff --git a/config/confighttp/compression_test.go b/config/confighttp/compression_test.go index 169120ad4fb..9f161a3f7c3 100644 --- a/config/confighttp/compression_test.go +++ b/config/confighttp/compression_test.go @@ -19,6 +19,7 @@ import ( "github.com/golang/snappy" "github.com/klauspost/compress/zstd" + "github.com/pierrec/lz4/v4" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -33,6 +34,7 @@ func TestHTTPClientCompression(t *testing.T) { compressedDeflateBody := compressZlib(t, testBody) compressedSnappyBody := compressSnappy(t, testBody) compressedZstdBody := compressZstd(t, testBody) + compressedLz4Body := compressLz4(t, testBody) tests := []struct { name string @@ -82,6 +84,12 @@ func TestHTTPClientCompression(t *testing.T) { reqBody: compressedZstdBody.Bytes(), shouldError: false, }, + { + name: "ValidLz4", + encoding: configcompression.TypeLz4, + reqBody: compressedLz4Body.Bytes(), + shouldError: false, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { @@ -199,6 +207,12 @@ func TestHTTPContentDecompressionHandler(t *testing.T) { reqBody: compressSnappy(t, testBody), respCode: http.StatusOK, }, + { + name: "ValidLz4", + encoding: "lz4", + reqBody: compressLz4(t, testBody), + respCode: http.StatusOK, + }, { name: "InvalidDeflate", encoding: "deflate", @@ -365,6 +379,75 @@ func TestOverrideCompressionList(t *testing.T) { require.NoError(t, res.Body.Close(), "failed to close request body: %v", err) } +func TestDecompressorAvoidDecompressionBomb(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + encoding string + compress func(tb testing.TB, payload []byte) *bytes.Buffer + }{ + // None encoding is ignored since it does not + // enforce the max body size if content encoding header is not set + { + name: "gzip", + encoding: "gzip", + compress: compressGzip, + }, + { + name: "zstd", + encoding: "zstd", + compress: compressZstd, + }, + { + name: "zlib", + encoding: "zlib", + compress: compressZlib, + }, + { + name: "snappy", + encoding: "snappy", + compress: compressSnappy, + }, + { + name: "lz4", + encoding: "lz4", + compress: compressLz4, + }, + } { + tc := tc + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + h := httpContentDecompressor( + http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + n, err := io.Copy(io.Discard, r.Body) + assert.Equal(t, int64(1024), n, "Must have only read the limited value of bytes") + assert.EqualError(t, err, "http: request body too large") + w.WriteHeader(http.StatusBadRequest) + }), + 1024, + defaultErrorHandler, + defaultCompressionAlgorithms, + availableDecoders, + ) + + payload := tc.compress(t, make([]byte, 2*1024)) // 2KB uncompressed payload + assert.NotEmpty(t, payload.Bytes(), "Must have data available") + + req := httptest.NewRequest(http.MethodPost, "/", payload) + req.Header.Set("Content-Encoding", tc.encoding) + + resp := httptest.NewRecorder() + + h.ServeHTTP(resp, req) + + assert.Equal(t, http.StatusBadRequest, resp.Code, "Must match the expected code") + assert.Empty(t, resp.Body.String(), "Must match the returned string") + }) + } +} + func compressGzip(t testing.TB, body []byte) *bytes.Buffer { var buf bytes.Buffer gw := gzip.NewWriter(&buf) @@ -400,3 +483,12 @@ func compressZstd(t testing.TB, body []byte) *bytes.Buffer { require.NoError(t, zw.Close()) return &buf } + +func compressLz4(tb testing.TB, body []byte) *bytes.Buffer { + var buf bytes.Buffer + lz := lz4.NewWriter(&buf) + _, err := lz.Write(body) + require.NoError(tb, err) + require.NoError(tb, lz.Close()) + return &buf +} diff --git a/config/confighttp/compressor.go b/config/confighttp/compressor.go index 660fa83ce51..5c8fefa92cc 100644 --- a/config/confighttp/compressor.go +++ b/config/confighttp/compressor.go @@ -13,6 +13,7 @@ import ( "github.com/golang/snappy" "github.com/klauspost/compress/zstd" + "github.com/pierrec/lz4/v4" "go.opentelemetry.io/collector/config/configcompression" ) @@ -32,6 +33,13 @@ var ( zStdPool = &compressor{pool: sync.Pool{New: func() any { zw, _ := zstd.NewWriter(nil, zstd.WithEncoderConcurrency(1)); return zw }}} _ writeCloserReset = (*zlib.Writer)(nil) zLibPool = &compressor{pool: sync.Pool{New: func() any { return zlib.NewWriter(nil) }}} + _ writeCloserReset = (*lz4.Writer)(nil) + lz4Pool = &compressor{pool: sync.Pool{New: func() any { + lz := lz4.NewWriter(nil) + // Setting concurrency to 1 to disable async decoding by goroutines. This will reduce the overall memory footprint and pool + _ = lz.Apply(lz4.ConcurrencyOption(1)) + return lz + }}} ) type compressor struct { @@ -50,6 +58,8 @@ func newCompressor(compressionType configcompression.Type) (*compressor, error) return zStdPool, nil case configcompression.TypeZlib, configcompression.TypeDeflate: return zLibPool, nil + case configcompression.TypeLz4: + return lz4Pool, nil } return nil, errors.New("unsupported compression type, ") } diff --git a/config/confighttp/confighttp.go b/config/confighttp/confighttp.go index 4c38d3015a7..3f70b64bf5e 100644 --- a/config/confighttp/confighttp.go +++ b/config/confighttp/confighttp.go @@ -33,7 +33,7 @@ import ( const headerContentEncoding = "Content-Encoding" const defaultMaxRequestBodySize = 20 * 1024 * 1024 // 20MiB -var defaultCompressionAlgorithms = []string{"", "gzip", "zstd", "zlib", "snappy", "deflate"} +var defaultCompressionAlgorithms = []string{"", "gzip", "zstd", "zlib", "snappy", "deflate", "lz4"} // ClientConfig defines settings for creating an HTTP client. type ClientConfig struct { diff --git a/config/confighttp/go.mod b/config/confighttp/go.mod index 65e8c1ea3f1..44c20bee0e5 100644 --- a/config/confighttp/go.mod +++ b/config/confighttp/go.mod @@ -5,6 +5,7 @@ go 1.22.0 require ( github.com/golang/snappy v0.0.4 github.com/klauspost/compress v1.17.10 + github.com/pierrec/lz4/v4 v4.1.21 github.com/rs/cors v1.11.1 github.com/stretchr/testify v1.9.0 go.opentelemetry.io/collector/client v1.17.0 diff --git a/config/confighttp/go.sum b/config/confighttp/go.sum index d7df5010469..d3e0097a5b4 100644 --- a/config/confighttp/go.sum +++ b/config/confighttp/go.sum @@ -31,6 +31,8 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ= +github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= diff --git a/exporter/otlphttpexporter/go.mod b/exporter/otlphttpexporter/go.mod index 884b2ef4b0a..6f37f110efd 100644 --- a/exporter/otlphttpexporter/go.mod +++ b/exporter/otlphttpexporter/go.mod @@ -42,6 +42,7 @@ require ( github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/pierrec/lz4/v4 v4.1.21 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rs/cors v1.11.1 // indirect go.opentelemetry.io/collector/client v1.17.0 // indirect diff --git a/exporter/otlphttpexporter/go.sum b/exporter/otlphttpexporter/go.sum index 5f79ad90e46..d151e552cfe 100644 --- a/exporter/otlphttpexporter/go.sum +++ b/exporter/otlphttpexporter/go.sum @@ -48,6 +48,8 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ= +github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= diff --git a/extension/zpagesextension/go.mod b/extension/zpagesextension/go.mod index d41694bc5dc..baf6e8e2914 100644 --- a/extension/zpagesextension/go.mod +++ b/extension/zpagesextension/go.mod @@ -34,6 +34,7 @@ require ( github.com/knadh/koanf/v2 v2.1.1 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect + github.com/pierrec/lz4/v4 v4.1.21 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rs/cors v1.11.1 // indirect go.opentelemetry.io/collector/client v1.17.0 // indirect diff --git a/extension/zpagesextension/go.sum b/extension/zpagesextension/go.sum index 4d4ee3d89c6..1d1a674591f 100644 --- a/extension/zpagesextension/go.sum +++ b/extension/zpagesextension/go.sum @@ -43,6 +43,8 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ= +github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= diff --git a/internal/e2e/go.mod b/internal/e2e/go.mod index e4880b984b2..f6aeb179dd2 100644 --- a/internal/e2e/go.mod +++ b/internal/e2e/go.mod @@ -60,6 +60,7 @@ require ( github.com/modern-go/reflect2 v1.0.2 // indirect github.com/mostynb/go-grpc-compression v1.2.3 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/pierrec/lz4/v4 v4.1.21 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect github.com/prometheus/client_golang v1.20.4 // indirect diff --git a/internal/e2e/go.sum b/internal/e2e/go.sum index e1169181a6d..631bfb5fb88 100644 --- a/internal/e2e/go.sum +++ b/internal/e2e/go.sum @@ -69,6 +69,8 @@ github.com/mostynb/go-grpc-compression v1.2.3 h1:42/BKWMy0KEJGSdWvzqIyOZ95YcR9mL github.com/mostynb/go-grpc-compression v1.2.3/go.mod h1:AghIxF3P57umzqM9yz795+y1Vjs47Km/Y2FE6ouQ7Lg= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ= +github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= diff --git a/otelcol/go.sum b/otelcol/go.sum index 29930c80c4f..bf879f834b9 100644 --- a/otelcol/go.sum +++ b/otelcol/go.sum @@ -70,6 +70,8 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ= +github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= diff --git a/otelcol/otelcoltest/go.sum b/otelcol/otelcoltest/go.sum index 29930c80c4f..bf879f834b9 100644 --- a/otelcol/otelcoltest/go.sum +++ b/otelcol/otelcoltest/go.sum @@ -70,6 +70,8 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ= +github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= diff --git a/receiver/otlpreceiver/go.mod b/receiver/otlpreceiver/go.mod index baeac827b49..de83743ebcc 100644 --- a/receiver/otlpreceiver/go.mod +++ b/receiver/otlpreceiver/go.mod @@ -48,6 +48,7 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/mostynb/go-grpc-compression v1.2.3 // indirect + github.com/pierrec/lz4/v4 v4.1.21 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rs/cors v1.11.1 // indirect go.opentelemetry.io/collector/client v1.17.0 // indirect diff --git a/receiver/otlpreceiver/go.sum b/receiver/otlpreceiver/go.sum index 463d052c7da..257e93e92cd 100644 --- a/receiver/otlpreceiver/go.sum +++ b/receiver/otlpreceiver/go.sum @@ -48,6 +48,8 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mostynb/go-grpc-compression v1.2.3 h1:42/BKWMy0KEJGSdWvzqIyOZ95YcR9mLPqKctH7Uo//I= github.com/mostynb/go-grpc-compression v1.2.3/go.mod h1:AghIxF3P57umzqM9yz795+y1Vjs47Km/Y2FE6ouQ7Lg= +github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ= +github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= diff --git a/service/go.mod b/service/go.mod index da6d83aaf96..b7e897f08bb 100644 --- a/service/go.mod +++ b/service/go.mod @@ -81,6 +81,7 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/pierrec/lz4/v4 v4.1.21 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect github.com/prometheus/procfs v0.15.1 // indirect diff --git a/service/go.sum b/service/go.sum index 775344dfc24..77e920a5dd7 100644 --- a/service/go.sum +++ b/service/go.sum @@ -67,6 +67,8 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ= +github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw=