diff --git a/README.md b/README.md index 6f84e7ed..dcda0204 100644 --- a/README.md +++ b/README.md @@ -216,6 +216,7 @@ backend: ``` ### Aerospike +Prebid Cache makes use of an Aerospike Go client that requires Aerospike server version 4.9+ and will not work properly with older versions. Full documentation of the Aerospike Go client can be found [here](https://github.com/aerospike/aerospike-client-go/tree/v6). | Configuration field | Type | Description | | --- | --- | --- | | host | string | aerospike server URI | @@ -223,6 +224,7 @@ backend: | namespace | string | aerospike service namespace where keys get initialized | ### Cassandra +Prebid Cache makes use of a Cassandra client that supports latest 3 major releases of Cassandra (2.1.x, 2.2.x, and 3.x.x). Full documentation of the Cassandra Go client can be found [here](https://github.com/gocql/gocql). | Configuration field | Type | Description | | --- | --- | --- | | hosts | string | Cassandra server URI | @@ -236,6 +238,7 @@ backend: | hosts | string array | List of nodes when not using auto discovery | ### Redis: +Prebid Cache makes use of a Redis Go client compatible with Redis 6. Full documentation of the Redis Go client Prebid Cache uses can be found [here](https://github.com/go-redis/redis). | Configuration field | Type | Description | | --- | --- | --- | | host | string | Redis server URI | diff --git a/backends/aerospike.go b/backends/aerospike.go index 8be235aa..f501a572 100644 --- a/backends/aerospike.go +++ b/backends/aerospike.go @@ -4,8 +4,8 @@ import ( "context" "errors" - as "github.com/aerospike/aerospike-client-go" - as_types "github.com/aerospike/aerospike-client-go/types" + as "github.com/aerospike/aerospike-client-go/v6" + as_types "github.com/aerospike/aerospike-client-go/v6/types" "github.com/prebid/prebid-cache/config" "github.com/prebid/prebid-cache/metrics" "github.com/prebid/prebid-cache/utils" @@ -134,11 +134,12 @@ func (a *AerospikeBackend) Put(ctx context.Context, key string, value string, tt func classifyAerospikeError(err error) error { if err != nil { - if aerr, ok := err.(as_types.AerospikeError); ok { - if aerr.ResultCode() == as_types.KEY_NOT_FOUND_ERROR { + ae := &as.AerospikeError{} + if errors.As(err, &ae) { + if errors.Is(err, &as.AerospikeError{ResultCode: as_types.KEY_NOT_FOUND_ERROR}) { return utils.NewPBCError(utils.KEY_NOT_FOUND) } - if aerr.ResultCode() == as_types.KEY_EXISTS_ERROR { + if errors.Is(err, &as.AerospikeError{ResultCode: as_types.KEY_EXISTS_ERROR}) { return utils.NewPBCError(utils.RECORD_EXISTS) } } diff --git a/backends/aerospike_test.go b/backends/aerospike_test.go index f9b1f287..de905475 100644 --- a/backends/aerospike_test.go +++ b/backends/aerospike_test.go @@ -5,8 +5,8 @@ import ( "fmt" "testing" - as "github.com/aerospike/aerospike-client-go" - as_types "github.com/aerospike/aerospike-client-go/types" + as "github.com/aerospike/aerospike-client-go/v6" + as_types "github.com/aerospike/aerospike-client-go/v6/types" "github.com/prebid/prebid-cache/config" "github.com/prebid/prebid-cache/metrics" "github.com/prebid/prebid-cache/metrics/metricstest" @@ -38,7 +38,7 @@ func TestNewAerospikeBackend(t *testing.T) { expectPanic: true, expectedLogEntries: []logEntry{ { - msg: "Error creating Aerospike backend: Failed to connect to host(s): [foo.com:8888 bat.com:8888]; error: Connecting to the cluster timed out.", + msg: "Error creating Aerospike backend: ResultCode: TIMEOUT, Iteration: 0, InDoubt: false, Node: : command execution timed out on client: See `Policy.Timeout`", lvl: logrus.FatalLevel, }, }, @@ -57,13 +57,13 @@ func TestNewAerospikeBackend(t *testing.T) { lvl: logrus.InfoLevel, }, { - msg: "Error creating Aerospike backend: Failed to connect to host(s): [fakeTestUrl.foo:8888 foo.com:8888 bat.com:8888]; error: Connecting to the cluster timed out.", + msg: "Error creating Aerospike backend: ResultCode: TIMEOUT, Iteration: 0, InDoubt: false, Node: : command execution timed out on client: See `Policy.Timeout`", lvl: logrus.FatalLevel, }, }, }, { - desc: "Unable to connect hoost panic and log fatal error", + desc: "Unable to connect host panic and log fatal error", inCfg: config.Aerospike{ Host: "fakeTestUrl.foo", Port: 8888, @@ -75,7 +75,7 @@ func TestNewAerospikeBackend(t *testing.T) { lvl: logrus.InfoLevel, }, { - msg: "Error creating Aerospike backend: Failed to connect to host(s): [fakeTestUrl.foo:8888]; error: Connecting to the cluster timed out.", + msg: "Error creating Aerospike backend: ResultCode: TIMEOUT, Iteration: 0, InDoubt: false, Node: : command execution timed out on client: See `Policy.Timeout`", lvl: logrus.FatalLevel, }, }, @@ -123,17 +123,17 @@ func TestClassifyAerospikeError(t *testing.T) { }, { desc: "Aerospike error is neither KEY_NOT_FOUND_ERROR nor KEY_EXISTS_ERROR, expect same error as output", - inErr: as_types.NewAerospikeError(as_types.SERVER_NOT_AVAILABLE), - expectedErr: as_types.NewAerospikeError(as_types.SERVER_NOT_AVAILABLE), + inErr: &as.AerospikeError{ResultCode: as_types.SERVER_NOT_AVAILABLE}, + expectedErr: &as.AerospikeError{ResultCode: as_types.SERVER_NOT_AVAILABLE}, }, { desc: "Aerospike KEY_NOT_FOUND_ERROR error, expect Prebid Cache's KEY_NOT_FOUND error", - inErr: as_types.NewAerospikeError(as_types.KEY_NOT_FOUND_ERROR), + inErr: &as.AerospikeError{ResultCode: as_types.KEY_NOT_FOUND_ERROR}, expectedErr: utils.NewPBCError(utils.KEY_NOT_FOUND), }, { desc: "Aerospike KEY_EXISTS_ERROR error, expect Prebid Cache's RECORD_EXISTS error", - inErr: as_types.NewAerospikeError(as_types.KEY_EXISTS_ERROR), + inErr: &as.AerospikeError{ResultCode: as_types.KEY_EXISTS_ERROR}, expectedErr: utils.NewPBCError(utils.RECORD_EXISTS), }, } @@ -168,7 +168,7 @@ func TestAerospikeClientGet(t *testing.T) { desc: "AerospikeBackend.Get() throws error when trying to generate new key", inAerospikeClient: &errorProneAerospikeClient{errorThrowingFunction: "TEST_KEY_GEN_ERROR"}, expectedValue: "", - expectedErrorMsg: "Not authenticated", + expectedErrorMsg: "ResultCode: NOT_AUTHENTICATED, Iteration: 0, InDoubt: false, Node: : ", }, { desc: "AerospikeBackend.Get() throws error when 'client.Get(..)' gets called", @@ -251,7 +251,7 @@ func TestClientPut(t *testing.T) { inKey: "testKey", inValueToStore: "not default value", expectedStoredVal: "", - expectedErrorMsg: "Not authenticated", + expectedErrorMsg: "ResultCode: NOT_AUTHENTICATED, Iteration: 0, InDoubt: false, Node: : ", }, { desc: "AerospikeBackend.Put() throws error when 'client.Put(..)' gets called", @@ -306,14 +306,14 @@ type errorProneAerospikeClient struct { func (c *errorProneAerospikeClient) NewUUIDKey(namespace string, key string) (*as.Key, error) { if c.errorThrowingFunction == "TEST_KEY_GEN_ERROR" { - return nil, as_types.NewAerospikeError(as_types.NOT_AUTHENTICATED) + return nil, &as.AerospikeError{ResultCode: as_types.NOT_AUTHENTICATED} } return nil, nil } func (c *errorProneAerospikeClient) Get(key *as.Key) (*as.Record, error) { if c.errorThrowingFunction == "TEST_GET_ERROR" { - return nil, as_types.NewAerospikeError(as_types.KEY_NOT_FOUND_ERROR) + return nil, &as.AerospikeError{ResultCode: as_types.KEY_NOT_FOUND_ERROR} } else if c.errorThrowingFunction == "TEST_NO_BUCKET_ERROR" { return &as.Record{Bins: as.BinMap{"AnyKey": "any_value"}}, nil } else if c.errorThrowingFunction == "TEST_NON_STRING_VALUE_ERROR" { @@ -324,7 +324,7 @@ func (c *errorProneAerospikeClient) Get(key *as.Key) (*as.Record, error) { func (c *errorProneAerospikeClient) Put(policy *as.WritePolicy, key *as.Key, binMap as.BinMap) error { if c.errorThrowingFunction == "TEST_PUT_ERROR" { - return as_types.NewAerospikeError(as_types.KEY_EXISTS_ERROR) + return &as.AerospikeError{ResultCode: as_types.KEY_EXISTS_ERROR} } return nil } @@ -342,7 +342,7 @@ func (c *goodAerospikeClient) Get(aeKey *as.Key) (*as.Record, error) { return rec, nil } } - return nil, as_types.NewAerospikeError(as_types.KEY_NOT_FOUND_ERROR) + return nil, &as.AerospikeError{ResultCode: as_types.KEY_NOT_FOUND_ERROR} } func (c *goodAerospikeClient) Put(policy *as.WritePolicy, aeKey *as.Key, binMap as.BinMap) error { @@ -353,7 +353,7 @@ func (c *goodAerospikeClient) Put(policy *as.WritePolicy, aeKey *as.Key, binMap } return nil } - return as_types.NewAerospikeError(as_types.KEY_MISMATCH) + return &as.AerospikeError{ResultCode: as_types.KEY_MISMATCH} } func (c *goodAerospikeClient) NewUUIDKey(namespace string, key string) (*as.Key, error) { diff --git a/go.mod b/go.mod index 0d6ab50e..589ac7a8 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/prebid/prebid-cache go 1.16 require ( - github.com/aerospike/aerospike-client-go v4.0.0+incompatible + github.com/aerospike/aerospike-client-go/v6 v6.2.1 github.com/bitly/go-hostpool v0.1.0 // indirect github.com/didip/tollbooth/v6 v6.1.2 github.com/go-redis/redis/v8 v8.11.5 @@ -20,5 +20,6 @@ require ( github.com/spf13/viper v1.11.0 github.com/stretchr/testify v1.7.1 github.com/vrischmann/go-metrics-influxdb v0.1.1 - github.com/yuin/gopher-lua v0.0.0-20180630135845-46796da1b0b4 // indirect + github.com/yuin/gopher-lua v0.0.0-20220504180219-658193537a64 // indirect + golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 // indirect ) diff --git a/go.sum b/go.sum index 20322932..dbbdc476 100644 --- a/go.sum +++ b/go.sum @@ -56,8 +56,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/aerospike/aerospike-client-go v4.0.0+incompatible h1:YjjDU42LQBGozElzE87UvdOsIC8y6i8ntbqeCkHBanY= -github.com/aerospike/aerospike-client-go v4.0.0+incompatible/go.mod h1:zj8LBEnWBDOVEIJt8LvaRvDG5ARAoa5dBeHaB472NRc= +github.com/aerospike/aerospike-client-go/v6 v6.2.1 h1:GrLyJfWBokWw2AZoxnmaqAAQ3IdQqh5lD0M4gU5ytfM= +github.com/aerospike/aerospike-client-go/v6 v6.2.1/go.mod h1:Tv2Y0WY69sqxy94/XSNNkNjMyW6WKyhwZIztHVBxrhw= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= @@ -278,9 +278,10 @@ github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/X github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/k0kubun/pp v3.0.1+incompatible/go.mod h1:GWse8YhT0p8pT4ir3ZgBbfZild3tgzSScAn6HmfYukg= +github.com/k0kubun/pp/v3 v3.1.0/go.mod h1:vIrP5CF0n78pKHm2Ku6GVerpZBJvscg48WepUYEk2gw= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -334,6 +335,7 @@ github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042 github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE= github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs= @@ -355,8 +357,6 @@ github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSg github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_golang v1.5.1 h1:bdHYieyGlH+6OLEk2YQha8THib30KP0/yD0YH9m6xcA= -github.com/prometheus/client_golang v1.5.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.12.2 h1:51L9cDoUHVrXx4zWYlcLQIZ+d+VXHgqnYKkIuq4g/34= @@ -367,7 +367,6 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1: github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.9.1 h1:KOMtN28tlbam3/7ZKEYKHhKoJZYYj3gMH4uc62x7X7U= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= @@ -375,7 +374,6 @@ github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuI github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.8 h1:+fpWZdT24pJBiqJdAwYBjPSk+5YmQzYNPYzQsdzLkt8= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= @@ -392,7 +390,6 @@ github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb github.com/sagikazarmark/crypt v0.5.0/go.mod h1:l+nzl7KWh51rpzp2h7t4MZWyiEWdhNpOAnclKvg+mdA= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= @@ -428,8 +425,9 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/gopher-lua v0.0.0-20180630135845-46796da1b0b4 h1:f6CCNiTjQZ0uWK4jPwhwYB8QIGGfn0ssD9kVzRUUUpk= -github.com/yuin/gopher-lua v0.0.0-20180630135845-46796da1b0b4/go.mod h1:aEV29XrmTYFr3CiRxZeGHpkvbwq+prZduBqMaascyCU= +github.com/yuin/gopher-lua v0.0.0-20200816102855-ee81675732da/go.mod h1:E1AXubJBdNmFERAOucpDIxNzeGfLzg0mYh+UfMWdChA= +github.com/yuin/gopher-lua v0.0.0-20220504180219-658193537a64 h1:5mLPGnFdSsevFRFc9q3yYbBkB6tsm4aCwwQV/j1JQAQ= +github.com/yuin/gopher-lua v0.0.0-20220504180219-658193537a64/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw= go.etcd.io/etcd/api/v3 v3.5.2/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= go.etcd.io/etcd/client/pkg/v3 v3.5.2/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.2/go.mod h1:2D7ZejHVMIfog1221iLSYlQRzrtECw3kz4I4VAQm3qI= @@ -533,6 +531,7 @@ golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= @@ -569,13 +568,15 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=