diff --git a/cmd/protoc-gen-go-drpc/main.go b/cmd/protoc-gen-go-drpc/main.go index 4f3aebf..9cda156 100644 --- a/cmd/protoc-gen-go-drpc/main.go +++ b/cmd/protoc-gen-go-drpc/main.go @@ -11,6 +11,7 @@ import ( "strings" "google.golang.org/protobuf/compiler/protogen" + "google.golang.org/protobuf/types/pluginpb" ) type config struct { @@ -33,6 +34,7 @@ func main() { } generateFile(plugin, f, conf) } + plugin.SupportedFeatures = uint64(pluginpb.CodeGeneratorResponse_FEATURE_PROTO3_OPTIONAL) return nil }) } diff --git a/drpcdebug/log_disabled.go b/drpcdebug/log_disabled.go index 4fad3ab..0ff4bfd 100644 --- a/drpcdebug/log_disabled.go +++ b/drpcdebug/log_disabled.go @@ -1,6 +1,7 @@ // Copyright (C) 2019 Storj Labs, Inc. // See LICENSE for copying information. +//go:build !debug // +build !debug package drpcdebug diff --git a/drpcserver/README.md b/drpcserver/README.md index 7481a82..1d2f663 100644 --- a/drpcserver/README.md +++ b/drpcserver/README.md @@ -12,6 +12,11 @@ Package drpcserver allows one to execute registered rpcs. type Options struct { // Manager controls the options we pass to the managers this server creates. Manager drpcmanager.Options + + // Log is called when errors happen that can not be returned up, like + // temporary network errors when accepting connections, or errors + // handling individual clients. It is not called if nil. + Log func(error) } ``` diff --git a/drpcserver/server.go b/drpcserver/server.go index c7fb71d..ba055e1 100644 --- a/drpcserver/server.go +++ b/drpcserver/server.go @@ -6,6 +6,7 @@ package drpcserver import ( "context" "net" + "time" "github.com/zeebo/errs" @@ -20,6 +21,11 @@ import ( type Options struct { // Manager controls the options we pass to the managers this server creates. Manager drpcmanager.Options + + // Log is called when errors happen that can not be returned up, like + // temporary network errors when accepting connections, or errors + // handling individual clients. It is not called if nil. + Log func(error) } // Server is an implementation of drpc.Server to serve drpc connections. @@ -67,6 +73,7 @@ func (s *Server) ServeOne(ctx context.Context, tr drpc.Transport) (err error) { // on new connections. func (s *Server) Serve(ctx context.Context, lis net.Listener) (err error) { tracker := drpcctx.NewTracker(ctx) + defer tracker.Wait() defer tracker.Cancel() tracker.Run(func(ctx context.Context) { @@ -77,24 +84,35 @@ func (s *Server) Serve(ctx context.Context, lis net.Listener) (err error) { for { conn, err := lis.Accept() if err != nil { + if ctx.Err() != nil { + return nil + } + if isTemporary(err) { + if s.opts.Log != nil { + s.opts.Log(err) + } + + t := time.NewTimer(500 * time.Millisecond) + select { + case <-t.C: + case <-ctx.Done(): + t.Stop() + return nil + } + continue } - select { - case <-ctx.Done(): - tracker.Wait() - return nil - default: - tracker.Cancel() - tracker.Wait() - return errs.Wrap(err) - } + + return errs.Wrap(err) } // TODO(jeff): connection limits? tracker.Run(func(ctx context.Context) { - // TODO(jeff): handle this error? - _ = s.ServeOne(ctx, conn) + err := s.ServeOne(ctx, conn) + if err != nil && s.opts.Log != nil { + s.opts.Log(err) + } }) } } diff --git a/drpcserver/server_test.go b/drpcserver/server_test.go new file mode 100644 index 0000000..181c374 --- /dev/null +++ b/drpcserver/server_test.go @@ -0,0 +1,48 @@ +// Copyright (C) 2022 Storj Labs, Inc. +// See LICENSE for copying information. + +package drpcserver + +import ( + "context" + "net" + "testing" + + "github.com/zeebo/assert" + + "storj.io/drpc/drpcctx" +) + +func TestServerTemporarySleep(t *testing.T) { + ctx := drpcctx.NewTracker(context.Background()) + defer ctx.Wait() + defer ctx.Cancel() + + calls := 0 + l := listener(func() (net.Conn, error) { + calls++ + switch calls { + case 1: + case 2: + ctx.Cancel() + default: + panic("spinning on temporary error") + } + + return nil, new(temporaryError) + }) + + assert.NoError(t, New(nil).Serve(ctx, l)) +} + +type listener func() (net.Conn, error) + +func (l listener) Accept() (net.Conn, error) { return l() } +func (l listener) Close() error { return nil } +func (l listener) Addr() net.Addr { return nil } + +type temporaryError struct{} + +func (temporaryError) Error() string { return "temporary error" } +func (temporaryError) Timeout() bool { return false } +func (temporaryError) Temporary() bool { return true } diff --git a/drpcserver/util.go b/drpcserver/util.go index f437702..33a9f2c 100644 --- a/drpcserver/util.go +++ b/drpcserver/util.go @@ -1,6 +1,7 @@ // Copyright (C) 2021 Storj Labs, Inc. // See LICENSE for copying information. +//go:build !windows // +build !windows package drpcserver diff --git a/drpcstream/README.md b/drpcstream/README.md index 9ad0824..44809d0 100644 --- a/drpcstream/README.md +++ b/drpcstream/README.md @@ -21,6 +21,11 @@ type Options struct { // call RawFlush dynamically. ManualFlush bool + // MaximumBufferSize causes the Stream to drop any internal buffers that + // are larger than this amount to control maximum memory usage at the + // expense of more allocations. 0 is unlimited. + MaximumBufferSize int + // Internal contains options that are for internal use only. Internal drpcopts.Stream } diff --git a/drpcstream/stream.go b/drpcstream/stream.go index ce1aa4e..4f54734 100644 --- a/drpcstream/stream.go +++ b/drpcstream/stream.go @@ -31,6 +31,11 @@ type Options struct { // call RawFlush dynamically. ManualFlush bool + // MaximumBufferSize causes the Stream to drop any internal buffers that + // are larger than this amount to control maximum memory usage at the + // expense of more allocations. 0 is unlimited. + MaximumBufferSize int + // Internal contains options that are for internal use only. Internal drpcopts.Stream } @@ -385,11 +390,14 @@ func (s *Stream) MsgSend(msg drpc.Message, enc drpc.Encoding) (err error) { s.write.Lock() defer s.write.Unlock() - s.wbuf, err = drpcenc.MarshalAppend(msg, enc, s.wbuf[:0]) + wbuf, err := drpcenc.MarshalAppend(msg, enc, s.wbuf[:0]) if err != nil { return errs.Wrap(err) } - if err := s.rawWriteLocked(drpcwire.KindMessage, s.wbuf); err != nil { + if s.opts.MaximumBufferSize == 0 || len(wbuf) < s.opts.MaximumBufferSize { + s.wbuf = wbuf + } + if err := s.rawWriteLocked(drpcwire.KindMessage, wbuf); err != nil { return err } if !s.opts.ManualFlush { @@ -426,7 +434,7 @@ var ( // SendError terminates the stream and sends the error to the remote. It is a no-op if // the stream is already terminated. func (s *Stream) SendError(serr error) (err error) { - s.log("CALL", func() string { return fmt.Sprintf("SendError(%v)", err) }) + s.log("CALL", func() string { return fmt.Sprintf("SendError(%v)", serr) }) s.mu.Lock() if s.sigs.term.IsSet() { @@ -498,7 +506,7 @@ func (s *Stream) Cancel(err error) { s.mu.Lock() defer s.mu.Unlock() - if s.sigs.term.IsSet() { + if s.sigs.term.IsSet() && s.write.Unlocked() && s.read.Unlocked() { return } diff --git a/drpcstream/stream_test.go b/drpcstream/stream_test.go index c464051..a1117d3 100644 --- a/drpcstream/stream_test.go +++ b/drpcstream/stream_test.go @@ -169,3 +169,29 @@ func TestStream_ContextCancel(t *testing.T) { <-st.Context().Done() <-child.Done() } + +func TestStream_ConcurrentCloseCancel(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + pr, pw := io.Pipe() + defer func() { _ = pr.Close() }() + defer func() { _ = pw.Close() }() + + st := New(ctx, 0, drpcwire.NewWriter(pw, 0)) + + // start the Close call + errch := make(chan error, 1) + go func() { errch <- st.Close() }() + + // wait for the close to begin writing + _, err := pr.Read(make([]byte, 1)) + assert.NoError(t, err) + + // cancel the context and close the transport + st.Cancel(context.Canceled) + assert.NoError(t, pw.Close()) + + // we should always receive the canceled error + assert.That(t, errors.Is(<-errch, context.Canceled)) +} diff --git a/examples/drpc/go.mod b/examples/drpc/go.mod index 2fe1621..af6cef2 100644 --- a/examples/drpc/go.mod +++ b/examples/drpc/go.mod @@ -1,10 +1,12 @@ module storj.io/drpc/examples/drpc -go 1.16 +go 1.17 require ( - google.golang.org/protobuf v1.26.0 + google.golang.org/protobuf v1.27.1 storj.io/drpc v0.0.17 ) +require github.com/zeebo/errs v1.2.2 // indirect + replace storj.io/drpc => ../.. diff --git a/examples/drpc/go.sum b/examples/drpc/go.sum index c9b4de8..c129979 100644 --- a/examples/drpc/go.sum +++ b/examples/drpc/go.sum @@ -8,5 +8,5 @@ github.com/zeebo/errs v1.2.2/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtC golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= diff --git a/examples/drpc/pb/sesamestreet.pb.go b/examples/drpc/pb/sesamestreet.pb.go index adcd2f3..2c4a068 100644 --- a/examples/drpc/pb/sesamestreet.pb.go +++ b/examples/drpc/pb/sesamestreet.pb.go @@ -3,8 +3,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.16.0 +// protoc-gen-go v1.27.1 +// protoc v3.18.0 // source: sesamestreet.proto package pb diff --git a/examples/drpc_and_http/go.mod b/examples/drpc_and_http/go.mod index 16a285d..83b2ac0 100644 --- a/examples/drpc_and_http/go.mod +++ b/examples/drpc_and_http/go.mod @@ -1,11 +1,13 @@ module storj.io/drpc/examples/drpc_and_http -go 1.16 +go 1.17 require ( golang.org/x/sync v0.0.0-20210220032951-036812b2e83c - google.golang.org/protobuf v1.26.0 + google.golang.org/protobuf v1.27.1 storj.io/drpc v0.0.17 ) +require github.com/zeebo/errs v1.2.2 // indirect + replace storj.io/drpc => ../.. diff --git a/examples/drpc_and_http/go.sum b/examples/drpc_and_http/go.sum index 1b12aed..f57f13e 100644 --- a/examples/drpc_and_http/go.sum +++ b/examples/drpc_and_http/go.sum @@ -10,5 +10,5 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= diff --git a/examples/drpc_and_http/pb/sesamestreet.pb.go b/examples/drpc_and_http/pb/sesamestreet.pb.go index bf60fc0..67c40ae 100644 --- a/examples/drpc_and_http/pb/sesamestreet.pb.go +++ b/examples/drpc_and_http/pb/sesamestreet.pb.go @@ -3,8 +3,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.16.0 +// protoc-gen-go v1.27.1 +// protoc v3.18.0 // source: sesamestreet.proto package pb diff --git a/examples/grpc/go.mod b/examples/grpc/go.mod index f15dfa7..f51926c 100644 --- a/examples/grpc/go.mod +++ b/examples/grpc/go.mod @@ -1,8 +1,16 @@ module storj.io/drpc/examples/grpc -go 1.16 +go 1.17 require ( google.golang.org/grpc v1.36.0 google.golang.org/protobuf v1.26.0 ) + +require ( + github.com/golang/protobuf v1.5.0 // indirect + golang.org/x/net v0.0.0-20190311183353-d8887717615a // indirect + golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a // indirect + golang.org/x/text v0.3.0 // indirect + google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 // indirect +) diff --git a/examples/grpc/pb/sesamestreet.pb.go b/examples/grpc/pb/sesamestreet.pb.go index c5f3714..aa756e0 100644 --- a/examples/grpc/pb/sesamestreet.pb.go +++ b/examples/grpc/pb/sesamestreet.pb.go @@ -3,8 +3,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.16.0 +// protoc-gen-go v1.27.1 +// protoc v3.18.0 // source: sesamestreet.proto package pb diff --git a/examples/grpc_and_drpc/go.mod b/examples/grpc_and_drpc/go.mod index f94948d..c4a10ee 100644 --- a/examples/grpc_and_drpc/go.mod +++ b/examples/grpc_and_drpc/go.mod @@ -1,12 +1,21 @@ module storj.io/drpc/examples/grpc_and_drpc -go 1.16 +go 1.17 require ( golang.org/x/sync v0.0.0-20210220032951-036812b2e83c google.golang.org/grpc v1.36.0 - google.golang.org/protobuf v1.26.0 + google.golang.org/protobuf v1.27.1 storj.io/drpc v0.0.17 ) +require ( + github.com/golang/protobuf v1.5.0 // indirect + github.com/zeebo/errs v1.2.2 // indirect + golang.org/x/net v0.0.0-20190311183353-d8887717615a // indirect + golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a // indirect + golang.org/x/text v0.3.0 // indirect + google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 // indirect +) + replace storj.io/drpc => ../.. diff --git a/examples/grpc_and_drpc/go.sum b/examples/grpc_and_drpc/go.sum index 1cb3315..ae92b55 100644 --- a/examples/grpc_and_drpc/go.sum +++ b/examples/grpc_and_drpc/go.sum @@ -86,8 +86,8 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/examples/grpc_and_drpc/pb/sesamestreet.pb.go b/examples/grpc_and_drpc/pb/sesamestreet.pb.go index fbcead9..63488ed 100644 --- a/examples/grpc_and_drpc/pb/sesamestreet.pb.go +++ b/examples/grpc_and_drpc/pb/sesamestreet.pb.go @@ -3,8 +3,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.16.0 +// protoc-gen-go v1.27.1 +// protoc v3.18.0 // source: sesamestreet.proto package pb diff --git a/flake.lock b/flake.lock index 0659be9..c5c557a 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "flake-utils": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { @@ -17,11 +17,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1625323888, - "narHash": "sha256-7WYWbzvy4pCkk7tT88dQDplf8WtcGgguAMf4stLaep4=", + "lastModified": 1635797866, + "narHash": "sha256-e3vqt720wyb1PPNcGXej8wwip2/tgO1JsSGYK1NptSw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6ad9193ea2cd18743d5ba5ad7c147cc0d48f1a05", + "rev": "6751e7428f20328fed076acfcbb340d0f4aa0c07", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 8561a39..e8adb2b 100644 --- a/flake.nix +++ b/flake.nix @@ -21,7 +21,7 @@ ])); }; subPackages = [ "cmd/protoc-gen-go-drpc" ]; - vendorSha256 = "sha256-gE5b0cmq4lHEY1Ar0dCERbFLRvptNESZqija4Ruw9z0="; + vendorSha256 = "sha256-3kIFjZDi2qnEDXDY0ozvylxJlBePkK7IPFOVipsfLBU="; }; devShell = @@ -77,8 +77,8 @@ src = fetchFromGitHub { owner = "protocolbuffers"; repo = "protobuf-go"; - rev = "v1.26.0"; - sha256 = "sha256-n2LHI8DXQFFWhTPOFCegBgwi/0tFvRE226AZfRW8Bnc="; + rev = "v1.27.1"; + sha256 = "sha256-wkUvMsoJP38KMD5b3Fz65R1cnpeTtDcVqgE7tNlZXys="; }; doCheck = false; vendorSha256 = "sha256-pQpattmS9VmO3ZIQUFn66az8GSmB4IvYhTTCFn6SUmo="; @@ -128,7 +128,7 @@ buildInputs = [ defaultPackage - go + go_1_17 golangci-lint protobuf graphviz diff --git a/go.mod b/go.mod index fbbe837..ff0e1b6 100644 --- a/go.mod +++ b/go.mod @@ -1,9 +1,9 @@ module storj.io/drpc -go 1.13 +go 1.17 require ( github.com/zeebo/assert v1.3.0 github.com/zeebo/errs v1.2.2 - google.golang.org/protobuf v1.26.0 + google.golang.org/protobuf v1.27.1 ) diff --git a/go.sum b/go.sum index c9b4de8..c129979 100644 --- a/go.sum +++ b/go.sum @@ -8,5 +8,5 @@ github.com/zeebo/errs v1.2.2/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtC golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= diff --git a/internal/backcompat/go.mod b/internal/backcompat/go.mod index b885024..a4c31fd 100644 --- a/internal/backcompat/go.mod +++ b/internal/backcompat/go.mod @@ -1,6 +1,6 @@ module storj.io/drpc/internal/backcompat -go 1.16 +go 1.17 require ( github.com/zeebo/assert v1.3.0 diff --git a/internal/backcompat/go.sum b/internal/backcompat/go.sum index f79eb95..f38ad5b 100644 --- a/internal/backcompat/go.sum +++ b/internal/backcompat/go.sum @@ -6,4 +6,4 @@ github.com/zeebo/errs v1.2.2 h1:5NFypMTuSdoySVTqlNs1dEoU21QVamMQJxW/Fii5O7g= github.com/zeebo/errs v1.2.2/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= diff --git a/internal/backcompat/newservice/go.mod b/internal/backcompat/newservice/go.mod index 2600175..ad8bfad 100644 --- a/internal/backcompat/newservice/go.mod +++ b/internal/backcompat/newservice/go.mod @@ -1,9 +1,16 @@ module storj.io/drpc/internal/backcompat/newservice -go 1.16 +go 1.17 require storj.io/drpc/internal/backcompat v0.0.0-00010101000000-000000000000 +require ( + github.com/zeebo/errs v1.2.2 // indirect + google.golang.org/protobuf v1.27.1 // indirect + storj.io/drpc v0.0.0-00010101000000-000000000000 // indirect + storj.io/drpc/internal/backcompat/servicedefs v0.0.0-00010101000000-000000000000 // indirect +) + replace ( storj.io/drpc => ../../.. storj.io/drpc/internal/backcompat => ../ diff --git a/internal/backcompat/newservice/go.sum b/internal/backcompat/newservice/go.sum index c9b4de8..c129979 100644 --- a/internal/backcompat/newservice/go.sum +++ b/internal/backcompat/newservice/go.sum @@ -8,5 +8,5 @@ github.com/zeebo/errs v1.2.2/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtC golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= diff --git a/internal/backcompat/newservicedefs/go.mod b/internal/backcompat/newservicedefs/go.mod index aa2f445..18d89e6 100644 --- a/internal/backcompat/newservicedefs/go.mod +++ b/internal/backcompat/newservicedefs/go.mod @@ -1,10 +1,12 @@ module storj.io/drpc/internal/backcompat/newservicedefs -go 1.16 +go 1.17 require ( - google.golang.org/protobuf v1.26.0 + google.golang.org/protobuf v1.27.1 storj.io/drpc v0.0.0-00010101000000-000000000000 ) +require github.com/zeebo/errs v1.2.2 // indirect + replace storj.io/drpc => ../../.. diff --git a/internal/backcompat/newservicedefs/go.sum b/internal/backcompat/newservicedefs/go.sum index c9b4de8..c129979 100644 --- a/internal/backcompat/newservicedefs/go.sum +++ b/internal/backcompat/newservicedefs/go.sum @@ -8,5 +8,5 @@ github.com/zeebo/errs v1.2.2/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtC golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= diff --git a/internal/backcompat/newservicedefs/servicedefs.pb.go b/internal/backcompat/newservicedefs/servicedefs.pb.go index 12ced73..ec01117 100644 --- a/internal/backcompat/newservicedefs/servicedefs.pb.go +++ b/internal/backcompat/newservicedefs/servicedefs.pb.go @@ -3,8 +3,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.16.0 +// protoc-gen-go v1.27.1 +// protoc v3.18.0 // source: servicedefs.proto package servicedefs diff --git a/internal/backcompat/oldservice/go.mod b/internal/backcompat/oldservice/go.mod index e87c9b4..b0535fc 100644 --- a/internal/backcompat/oldservice/go.mod +++ b/internal/backcompat/oldservice/go.mod @@ -1,9 +1,17 @@ module storj.io/drpc/internal/backcompat/oldservice -go 1.16 +go 1.17 require storj.io/drpc/internal/backcompat v0.0.0-00010101000000-000000000000 +require ( + github.com/gogo/protobuf v1.3.2 // indirect + github.com/spacemonkeygo/monkit/v3 v3.0.7 // indirect + github.com/zeebo/errs v1.2.2 // indirect + storj.io/drpc v0.0.17 // indirect + storj.io/drpc/internal/backcompat/servicedefs v0.0.0-00010101000000-000000000000 // indirect +) + replace ( storj.io/drpc => storj.io/drpc v0.0.17 storj.io/drpc/internal/backcompat => ../ diff --git a/internal/backcompat/oldservicedefs/go.mod b/internal/backcompat/oldservicedefs/go.mod index bbe0c74..e6e7481 100644 --- a/internal/backcompat/oldservicedefs/go.mod +++ b/internal/backcompat/oldservicedefs/go.mod @@ -1,8 +1,10 @@ module storj.io/drpc/internal/backcompat/oldservicedefs -go 1.16 +go 1.17 require ( github.com/gogo/protobuf v1.3.2 storj.io/drpc v0.0.17 ) + +require github.com/zeebo/errs v1.2.2 // indirect diff --git a/internal/backcompat/servicedefs/go.mod b/internal/backcompat/servicedefs/go.mod index 2319660..d50707d 100644 --- a/internal/backcompat/servicedefs/go.mod +++ b/internal/backcompat/servicedefs/go.mod @@ -1,3 +1,3 @@ module storj.io/drpc/internal/backcompat/servicedefs -go 1.16 +go 1.17 diff --git a/internal/grpccompat/basic_test.go b/internal/grpccompat/basic_test.go new file mode 100644 index 0000000..fdcdea9 --- /dev/null +++ b/internal/grpccompat/basic_test.go @@ -0,0 +1,37 @@ +// Copyright (C) 2021 Storj Labs, Inc. +// See LICENSE for copying information. + +package grpccompat + +import ( + "context" + "testing" + + "github.com/zeebo/assert" + "google.golang.org/protobuf/proto" +) + +func TestBasic(t *testing.T) { + impl := &serviceImpl{ + Method1Fn: func(ctx context.Context, in *In) (*Out, error) { + return asOut(in), nil + }, + } + + testCompat(t, impl, func(t *testing.T, cli Client, ensure func(*Out, error)) { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + in := &In{ + In: 5, + Buf: []byte("foo"), + Opt: proto.Int64(8), + } + + out, err := cli.Method1(ctx, in) + assert.NoError(t, err) + assert.That(t, proto.Equal(out, asOut(in))) + + ensure(out, err) + }) +} diff --git a/internal/grpccompat/benchmark_test.go b/internal/grpccompat/benchmark_test.go index 7b6914e..dc77dd4 100644 --- a/internal/grpccompat/benchmark_test.go +++ b/internal/grpccompat/benchmark_test.go @@ -5,7 +5,7 @@ package grpccompat import ( "context" - errors "errors" + "errors" "io" "testing" @@ -16,10 +16,6 @@ import ( "storj.io/drpc/drpcstream" ) -func asOut(in *In) *Out { - return &Out{Out: in.In, Buf: in.Buf} -} - var benchmarkImpl = &serviceImpl{ Method1Fn: func(ctx context.Context, in *In) (*Out, error) { return asOut(in), nil diff --git a/internal/grpccompat/common_test.go b/internal/grpccompat/common_test.go index 5791640..b6df40c 100644 --- a/internal/grpccompat/common_test.go +++ b/internal/grpccompat/common_test.go @@ -226,6 +226,10 @@ func checkGoroutines(t *testing.T) { func in(n int64) *In { return &In{In: n} } func out(n int64) *Out { return &Out{Out: n} } +func asOut(in *In) *Out { + return &Out{Out: in.In, Buf: in.Buf, Opt: in.Opt} +} + func createDRPCConnectionWithOptions(server DRPCServiceServer, opts drpcmanager.Options) (DRPCServiceClient, func()) { ctx := drpcctx.NewTracker(context.Background()) c1, c2 := pipe() diff --git a/internal/grpccompat/go.mod b/internal/grpccompat/go.mod index e8a1b6c..ed77f08 100644 --- a/internal/grpccompat/go.mod +++ b/internal/grpccompat/go.mod @@ -1,18 +1,27 @@ module storj.io/drpc/internal/grpccompat -go 1.13 +go 1.17 require ( - github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect github.com/improbable-eng/grpc-web v0.14.0 - github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect - github.com/rs/cors v1.8.0 // indirect github.com/zeebo/assert v1.3.0 github.com/zeebo/errs v1.2.2 google.golang.org/grpc v1.36.0 - google.golang.org/protobuf v1.26.0 - nhooyr.io/websocket v1.8.7 // indirect + google.golang.org/protobuf v1.27.1 storj.io/drpc v0.0.0-00010101000000-000000000000 ) +require ( + github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect + github.com/golang/protobuf v1.5.0 // indirect + github.com/klauspost/compress v1.10.3 // indirect + github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect + github.com/rs/cors v1.8.0 // indirect + golang.org/x/net v0.0.0-20190311183353-d8887717615a // indirect + golang.org/x/sys v0.0.0-20200116001909-b77594299b42 // indirect + golang.org/x/text v0.3.2 // indirect + google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 // indirect + nhooyr.io/websocket v1.8.7 // indirect +) + replace storj.io/drpc => ../.. diff --git a/internal/grpccompat/go.sum b/internal/grpccompat/go.sum index c6e8996..1bc0ea8 100644 --- a/internal/grpccompat/go.sum +++ b/internal/grpccompat/go.sum @@ -17,7 +17,6 @@ github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do= github.com/gin-gonic/gin v1.6.3 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= -github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= @@ -148,9 +147,8 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= gopkg.in/go-playground/validator.v9 v9.29.1/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= diff --git a/internal/grpccompat/service.pb.go b/internal/grpccompat/service.pb.go index 7897246..2228ae0 100644 --- a/internal/grpccompat/service.pb.go +++ b/internal/grpccompat/service.pb.go @@ -3,8 +3,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.16.0 +// protoc-gen-go v1.27.1 +// protoc v3.18.0 // source: service.proto package grpccompat @@ -30,6 +30,7 @@ type In struct { In int64 `protobuf:"varint,1,opt,name=in,proto3" json:"in,omitempty"` Buf []byte `protobuf:"bytes,2,opt,name=buf,proto3" json:"buf,omitempty"` + Opt *int64 `protobuf:"varint,3,opt,name=opt,proto3,oneof" json:"opt,omitempty"` } func (x *In) Reset() { @@ -78,6 +79,13 @@ func (x *In) GetBuf() []byte { return nil } +func (x *In) GetOpt() int64 { + if x != nil && x.Opt != nil { + return *x.Opt + } + return 0 +} + type Out struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -85,6 +93,7 @@ type Out struct { Out int64 `protobuf:"varint,1,opt,name=out,proto3" json:"out,omitempty"` Buf []byte `protobuf:"bytes,2,opt,name=buf,proto3" json:"buf,omitempty"` + Opt *int64 `protobuf:"varint,3,opt,name=opt,proto3,oneof" json:"opt,omitempty"` } func (x *Out) Reset() { @@ -133,30 +142,41 @@ func (x *Out) GetBuf() []byte { return nil } +func (x *Out) GetOpt() int64 { + if x != nil && x.Opt != nil { + return *x.Opt + } + return 0 +} + var File_service_proto protoreflect.FileDescriptor var file_service_proto_rawDesc = []byte{ 0x0a, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x26, 0x0a, 0x02, 0x49, 0x6e, 0x12, 0x0e, + 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x45, 0x0a, 0x02, 0x49, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x75, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x62, 0x75, 0x66, - 0x22, 0x29, 0x0a, 0x03, 0x4f, 0x75, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x75, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6f, 0x75, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x75, 0x66, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x62, 0x75, 0x66, 0x32, 0xa9, 0x01, 0x0a, 0x07, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x07, 0x4d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x31, 0x12, 0x0b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x49, 0x6e, 0x1a, - 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x12, 0x26, 0x0a, - 0x07, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x32, 0x12, 0x0b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x49, 0x6e, 0x1a, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x4f, 0x75, 0x74, 0x28, 0x01, 0x12, 0x26, 0x0a, 0x07, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x33, + 0x12, 0x15, 0x0a, 0x03, 0x6f, 0x70, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, + 0x03, 0x6f, 0x70, 0x74, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6f, 0x70, 0x74, 0x22, + 0x48, 0x0a, 0x03, 0x4f, 0x75, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x03, 0x6f, 0x75, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x75, 0x66, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x62, 0x75, 0x66, 0x12, 0x15, 0x0a, 0x03, 0x6f, 0x70, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x03, 0x6f, 0x70, 0x74, 0x88, 0x01, + 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6f, 0x70, 0x74, 0x32, 0xa9, 0x01, 0x0a, 0x07, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x07, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x31, 0x12, 0x0b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x49, 0x6e, 0x1a, 0x0c, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x30, 0x01, 0x12, 0x28, 0x0a, - 0x07, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x34, 0x12, 0x0b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x49, 0x6e, 0x1a, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x4f, 0x75, 0x74, 0x28, 0x01, 0x30, 0x01, 0x42, 0x23, 0x5a, 0x21, 0x73, 0x74, 0x6f, 0x72, 0x6a, - 0x2e, 0x69, 0x6f, 0x2f, 0x64, 0x72, 0x70, 0x63, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x12, 0x26, 0x0a, 0x07, 0x4d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x32, 0x12, 0x0b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x49, 0x6e, 0x1a, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4f, 0x75, + 0x74, 0x28, 0x01, 0x12, 0x26, 0x0a, 0x07, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x33, 0x12, 0x0b, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x49, 0x6e, 0x1a, 0x0c, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x30, 0x01, 0x12, 0x28, 0x0a, 0x07, 0x4d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x34, 0x12, 0x0b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x49, 0x6e, 0x1a, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4f, 0x75, + 0x74, 0x28, 0x01, 0x30, 0x01, 0x42, 0x23, 0x5a, 0x21, 0x73, 0x74, 0x6f, 0x72, 0x6a, 0x2e, 0x69, + 0x6f, 0x2f, 0x64, 0x72, 0x70, 0x63, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, + 0x67, 0x72, 0x70, 0x63, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -223,6 +243,8 @@ func file_service_proto_init() { } } } + file_service_proto_msgTypes[0].OneofWrappers = []interface{}{} + file_service_proto_msgTypes[1].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/grpccompat/service.proto b/internal/grpccompat/service.proto index 1f4dd37..368b2f7 100644 --- a/internal/grpccompat/service.proto +++ b/internal/grpccompat/service.proto @@ -16,9 +16,11 @@ service Service { message In { int64 in = 1; bytes buf = 2; + optional int64 opt = 3; } message Out { int64 out = 1; bytes buf = 2; + optional int64 opt = 3; } diff --git a/internal/integration/customservice/service.pb.go b/internal/integration/customservice/service.pb.go index 62e8fc3..6ae6deb 100644 --- a/internal/integration/customservice/service.pb.go +++ b/internal/integration/customservice/service.pb.go @@ -3,8 +3,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.16.0 +// protoc-gen-go v1.27.1 +// protoc v3.18.0 // source: service.proto package service diff --git a/internal/integration/go.mod b/internal/integration/go.mod index 9fac6e1..8b0c8c5 100644 --- a/internal/integration/go.mod +++ b/internal/integration/go.mod @@ -1,12 +1,12 @@ module storj.io/drpc/internal/integration -go 1.13 +go 1.17 require ( github.com/gogo/protobuf v1.3.2 github.com/zeebo/assert v1.3.0 github.com/zeebo/errs v1.2.2 - google.golang.org/protobuf v1.26.0 + google.golang.org/protobuf v1.27.1 storj.io/drpc v0.0.0-00010101000000-000000000000 ) diff --git a/internal/integration/go.sum b/internal/integration/go.sum index 8e60d06..3584070 100644 --- a/internal/integration/go.sum +++ b/internal/integration/go.sum @@ -38,5 +38,5 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= diff --git a/internal/integration/service/service.pb.go b/internal/integration/service/service.pb.go index 62e8fc3..6ae6deb 100644 --- a/internal/integration/service/service.pb.go +++ b/internal/integration/service/service.pb.go @@ -3,8 +3,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.16.0 +// protoc-gen-go v1.27.1 +// protoc v3.18.0 // source: service.proto package service diff --git a/internal/twirpcompat/clientcompat.pb.go b/internal/twirpcompat/clientcompat.pb.go index 4fdfcc5..598b63f 100644 --- a/internal/twirpcompat/clientcompat.pb.go +++ b/internal/twirpcompat/clientcompat.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.16.0 +// protoc-gen-go v1.27.1 +// protoc v3.18.0 // source: clientcompat.proto package twirpcompat diff --git a/internal/twirpcompat/go.mod b/internal/twirpcompat/go.mod index 1e4647b..0a5cbb6 100644 --- a/internal/twirpcompat/go.mod +++ b/internal/twirpcompat/go.mod @@ -1,9 +1,8 @@ module storj.io/drpc/internal/twirpcompat -go 1.13 +go 1.17 require ( - github.com/pkg/errors v0.9.1 // indirect github.com/twitchtv/twirp v8.1.0+incompatible github.com/zeebo/assert v1.3.0 github.com/zeebo/hmux v0.3.1 @@ -11,4 +10,9 @@ require ( storj.io/drpc v0.0.0-00010101000000-000000000000 ) +require ( + github.com/pkg/errors v0.9.1 // indirect + github.com/zeebo/errs v1.2.2 // indirect +) + replace storj.io/drpc => ../.. diff --git a/internal/twirpcompat/go.sum b/internal/twirpcompat/go.sum index 605fb9f..01771ee 100644 --- a/internal/twirpcompat/go.sum +++ b/internal/twirpcompat/go.sum @@ -15,6 +15,5 @@ github.com/zeebo/hmux v0.3.1/go.mod h1:qHOtFf8FmwXOwAb8/Vq7VOBenZSTPGrduR7Qkwpiv golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=