From a8173988f94c32b59dea345a07f89199093e1a43 Mon Sep 17 00:00:00 2001 From: Valery Piashchynski Date: Mon, 9 Sep 2024 16:26:19 +0200 Subject: [PATCH 1/7] feature: headers in case of worker error Signed-off-by: Valery Piashchynski --- proxy/proxy.go | 23 +++++++++++++++++++++-- server.go | 2 +- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/proxy/proxy.go b/proxy/proxy.go index cef210b..71991f5 100644 --- a/proxy/proxy.go +++ b/proxy/proxy.go @@ -17,6 +17,7 @@ import ( "github.com/roadrunner-server/pool/pool/static_pool" "github.com/roadrunner-server/pool/worker" "go.opentelemetry.io/otel/propagation" + "go.uber.org/zap" "golang.org/x/net/context" spb "google.golang.org/genproto/googleapis/rpc/status" "google.golang.org/grpc" @@ -33,6 +34,7 @@ const ( peerAuthType string = ":peer.auth-type" delimiter string = "|:|" apiErr string = "error" + headers string = "headers" ) type Pool interface { @@ -65,6 +67,7 @@ type rpcContext struct { // Proxy manages GRPC/RoadRunner bridge. type Proxy struct { mu *sync.RWMutex + log *zap.Logger prop propagation.TextMapPropagator grpcPool Pool name string @@ -75,8 +78,9 @@ type Proxy struct { } // NewProxy creates a new service proxy object. -func NewProxy(name string, metadata string, grpcPool Pool, mu *sync.RWMutex, prop propagation.TextMapPropagator) *Proxy { +func NewProxy(name string, metadata string, log *zap.Logger, grpcPool Pool, mu *sync.RWMutex, prop propagation.TextMapPropagator) *Proxy { return &Proxy{ + log: log, mu: mu, prop: prop, grpcPool: grpcPool, @@ -192,6 +196,7 @@ func (p *Proxy) invoke(ctx context.Context, method string, in *codec.RawMessage) if err != nil { return nil, err } + ctx = metadata.NewIncomingContext(ctx, md) err = grpc.SetHeader(ctx, md) if err != nil { @@ -217,12 +222,26 @@ func (p *Proxy) responseMetadata(resp *payload.Payload) (metadata.MD, error) { if len(rpcMetadata) > 0 { md = metadata.New(rpcMetadata) + if len(md.Get(headers)) > 0 { + mdh := metadata.New(make(map[string]string)) + err = json.Unmarshal([]byte(md.Get(headers)[0]), &mdh) + if err != nil { + // we don't need to return this error, log it + p.log.Error("error unmarshalling headers", zap.Error(err)) + goto api + } + + // join with the main metadata + md = metadata.Join(md, mdh) + } + /* we have an error - actually, if code is OK, status.ErrorProto will be nil + actually if the code is OK, status.ErrorProto will be nil but, we use this only in case of PHP exception happened */ + api: if len(md.Get(apiErr)) > 0 { st := &spb.Status{} diff --git a/server.go b/server.go index baa71ad..d7a8424 100644 --- a/server.go +++ b/server.go @@ -62,7 +62,7 @@ func (p *Plugin) createGRPCserver(interceptors map[string]common.Interceptor) (* } for _, service := range services { - px := proxy.NewProxy(fmt.Sprintf("%s.%s", service.Package, service.Name), p.config.Proto[i], p.gPool, p.mu, p.prop) + px := proxy.NewProxy(fmt.Sprintf("%s.%s", service.Package, service.Name), p.config.Proto[i], p.log.Named(service.Name), p.gPool, p.mu, p.prop) for _, m := range service.Methods { px.RegisterMethod(m.Name) } From 06642032693c00d3922083c439be17b475300b63 Mon Sep 17 00:00:00 2001 From: Valery Piashchynski Date: Mon, 9 Sep 2024 16:41:29 +0200 Subject: [PATCH 2/7] chore: set headers Signed-off-by: Valery Piashchynski --- proxy/proxy.go | 1 + 1 file changed, 1 insertion(+) diff --git a/proxy/proxy.go b/proxy/proxy.go index 71991f5..a4e70fd 100644 --- a/proxy/proxy.go +++ b/proxy/proxy.go @@ -194,6 +194,7 @@ func (p *Proxy) invoke(ctx context.Context, method string, in *codec.RawMessage) md, err := p.responseMetadata(r) if err != nil { + _ = grpc.SetHeader(ctx, md) return nil, err } From 375ca4400e4e8ad30d93a5cc2b82cd17221ee0b6 Mon Sep 17 00:00:00 2001 From: Valery Piashchynski Date: Mon, 9 Sep 2024 17:01:57 +0200 Subject: [PATCH 3/7] chore: use new md Signed-off-by: Valery Piashchynski --- proxy/proxy.go | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/proxy/proxy.go b/proxy/proxy.go index a4e70fd..4dee2e0 100644 --- a/proxy/proxy.go +++ b/proxy/proxy.go @@ -221,10 +221,13 @@ func (p *Proxy) responseMetadata(resp *payload.Payload) (metadata.MD, error) { } if len(rpcMetadata) > 0 { + // new meta should be used + mdn := metadata.New(map[string]string{}) + // old meta should not be used in response md = metadata.New(rpcMetadata) if len(md.Get(headers)) > 0 { - mdh := metadata.New(make(map[string]string)) + mdh := make(map[string]any) err = json.Unmarshal([]byte(md.Get(headers)[0]), &mdh) if err != nil { // we don't need to return this error, log it @@ -232,8 +235,16 @@ func (p *Proxy) responseMetadata(resp *payload.Payload) (metadata.MD, error) { goto api } - // join with the main metadata - md = metadata.Join(md, mdh) + for k, v := range mdh { + switch tt := v.(type) { + case string: + mdn.Append(k, tt) + case int: + mdn.Append(k, strconv.Itoa(tt)) + default: + p.log.Warn("skipping header with unsupported type", zap.String("key", k), zap.Any("value", v)) + } + } } /* @@ -249,15 +260,15 @@ func (p *Proxy) responseMetadata(resp *payload.Payload) (metadata.MD, error) { // get an error data, err := base64.StdEncoding.DecodeString(md.Get(apiErr)[0]) if err != nil { - return nil, err + return mdn, err } err = proto.Unmarshal(data, st) if err != nil { - return nil, err + return mdn, err } - return md, status.ErrorProto(st) + return mdn, status.ErrorProto(st) } } From 096eb3df0ff7ab33fba09b6afad541390c901a3d Mon Sep 17 00:00:00 2001 From: Valery Piashchynski Date: Tue, 10 Sep 2024 12:00:14 +0200 Subject: [PATCH 4/7] chore: add trailers + headers handling logic Signed-off-by: Valery Piashchynski --- .golangci.yml | 3 -- go.mod | 2 +- go.sum | 4 +-- go.work.sum | 10 +++++++ proxy/proxy.go | 79 +++++++++++++++++++++++++++++++++----------------- tests/go.mod | 4 +-- tests/go.sum | 8 ++--- 7 files changed, 72 insertions(+), 38 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index f712f66..c5df077 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -34,15 +34,12 @@ linters: # All available linters list: 0 { - // new meta should be used - mdn := metadata.New(map[string]string{}) - // old meta should not be used in response - md = metadata.New(rpcMetadata) + // old meta should not be used in response in new API + md := metadata.New(rpcMetadata) + + // we assume that if there are no new headers and trailers, an old PHP-GRPC client is used + if len(md.Get(headers)) == 0 && len(md.Get(trailers)) == 0 { + // backward compatibility + _ = st.SetHeader(md) + goto parseErr + } + // New API headers if len(md.Get(headers)) > 0 { mdh := make(map[string]any) err = json.Unmarshal([]byte(md.Get(headers)[0]), &mdh) if err != nil { // we don't need to return this error, log it p.log.Error("error unmarshalling headers", zap.Error(err)) - goto api } for k, v := range mdh { switch tt := v.(type) { case string: - mdn.Append(k, tt) + _ = st.SetHeader(metadata.Pairs(k, tt)) + case int: + _ = st.SetHeader(metadata.Pairs(k, strconv.Itoa(tt))) + default: + p.log.Warn("skipping header with unsupported type", zap.String("key", k), zap.Any("value", v)) + } + } + } + + // New API trailers + if len(md.Get(trailers)) > 0 { + mdh := make(map[string]any) + err = json.Unmarshal([]byte(md.Get(trailers)[0]), &mdh) + if err != nil { + // we don't need to return this error, log it + p.log.Error("error unmarshalling trailers", zap.Error(err)) + } + + for k, v := range mdh { + switch tt := v.(type) { + case string: + _ = st.SetTrailer(metadata.Pairs(k, tt)) case int: - mdn.Append(k, strconv.Itoa(tt)) + _ = st.SetTrailer(metadata.Pairs(k, strconv.Itoa(tt))) default: p.log.Warn("skipping header with unsupported type", zap.String("key", k), zap.Any("value", v)) } @@ -253,26 +280,26 @@ func (p *Proxy) responseMetadata(resp *payload.Payload) (metadata.MD, error) { but, we use this only in case of PHP exception happened */ - api: + parseErr: if len(md.Get(apiErr)) > 0 { st := &spb.Status{} // get an error data, err := base64.StdEncoding.DecodeString(md.Get(apiErr)[0]) if err != nil { - return mdn, err + return err } err = proto.Unmarshal(data, st) if err != nil { - return mdn, err + return err } - return mdn, status.ErrorProto(st) + return status.ErrorProto(st) } } - return md, nil + return nil } // makePayload generates RoadRunner compatible payload based on GRPC message. @@ -350,7 +377,7 @@ func wrapError(err error) error { } if phpCode > 0 && phpCode < math.MaxUint32 { - code = codes.Code(phpCode) //nolint:gosec + code = codes.Code(phpCode) } st := status.New(code, chunks[1]).Proto() diff --git a/tests/go.mod b/tests/go.mod index a10f9ba..abafd58 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -18,7 +18,7 @@ require ( github.com/roadrunner-server/status/v5 v5.0.3 github.com/stretchr/testify v1.9.0 go.uber.org/zap v1.27.0 - google.golang.org/grpc v1.66.0 + google.golang.org/grpc v1.66.1 google.golang.org/protobuf v1.34.2 ) @@ -102,7 +102,7 @@ require ( go.temporal.io/sdk v1.29.0 // indirect go.temporal.io/sdk/contrib/opentelemetry v0.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e // indirect + golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect golang.org/x/net v0.29.0 // indirect golang.org/x/sync v0.8.0 // indirect golang.org/x/sys v0.25.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index 546c5bc..24b1b2f 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -241,8 +241,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e h1:I88y4caeGeuDQxgdoFPUq097j7kNfw6uvuiNxUBfcBk= -golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ= +golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= +golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -320,8 +320,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.66.0 h1:DibZuoBznOxbDQxRINckZcUvnCEvrW9pcWIE2yF9r1c= -google.golang.org/grpc v1.66.0/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/grpc v1.66.1 h1:hO5qAXR19+/Z44hmvIM4dQFMSYX9XcWsByfoxutBpAM= +google.golang.org/grpc v1.66.1/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 6a42200afd9119aa837cc37d9bb26659e5eab803 Mon Sep 17 00:00:00 2001 From: Valery Piashchynski Date: Tue, 10 Sep 2024 12:15:14 +0200 Subject: [PATCH 5/7] chore: update linters Signed-off-by: Valery Piashchynski --- .github/workflows/linters.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml index c91dbbb..eddba15 100644 --- a/.github/workflows/linters.yml +++ b/.github/workflows/linters.yml @@ -3,7 +3,7 @@ name: Linters on: [push, pull_request] jobs: - golangci-lint: + lint: name: Golang-CI (lint) runs-on: ubuntu-latest steps: @@ -18,6 +18,6 @@ jobs: - name: Run linter uses: golangci/golangci-lint-action@v6.1.0 # Action page: with: - version: v1.60 # without patch version + version: v1.61 # without patch version only-new-issues: false # show only new issues if it's a pull request args: --timeout=10m --build-tags=race From f786ce221eaeb2943b0b001ab1524835c4d9ff5c Mon Sep 17 00:00:00 2001 From: Valery Piashchynski Date: Tue, 10 Sep 2024 12:15:50 +0200 Subject: [PATCH 6/7] chore: update protoc_plugins go toolchain Signed-off-by: Valery Piashchynski --- protoc_plugins/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protoc_plugins/go.mod b/protoc_plugins/go.mod index 0973970..c383511 100644 --- a/protoc_plugins/go.mod +++ b/protoc_plugins/go.mod @@ -2,7 +2,7 @@ module github.com/roadrunner-server/grpc/protoc_plugins/v5 go 1.23 -toolchain go1.23.0 +toolchain go1.23.1 require ( github.com/stretchr/testify v1.9.0 From 50716a7d7f64cff71a3bbd7b44b16d43c8d2a7c0 Mon Sep 17 00:00:00 2001 From: Valery Piashchynski Date: Tue, 24 Sep 2024 15:25:21 +0200 Subject: [PATCH 7/7] chore: update deps Signed-off-by: Valery Piashchynski --- go.mod | 5 +++-- go.sum | 11 +++++------ tests/go.mod | 22 +++++++++++----------- tests/go.sum | 44 ++++++++++++++++++++++---------------------- 4 files changed, 41 insertions(+), 41 deletions(-) diff --git a/go.mod b/go.mod index 6414c26..acd5dbb 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ toolchain go1.23.1 require ( github.com/emicklei/proto v1.13.2 - github.com/prometheus/client_golang v1.20.3 + github.com/prometheus/client_golang v1.20.4 github.com/roadrunner-server/api/v4 v4.16.0 github.com/roadrunner-server/endure/v2 v2.6.1 github.com/roadrunner-server/errors v1.4.1 @@ -21,7 +21,7 @@ require ( go.uber.org/zap v1.27.0 golang.org/x/net v0.29.0 google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 - google.golang.org/grpc v1.66.2 + google.golang.org/grpc v1.67.0 google.golang.org/protobuf v1.34.2 ) @@ -34,6 +34,7 @@ require ( github.com/go-ole/go-ole v1.3.0 // indirect github.com/goccy/go-json v0.10.3 // indirect github.com/google/uuid v1.6.0 // indirect + github.com/klauspost/compress v1.17.10 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.1 // indirect diff --git a/go.sum b/go.sum index d0d13c6..16ee9d7 100644 --- a/go.sum +++ b/go.sum @@ -20,8 +20,7 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= -github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.17.10 h1:oXAz+Vh0PMUvJczoi+flxpnBEPxoER1IaAnU/NMPtT0= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -30,8 +29,8 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.20.3 h1:oPksm4K8B+Vt35tUhw6GbSNSgVlVSBH0qELP/7u83l4= -github.com/prometheus/client_golang v1.20.3/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.20.4 h1:Tgh3Yr67PaOv/uTqloMsCEdeuFTatm5zIq5+qNN23vI= +github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.59.1 h1:LXb1quJHWm1P6wq/U824uxYi4Sg0oGvNeUm1z5dJoX0= @@ -94,8 +93,8 @@ golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= -google.golang.org/grpc v1.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo= -google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/grpc v1.67.0 h1:IdH9y6PF5MPSdAntIcpjQ+tXO41pcQsfZV2RxtQgVcw= +google.golang.org/grpc v1.67.0/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tests/go.mod b/tests/go.mod index defc885..7cc5d58 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -5,20 +5,20 @@ go 1.23 toolchain go1.23.1 require ( - github.com/roadrunner-server/config/v5 v5.0.3 + github.com/roadrunner-server/config/v5 v5.0.4 github.com/roadrunner-server/endure/v2 v2.6.1 github.com/roadrunner-server/goridge/v3 v3.8.3 github.com/roadrunner-server/grpc/v5 v5.0.0 - github.com/roadrunner-server/logger/v5 v5.0.3 - github.com/roadrunner-server/metrics/v5 v5.0.3 - github.com/roadrunner-server/otel/v5 v5.0.2 - github.com/roadrunner-server/resetter/v5 v5.0.4 - github.com/roadrunner-server/rpc/v5 v5.0.3 - github.com/roadrunner-server/server/v5 v5.1.1 - github.com/roadrunner-server/status/v5 v5.0.3 + github.com/roadrunner-server/logger/v5 v5.0.4 + github.com/roadrunner-server/metrics/v5 v5.0.4 + github.com/roadrunner-server/otel/v5 v5.0.3 + github.com/roadrunner-server/resetter/v5 v5.0.5 + github.com/roadrunner-server/rpc/v5 v5.0.4 + github.com/roadrunner-server/server/v5 v5.1.2 + github.com/roadrunner-server/status/v5 v5.0.4 github.com/stretchr/testify v1.9.0 go.uber.org/zap v1.27.0 - google.golang.org/grpc v1.66.2 + google.golang.org/grpc v1.67.0 google.golang.org/protobuf v1.34.2 ) @@ -48,7 +48,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/joho/godotenv v1.5.1 // indirect - github.com/klauspost/compress v1.17.9 // indirect + github.com/klauspost/compress v1.17.10 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect @@ -59,7 +59,7 @@ require ( github.com/pborman/uuid v1.2.1 // indirect github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.20.3 // indirect + github.com/prometheus/client_golang v1.20.4 // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.59.1 // indirect github.com/prometheus/procfs v0.15.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index 62e328c..657e9a7 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -70,8 +70,8 @@ github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= 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/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= -github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.17.10 h1:oXAz+Vh0PMUvJczoi+flxpnBEPxoER1IaAnU/NMPtT0= +github.com/klauspost/compress v1.17.10/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -106,8 +106,8 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.20.3 h1:oPksm4K8B+Vt35tUhw6GbSNSgVlVSBH0qELP/7u83l4= -github.com/prometheus/client_golang v1.20.3/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.20.4 h1:Tgh3Yr67PaOv/uTqloMsCEdeuFTatm5zIq5+qNN23vI= +github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= @@ -117,8 +117,8 @@ github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0leargg github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/roadrunner-server/api/v4 v4.16.0 h1:UaaKWHelc7bZC4cRdTD802gyIrJFRFTPEk7Bt3U01qI= github.com/roadrunner-server/api/v4 v4.16.0/go.mod h1:qTC9Fy+zF4jtoPdZEceGqtrj+8eUB2IsLm51JxKxbV4= -github.com/roadrunner-server/config/v5 v5.0.3 h1:irX12j0kPEU2PoYP2S3mxS59ZZTHjJOAWQxPCT/3x90= -github.com/roadrunner-server/config/v5 v5.0.3/go.mod h1:4pnX0M6hDg/8AiBztaBqLJc51nYp5pxyui4vRhojf2c= +github.com/roadrunner-server/config/v5 v5.0.4 h1:N1fLPvtDSzaFoJojWaSqtXQs/XsOaxyEEgZuM1ru10Q= +github.com/roadrunner-server/config/v5 v5.0.4/go.mod h1:F8vAsLt/yjY/gkBaxImwgQqjMyk3WcKtPwLL33hitQ0= github.com/roadrunner-server/context v1.0.1 h1:6onQ5L1ZsjZFNkPyY7Kd0Lx3+aRTfbbh4OryfrRuknU= github.com/roadrunner-server/context v1.0.1/go.mod h1:rgQ4mT7HrDZG+KhU6trFBGPHHpjTOxHGRk/sPKLVwrg= github.com/roadrunner-server/endure/v2 v2.6.1 h1:vx+3ayn8HXnyeCcjKWwe+DfPrwL5sOQobugzCId4F7k= @@ -129,22 +129,22 @@ github.com/roadrunner-server/events v1.0.1 h1:waCkKhxhzdK3VcI1xG22l+h+0J+Nfdpxjh github.com/roadrunner-server/events v1.0.1/go.mod h1:WZRqoEVaFm209t52EuoT7ISUtvX6BrCi6bI/7pjkVC0= github.com/roadrunner-server/goridge/v3 v3.8.3 h1:XmjrOFnI6ZbQTPaP39DEk8KwLUNTgjluK3pcZaW6ixQ= github.com/roadrunner-server/goridge/v3 v3.8.3/go.mod h1:4TZU8zgkKIZCsH51qwGMpvyXCT59u/8z6q8sCe4ZGAQ= -github.com/roadrunner-server/logger/v5 v5.0.3 h1:uJF9/3KEYAvf+AAavbTMfW1kpOdnTybOlTLmOL7vgwo= -github.com/roadrunner-server/logger/v5 v5.0.3/go.mod h1:w079LabG2e17ba9bjdRGVziS7/kww0/5tjvplfMIUs0= -github.com/roadrunner-server/metrics/v5 v5.0.3 h1:JUUJxh6i+bE8phP0fKl4cskW0LAoIxMwORlefZwbeYY= -github.com/roadrunner-server/metrics/v5 v5.0.3/go.mod h1:bORftcilkV7H2Na/xVsTL12E7OA9cWLZqvsjJ9NvZPQ= -github.com/roadrunner-server/otel/v5 v5.0.2 h1:tZI+P35oi1qJBCe6ZhsSylWnwk80x5bUQRUoH5WIQOo= -github.com/roadrunner-server/otel/v5 v5.0.2/go.mod h1:jl/2LJmy5y2xGjXFrUXjZoA4D5xiXTrpScU++QvcDs0= +github.com/roadrunner-server/logger/v5 v5.0.4 h1:DiydGsyhiqLRR8HYaT8jarzdw1LS+WiJb0W684zeaz8= +github.com/roadrunner-server/logger/v5 v5.0.4/go.mod h1:ygRLH1siEFgSWg/8u+8WXCHiReSA9hJDZFHyWurt/hY= +github.com/roadrunner-server/metrics/v5 v5.0.4 h1:1Xo/bhKwTfrAd9fy9v3mXrVvrZhO2YDTS8RfEIdaBcw= +github.com/roadrunner-server/metrics/v5 v5.0.4/go.mod h1:LKPzS9fbcToQ2Xe3qA7+5KVPwALdwHRBqxaJaFdhYy4= +github.com/roadrunner-server/otel/v5 v5.0.3 h1:ECyCcy69klGYLuka9EFBJRVmihwbtkiN65K3r8mAaBY= +github.com/roadrunner-server/otel/v5 v5.0.3/go.mod h1:MOFhnGDvjdErU9yN7wbfHwlnpNvILFwi10ABicP1El8= github.com/roadrunner-server/pool v1.0.2 h1:wMg6w7msbzB3icUz4uviOSLPaCE+qK02sMz/0pVkeo0= github.com/roadrunner-server/pool v1.0.2/go.mod h1:cBFTlC5HfNs5v6Zo3jO6bUoByK8eJVnrxMP+qf9cfMQ= -github.com/roadrunner-server/resetter/v5 v5.0.4 h1:Qm/fGUti3mTpwTZNIJ8o+f5w64hDcb0r98r3tZ4bUQI= -github.com/roadrunner-server/resetter/v5 v5.0.4/go.mod h1:RyCxrSwAn8a7jy33az0/ZSokUdKJgRUZnsrjVRoN1Aw= -github.com/roadrunner-server/rpc/v5 v5.0.3 h1:v2PVyVUy97lHLhBCeXDtA1h2aGYCIjC3+pQTGm/A96o= -github.com/roadrunner-server/rpc/v5 v5.0.3/go.mod h1:keTMwv4YMdyuLOdxGgdAYjbeCyloHxmpTuXN9aoftLg= -github.com/roadrunner-server/server/v5 v5.1.1 h1:U+LJfOtutteITDC57nZNspWcj3tOYHNwkBi/VvQbcuw= -github.com/roadrunner-server/server/v5 v5.1.1/go.mod h1:eQpY7QY4zD7SNrrMU1mbPyxO+mwJLr0OqEslCvJAU6U= -github.com/roadrunner-server/status/v5 v5.0.3 h1:MLjvyEDG0QV85K9m97sNfGDcVYItC2/AQCd4S4/Q7c4= -github.com/roadrunner-server/status/v5 v5.0.3/go.mod h1:tDmpwWCFa0ylRza8OFztUasGzQOwaksDu6TxdPjVGAg= +github.com/roadrunner-server/resetter/v5 v5.0.5 h1:Wn3gMQ7xUqMUfWo2ChYnzy3R7RbHhUyCwE3pBfeWPQI= +github.com/roadrunner-server/resetter/v5 v5.0.5/go.mod h1:qg10whKx9shnbFC4fLzzs7axFJ4urMCQMKdxT1lP3w8= +github.com/roadrunner-server/rpc/v5 v5.0.4 h1:QZW42Lunhjx5sDDf7BhyAdPQFyR9OCeBKdZp/2gMiQQ= +github.com/roadrunner-server/rpc/v5 v5.0.4/go.mod h1:kLatMg8eGwLMlXFL+P3CWm3+r/4KsK9qcJokE1ACamE= +github.com/roadrunner-server/server/v5 v5.1.2 h1:Y5ufczlyRM5FxcAatSpuE+TN432Vxxa3P4BZwfd7W38= +github.com/roadrunner-server/server/v5 v5.1.2/go.mod h1:5Gfj2G3xKmhBg0Wi7N75LBzvq7ubI//e/4vqbJl86kc= +github.com/roadrunner-server/status/v5 v5.0.4 h1:kobIkbCMQUJKcvS4AWlXnIvWEROEUlC9m3U9qkQRixI= +github.com/roadrunner-server/status/v5 v5.0.4/go.mod h1:CLbR7vkRrIWQjxckMiVUC7nAlw94QJOCiJoZrn/A2lw= github.com/roadrunner-server/tcplisten v1.5.1 h1:CESLjVtnL0LEVaazzwEKUyQx84IcAgOQkdomA2+YHnY= github.com/roadrunner-server/tcplisten v1.5.1/go.mod h1:OrIW/gDTitYAQaDOtmyweYfXQGJ23J+wji0SIjk16Q0= github.com/robfig/cron v1.2.0 h1:ZjScXvvxeQ63Dbyxy76Fj3AT3Ut0aKsyd2/tl3DTMuQ= @@ -320,8 +320,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo= -google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/grpc v1.67.0 h1:IdH9y6PF5MPSdAntIcpjQ+tXO41pcQsfZV2RxtQgVcw= +google.golang.org/grpc v1.67.0/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=