Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update grpc-go to v1.33.0 #12597

Closed
wants to merge 14 commits into from
Closed

Update grpc-go to v1.33.0 #12597

wants to merge 14 commits into from

Conversation

scDisorder
Copy link

if im done it right and I can be more accessible than #12398

@scDisorder scDisorder changed the title Update grpc go Update grpc-go to v1.34.0 Jan 4, 2021
client/v3/go.mod Outdated Show resolved Hide resolved
@ptabor
Copy link
Contributor

ptabor commented Jan 5, 2021

Thank you for working on this. I tried to test it locally, and spotted that:

The code still depends on the naming package:
% ./scripts/fix.sh

...
stderr: go: finding module for package google.golang.org/grpc/naming
stderr: go.etcd.io/etcd/tests/v3/integration/clientv3 tested by
stderr: go.etcd.io/etcd/tests/v3/integration/clientv3.test imports
stderr: google.golang.org/grpc/naming: module google.golang.org/grpc@latest found (v1.34.0), but does not contain package google.golang.org/grpc/naming
FAIL: (code:1):
  % (cd tests && 'go' 'mod' 'tidy')

This is blocking integration tests run, that allows to take a look whether the solution works e2e (so probably hides problems with protobuf 1.4.4):

% PASSES="fmt unit integration" ./test

@ptabor
Copy link
Contributor

ptabor commented Jan 5, 2021

After (temporarily) removing the tests above I got:

% PASSES="fmt unit integration" ./test
FAIL: inconsistent versions for depencency: github.com/golang/protobuf
  - github.com/golang/protobuf@v1.3.5 from: go.etcd.io/etcd/api/v3
  - github.com/golang/protobuf@v1.3.5 from: go.etcd.io/etcd/raft/v3
  - github.com/golang/protobuf@v1.4.3 from: go.etcd.io/etcd/server/v3
  - github.com/golang/protobuf@v1.4.3 from: go.etcd.io/etcd/tests/v3
FAIL: inconsistent versions for depencency: google.golang.org/genproto
  - google.golang.org/genproto@v0.0.0-20200513103714-09dca8ec2884 from: go.etcd.io/etcd/api/v3
  - google.golang.org/genproto@v0.0.0-20201214200347-8c77b98c765d from: go.etcd.io/etcd/server/v3
FAIL: inconsistent versions for depencency: google.golang.org/grpc
  - google.golang.org/grpc@v1.29.1 from: go.etcd.io/etcd/api/v3
  - google.golang.org/grpc@v1.29.1 from: go.etcd.io/etcd/pkg/v3
  - google.golang.org/grpc@v1.34.0 from: go.etcd.io/etcd/client/v3
  - google.golang.org/grpc@v1.34.0 from: go.etcd.io/etcd/etcdctl/v3
  - google.golang.org/grpc@v1.34.0 from: go.etcd.io/etcd/server/v3
  - google.golang.org/grpc@v1.34.0 from: go.etcd.io/etcd/tests/v3
  - google.golang.org/grpc@v1.34.0 from: go.etcd.io/etcd/v3
FAIL: inconsistent dependencies
FAIL: 'dep' failed at Tue 05 Jan 2021 12:50:24 PM CET

Please let me know when the tests pass or you need some help.

@scDisorder
Copy link
Author

gimme a moment

@scDisorder
Copy link
Author

scDisorder commented Jan 5, 2021

so i have met an issue on ./scripts/fix.sh:

generating bill-of-materials.json
% (cd tools/mod && 'gobin' '-p' '-m' '--mod=readonly' 'github.com/coreos/license-bill-of-materials')
% '/Users/disorder/go/src/go.etcd.io/etcd-io/etcd/tools/mod/.gobincache/github.com/coreos/license-bill-of-materials/@v/v0.0.0-20190913234955-13baff47494e/license-bill-of-materials' '--override-file' './bill-of-materials.override.json' 'go.etcd.io/etcd/api/v3/...' 'go.etcd.io/etcd/pkg/v3/...' 'go.etcd.io/etcd/raft/v3/...' 'go.etcd.io/etcd/client/v2/...' 'go.etcd.io/etcd/client/v3/...' 'go.etcd.io/etcd/server/v3/...' 'go.etcd.io/etcd/etcdctl/v3/...' 'go.etcd.io/etcd/tests/v3/...' 'go.etcd.io/etcd/v3/...'
bom refreshed
Fixing whitespaces in the bash scripts
find ./ -name '*.sh' -print0 | xargs -0 sed --follow-symlinks -i 's|\t|  |g'
sed: illegal option -- -
usage: sed script [-Ealnru] [-i extension] [file ...]
	sed [-Ealnu] [-i extension] [-e script] ... [-f script_file] ... [file ...]

which also ruins make test i think

% (cd tests && 'env' 'go' 'test' '-short' '-timeout=3m' '-cpu=4' '--race' './...')
ok  	go.etcd.io/etcd/tests/v3/e2e	0.624s
ok  	go.etcd.io/etcd/tests/v3/functional/agent	0.149s
?   	go.etcd.io/etcd/tests/v3/functional/cmd/etcd-agent	[no test files]
?   	go.etcd.io/etcd/tests/v3/functional/cmd/etcd-proxy	[no test files]
?   	go.etcd.io/etcd/tests/v3/functional/cmd/etcd-runner	[no test files]
?   	go.etcd.io/etcd/tests/v3/functional/cmd/etcd-tester	[no test files]
ok  	go.etcd.io/etcd/tests/v3/functional/rpcpb	0.166s
?   	go.etcd.io/etcd/tests/v3/functional/runner	[no test files]
ok  	go.etcd.io/etcd/tests/v3/functional/tester	0.178s
--- FAIL: TestSnapshotAndRestartMember (8.63s)
    member_test.go:103: #118: create on unix://127.0.0.1:2100278932 error: dial unix 127.0.0.1:2100278932: socket: too many open files
{"level":"info","ts":"2021-01-05T17:08:12.140+0300","caller":"embed/etcd.go:113","msg":"configuring peer listeners","listen-peer-urls":["http://localhost:2380"]}
{"level":"info","ts":"2021-01-05T17:08:12.143+0300","caller":"embed/etcd.go:121","msg":"configuring client listeners","listen-client-urls":["http://localhost:2379"]}
{"level":"info","ts":"2021-01-05T17:08:12.143+0300","caller":"embed/etcd.go:268","msg":"starting an etcd server","etcd-version":"3.5.0-pre","git-sha":"Not provided (use ./build instead of go build)","go-version":"go1.15.6","go-os":"darwin","go-arch":"amd64","max-cpu-set":4,"max-cpu-available":16,"member-initialized":false,"name":"default","data-dir":"/var/folders/77/tvjc55cj31l7v8fpz2qk6rcm0000gn/T/etcd-805961113","wal-dir":"","wal-dir-dedicated":"","member-dir":"/var/folders/77/tvjc55cj31l7v8fpz2qk6rcm0000gn/T/etcd-805961113/member","force-new-cluster":false,"heartbeat-interval":"100ms","election-timeout":"1s","initial-election-tick-advance":true,"snapshot-count":100000,"snapshot-catchup-entries":5000,"initial-advertise-peer-urls":["http://localhost:2380"],"listen-peer-urls":["http://localhost:2380"],"advertise-client-urls":["http://localhost:2379"],"listen-client-urls":["http://localhost:2379"],"listen-metrics-urls":[],"cors":["*"],"host-whitelist":["*"],"initial-cluster":"default=http://localhost:2380","initial-cluster-state":"new","initial-cluster-token":"etcd-cluster","quota-size-bytes":2147483648,"pre-vote":false,"initial-corrupt-check":false,"corrupt-check-time-interval":"0s","auto-compaction-mode":"","auto-compaction-retention":"0s","auto-compaction-interval":"0s","discovery-url":"","discovery-proxy":"","downgrade-check-interval":"5s"}
{"level":"info","ts":"2021-01-05T17:08:12.168+0300","caller":"etcdserver/backend.go:78","msg":"opened backend db","path":"/var/folders/77/tvjc55cj31l7v8fpz2qk6rcm0000gn/T/etcd-805961113/member/snap/db","took":"24.195392ms"}
{"level":"info","ts":"2021-01-05T17:08:12.238+0300","caller":"etcdserver/raft.go:447","msg":"starting local member","local-member-id":"8e9e05c52164694d","cluster-id":"cdf818194e3a8c32"}
{"level":"info","ts":"2021-01-05T17:08:12.240+0300","caller":"raft/raft.go:1528","msg":"8e9e05c52164694d switched to configuration voters=()"}
{"level":"info","ts":"2021-01-05T17:08:12.240+0300","caller":"raft/raft.go:701","msg":"8e9e05c52164694d became follower at term 0"}
{"level":"info","ts":"2021-01-05T17:08:12.240+0300","caller":"raft/raft.go:383","msg":"newRaft 8e9e05c52164694d [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]"}
{"level":"info","ts":"2021-01-05T17:08:12.240+0300","caller":"raft/raft.go:701","msg":"8e9e05c52164694d became follower at term 1"}
make: *** [test] Error 1

as well PASSES="fmt unit integration" ./test ruins with:

'mod_tidy' started at Tue Jan  5 17:56:29 MSK 2021
mktemp: illegal option -- -
usage: mktemp [-d] [-q] [-t prefix] [-u] template ...
       mktemp [-d] [-q] [-u] -t prefix 
% (cd api && 'cp' './go.mod' './go.sum' '')
stderr: cp: ./go.mod and ./go.mod are identical (not copied).
stderr: cp: ./go.sum and ./go.sum are identical (not copied).
FAIL: (code:1):
  % (cd api && 'cp' './go.mod' './go.sum' '')
FAIL: 'mod_tidy' failed at Tue Jan  5 17:56:29 MSK 2021

for now.

looking for an issue now, but ill be glad for ideas

is there a need for me to set up some special environments before running tests?
i'm running it on macos big sur

@scDisorder scDisorder changed the title Update grpc-go to v1.34.0 Update grpc-go to v1.33.0 Jan 5, 2021
@scDisorder scDisorder marked this pull request as draft January 5, 2021 15:45
@ptabor
Copy link
Contributor

ptabor commented Jan 5, 2021

Oh... I don't have BSD / Osx testing environment, so don't see these problems.

OsX sed does not support --follow-symlinks settings.
This doc points on some workarounds:
https://www.cyberciti.biz/faq/howto-prevent-sed-i-from-destroying-symlinks-on-linux-unix/

mktemp seems also like a difference between GNU and BSD. I will try to borrow a Mac and fix these.

@scDisorder
Copy link
Author

scDisorder commented Jan 6, 2021

am i getting it right that i just need to go through all the .sh files and remove double spaces?
probably i can write something like if uname == Darwin then call loop alike something

edited:
ah, got ya, i'll be ready then, but would try something

@ptabor
Copy link
Contributor

ptabor commented Jan 6, 2021 via email

@scDisorder
Copy link
Author

scDisorder commented Jan 6, 2021

i get it work fine by brew install gnu-sed and adding this for a moment:

if [ $(uname) == "Darwin" ]
  then
    find ./ -name '*.sh' -print0 | xargs -0 gsed --follow-symlinks -i 's|\t|  |g'
  else
    find ./ -name '*.sh' -print0 | xargs -0 sed --follow-symlinks -i 's|\t|  |g'
  fi

gsed can be linked and used as sed btw

also fixed mktemp command in test.sh like that:
tmpModDir=$(mktemp -d --suffix "etcd-mod" 2>/dev/null || mktemp -d -t 'tmpModDir')
looks like --suffix flag cannot be used on mac too

@scDisorder
Copy link
Author

i didnt commited but i used

SED=sed
if [ $(uname) == "Darwin" ]
  then
    SED=gsed
fi

and replaced all sed usage with $SED, but it seems as a crutch, so everything is fine except mktemp which conflicts with --suffix flag and requires -t flag, but can be fixed as i mentioned above
now i have met panic on test

raft2021/01/06 13:59:27 INFO: 1 became leader at term 1
raft2021/01/06 13:59:27 INFO: raft.node: 1 elected leader 1 at term 1
panic: field raftpb.Message.type has invalid type: got raftpb.MessageType, want pointer

goroutine 10 [running]:
google.golang.org/protobuf/internal/impl.fieldInfoForScalar(0x1bdf160, 0xc00020aa80, 0x19c7540, 0x4, 0x0, 0x0, 0x1bdf280, 0x19e78a0, 0x19c7546, 0x45, ...)
	/Users/disorder/go/pkg/mod/google.golang.org/protobuf@v1.23.0/internal/impl/message_reflect_field.go:228 +0xa85
google.golang.org/protobuf/internal/impl.(*MessageInfo).makeKnownFieldsFunc(0xc000160a00, 0x180, 0xffffffffffffffff, 0x168, 0xffffffffffffffff, 0xc000210b70, 0xc000210ba0, 0xc000210bd0, 0xc000210c00)
	/Users/disorder/go/pkg/mod/google.golang.org/protobuf@v1.23.0/internal/impl/message_reflect.go:67 +0xcc5
google.golang.org/protobuf/internal/impl.(*MessageInfo).makeReflectFuncs(0xc000160a00, 0x1bdf280, 0x1a657a0, 0x180, 0xffffffffffffffff, 0x168, 0xffffffffffffffff, 0xc000210b70, 0xc000210ba0, 0xc000210bd0, ...)
	/Users/disorder/go/pkg/mod/google.golang.org/protobuf@v1.23.0/internal/impl/message_reflect.go:36 +0xca
google.golang.org/protobuf/internal/impl.(*MessageInfo).initOnce(0xc000160a00)
	/Users/disorder/go/pkg/mod/google.golang.org/protobuf@v1.23.0/internal/impl/message.go:90 +0x235
google.golang.org/protobuf/internal/impl.(*MessageInfo).init(0xc000160a00)
	/Users/disorder/go/pkg/mod/google.golang.org/protobuf@v1.23.0/internal/impl/message.go:72 +0x65
google.golang.org/protobuf/internal/impl.(*messageReflectWrapper).Has(0xc0001dd200, 0x1bdf160, 0xc00020aa80, 0xc00020aa80)
	/Users/disorder/go/pkg/mod/google.golang.org/protobuf@v1.23.0/internal/impl/message_reflect_gen.go:185 +0x5a
github.com/golang/protobuf/proto.(*textWriter).writeMessage(0xc0002108d0, 0x1bdd000, 0xc0001dd200, 0x0, 0x0)
	/Users/disorder/go/pkg/mod/github.com/golang/protobuf@v1.4.2/proto/text_encode.go:278 +0xb62
github.com/golang/protobuf/proto.(*TextMarshaler).marshal(0x1f7179e, 0x1bd2320, 0xc00020dba0, 0xc000308cf0, 0x2c, 0x0, 0x0, 0x2c)
	/Users/disorder/go/pkg/mod/github.com/golang/protobuf@v1.4.2/proto/text_encode.go:86 +0x2d6
github.com/golang/protobuf/proto.(*TextMarshaler).Text(...)
	/Users/disorder/go/pkg/mod/github.com/golang/protobuf@v1.4.2/proto/text_encode.go:44
github.com/golang/protobuf/proto.CompactTextString(...)
	/Users/disorder/go/pkg/mod/github.com/golang/protobuf@v1.4.2/proto/text_encode.go:106
go.etcd.io/etcd/raft/v3/raftpb.(*Message).String(...)
	/Users/disorder/go/src/go.etcd.io/etcd-io/etcd/raft/raftpb/raft.pb.go:409
go.etcd.io/etcd/raft/v3.TestNodeProposeWaitDropped.func1(0xc000290000, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0xc0002a6730, 0x1, 0x1, ...)
	/Users/disorder/go/src/go.etcd.io/etcd-io/etcd/raft/node_test.go:462 +0x43c
go.etcd.io/etcd/raft/v3.(*raft).Step(0xc000290000, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0xc0002a6730, 0x1, 0x1, ...)
	/Users/disorder/go/src/go.etcd.io/etcd-io/etcd/raft/raft.go:990 +0xfd8
go.etcd.io/etcd/raft/v3.(*node).run(0xc0003ea5a0)
	/Users/disorder/go/src/go.etcd.io/etcd-io/etcd/raft/node.go:346 +0x1158
created by go.etcd.io/etcd/raft/v3.TestNodeProposeWaitDropped
	/Users/disorder/go/src/go.etcd.io/etcd-io/etcd/raft/node_test.go:474 +0x6de
FAIL	go.etcd.io/etcd/raft/v3	0.104s
ok  	go.etcd.io/etcd/raft/v3/confchange	(cached)
ok  	go.etcd.io/etcd/raft/v3/quorum	(cached)
ok  	go.etcd.io/etcd/raft/v3/raftpb	(cached)
ok  	go.etcd.io/etcd/raft/v3/rafttest	(cached)
ok  	go.etcd.io/etcd/raft/v3/tracker	(cached)
FAIL
FAIL: (code:1):
  % (cd raft && 'env' 'go' 'test' '-short' '-timeout=3m' '-cpu=4' '--race' './...')
FAIL: 'unit' failed at Wed Jan  6 13:59:27 MSK 2021

would investigate now

@ptabor
Copy link
Contributor

ptabor commented Jan 6, 2021

This exact scary things happens if you update protobuf libraries too much. Please export you current go.mod changes.

Are you sure all the dependencies are protobuf-1.3.x ?

There might be something transitivily pooled up... so maybe sticking to e.g. grpc-1.30 in first step might help...

@scDisorder
Copy link
Author

scDisorder commented Jan 7, 2021

so it only was run fine when im on 1.4.2 so i did commit it
ill try it again with 1.3.5

@scDisorder
Copy link
Author

so as I can see there is no way to use grpc 1.33+ with protobuf version less than 1.4.1
just take a look at this: https://github.com/grpc/grpc-go/blob/v1.33.x/go.mod
and the 1.32 version had protobuf 1.3.3 dependency
i ll try to downgrade grpc-go then... kinda sad

@scDisorder
Copy link
Author

scDisorder commented Jan 7, 2021

the only thing I cant get is why script fix installing 1.4.2 version for server and tests package so hard
as well removing go.sum file and go mod tidy results the same

@ptabor
Copy link
Contributor

ptabor commented Jan 7, 2021

Grepping go mod graph helps with understanding the transitive dependency that causes the version bump.

go mod tidy - bumps the dependency to minimal version of the transitive dependencies.

@ptabor
Copy link
Contributor

ptabor commented Jan 7, 2021

FYI: Proposed Darwin compatible fixes to the scripts: #12602

@scDisorder
Copy link
Author

i am not sure, but probably this ruins everything for me:

% (cd server && 'go' 'mod' 'tidy')
stderr: go: finding module for package google.golang.org/grpc/examples/helloworld/helloworld
stderr: go: found google.golang.org/grpc/examples/helloworld/helloworld in google.golang.org/grpc/examples v0.0.0-20210105215357-f4a20d2f414f

there is mod graph when i manually go get github.com/golang/protobuf@v1.3.5 in server and tests directories

cloud.google.com/go@v0.44.2 github.com/golang/protobuf@v1.3.2
cloud.google.com/go@v0.45.1 github.com/golang/protobuf@v1.3.2
cloud.google.com/go/pubsub@v1.0.1 github.com/golang/protobuf@v1.3.2
cloud.google.com/go/bigquery@v1.0.1 github.com/golang/protobuf@v1.3.2
cloud.google.com/go@v0.44.1 github.com/golang/protobuf@v1.3.2
cloud.google.com/go/datastore@v1.0.0 github.com/golang/protobuf@v1.3.2
cloud.google.com/go@v0.46.3 github.com/golang/protobuf@v1.3.2
cloud.google.com/go/storage@v1.0.0 github.com/golang/protobuf@v1.3.2
cloud.google.com/go/firestore@v1.1.0 github.com/golang/protobuf@v1.3.2
cloud.google.com/go@v0.38.0 github.com/golang/protobuf@v1.2.0
github.com/spf13/viper@v1.7.0 github.com/gogo/protobuf@v1.2.1
github.com/prometheus/common@v0.10.0 github.com/golang/protobuf@v1.3.2
github.com/prometheus/common@v0.10.0 github.com/matttproud/golang_protobuf_extensions@v1.0.1
go.etcd.io/etcd/tests/v3@v3.5.0-pre github.com/gogo/protobuf@v1.3.1
go.etcd.io/etcd/tests/v3@v3.5.0-pre github.com/golang/protobuf@v1.3.5
google.golang.org/api@v0.13.0 github.com/golang/protobuf@v1.3.1
github.com/gogo/protobuf@v1.3.1 github.com/kisielk/errcheck@v1.2.0
github.com/gogo/protobuf@v1.3.1 github.com/kisielk/gotool@v1.0.0
github.com/gogo/protobuf@v1.2.1 github.com/kisielk/errcheck@v1.1.0
github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4 github.com/golang/protobuf@v1.2.0
google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55 github.com/golang/protobuf@v1.3.2
google.golang.org/genproto@v0.0.0-20200513103714-09dca8ec2884 github.com/golang/protobuf@v1.3.3
google.golang.org/grpc@v1.29.1 github.com/golang/protobuf@v1.3.3
github.com/grpc-ecosystem/grpc-gateway@v1.9.0 github.com/golang/protobuf@v1.2.0
github.com/prometheus/client_golang@v0.9.3 github.com/golang/protobuf@v1.3.1
google.golang.org/grpc@v1.19.0 github.com/golang/protobuf@v1.2.0
google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873 github.com/golang/protobuf@v1.2.0
github.com/prometheus/tsdb@v0.7.1 github.com/gogo/protobuf@v1.1.1
github.com/prometheus/tsdb@v0.7.1 github.com/golang/protobuf@v1.2.0
github.com/prometheus/tsdb@v0.7.1 github.com/matttproud/golang_protobuf_extensions@v1.0.1
go.opencensus.io@v0.21.0 github.com/golang/protobuf@v1.2.0
github.com/grpc-ecosystem/grpc-gateway@v1.14.6 github.com/golang/protobuf@v1.3.3
github.com/prometheus/client_model@v0.2.0 github.com/golang/protobuf@v1.2.0
go.etcd.io/etcd/api/v3@v3.5.0-pre github.com/gogo/protobuf@v1.3.1
go.etcd.io/etcd/api/v3@v3.5.0-pre github.com/golang/protobuf@v1.3.5
google.golang.org/appengine@v1.5.0 github.com/golang/protobuf@v1.2.0
github.com/prometheus/client_model@v0.0.0-20190129233127-fd36f4220a90 github.com/golang/protobuf@v1.2.0
github.com/prometheus/common@v0.4.0 github.com/gogo/protobuf@v1.1.1
github.com/prometheus/common@v0.4.0 github.com/golang/protobuf@v1.2.0
github.com/prometheus/common@v0.4.0 github.com/matttproud/golang_protobuf_extensions@v1.0.1
google.golang.org/appengine@v1.4.0 github.com/golang/protobuf@v1.2.0
google.golang.org/grpc@v1.21.1 github.com/golang/protobuf@v1.2.0
github.com/prometheus/common@v0.9.1 github.com/golang/protobuf@v1.3.2
github.com/prometheus/common@v0.9.1 github.com/matttproud/golang_protobuf_extensions@v1.0.1
google.golang.org/grpc@v1.20.1 github.com/golang/protobuf@v1.2.0
github.com/envoyproxy/go-control-plane@v0.9.0 github.com/golang/protobuf@v1.3.2
google.golang.org/api@v0.9.0 github.com/golang/protobuf@v1.3.1
google.golang.org/genproto@v0.0.0-20190911173649-1774047e7e51 github.com/golang/protobuf@v1.3.2
go.etcd.io/etcd/etcdctl/v3@v3.5.0-pre github.com/gogo/protobuf@v1.3.1
google.golang.org/genproto@v0.0.0-20191108220845-16a3f7862a1a github.com/golang/protobuf@v1.3.2
github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f github.com/golang/protobuf@v1.3.2
google.golang.org/genproto@v0.0.0-20190307195333-5fe7a883aa19 github.com/golang/protobuf@v1.2.0
go.etcd.io/etcd/raft/v3@v3.5.0-pre github.com/gogo/protobuf@v1.3.1
go.etcd.io/etcd/raft/v3@v3.5.0-pre github.com/golang/protobuf@v1.3.5
github.com/prometheus/client_golang@v1.0.0 github.com/golang/protobuf@v1.3.1
github.com/cockroachdb/datadriven@v0.0.0-20200714090401-bf6692d28da5 github.com/gogo/protobuf@v1.3.1
github.com/prometheus/client_golang@v1.5.1 github.com/golang/protobuf@v1.3.2
google.golang.org/grpc@v1.25.1 github.com/golang/protobuf@v1.3.2
google.golang.org/genproto@v0.0.0-20190801165951-fa694d86fc64 github.com/golang/protobuf@v1.3.2
google.golang.org/grpc@v1.23.0 github.com/golang/protobuf@v1.2.0
google.golang.org/api@v0.7.0 github.com/golang/protobuf@v1.3.1
go.opencensus.io@v0.22.0 github.com/golang/protobuf@v1.3.1
google.golang.org/genproto@v0.0.0-20190418145605-e7d98fc518a7 github.com/golang/protobuf@v1.2.0
github.com/prometheus/common@v0.4.1 github.com/gogo/protobuf@v1.1.1
github.com/prometheus/common@v0.4.1 github.com/golang/protobuf@v1.2.0
github.com/prometheus/common@v0.4.1 github.com/matttproud/golang_protobuf_extensions@v1.0.1
github.com/grpc-ecosystem/go-grpc-middleware@v1.2.2 github.com/golang/protobuf@v1.3.3
github.com/grpc-ecosystem/go-grpc-middleware@v1.2.2 github.com/gogo/protobuf@v1.2.1
google.golang.org/appengine@v1.6.1 github.com/golang/protobuf@v1.3.1
google.golang.org/grpc@v1.27.0 github.com/golang/protobuf@v1.3.2
github.com/envoyproxy/go-control-plane@v0.9.1-0.20191026205805-5f8ba28d4473 github.com/golang/protobuf@v1.3.2
google.golang.org/genproto@v0.0.0-20190425155659-357c62f0e4bb github.com/golang/protobuf@v1.2.0
google.golang.org/api@v0.8.0 github.com/golang/protobuf@v1.3.1
google.golang.org/genproto@v0.0.0-20200423170343-7949de9c1215 github.com/golang/protobuf@v1.3.3
go.etcd.io/etcd/server/v3@v3.5.0-pre github.com/golang/protobuf@v1.3.5
go.etcd.io/etcd/server/v3@v3.5.0-pre github.com/gogo/protobuf@v1.3.1
github.com/envoyproxy/go-control-plane@v0.9.4 github.com/golang/protobuf@v1.3.2
google.golang.org/grpc@v1.32.0 github.com/golang/protobuf@v1.3.3

then goes go mod tidy and go mod graph | grep protobuf@v1.4

github.com/golang/protobuf@v1.4.2 github.com/google/go-cmp@v0.4.0
github.com/golang/protobuf@v1.4.2 google.golang.org/protobuf@v1.23.0
google.golang.org/protobuf@v0.0.0-20200221191635-4d8936d0db64 github.com/golang/protobuf@v1.4.0-rc.1
google.golang.org/protobuf@v1.25.0 github.com/golang/protobuf@v1.4.1
google.golang.org/genproto@v0.0.0-20200806141610-86f49bd18e98 github.com/golang/protobuf@v1.4.1
google.golang.org/protobuf@v1.24.0 github.com/golang/protobuf@v1.4.1
google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013 github.com/golang/protobuf@v1.4.1
github.com/golang/protobuf@v1.4.1 github.com/google/go-cmp@v0.4.0
github.com/golang/protobuf@v1.4.1 google.golang.org/protobuf@v1.22.0
google.golang.org/protobuf@v1.23.0 github.com/golang/protobuf@v1.4.0
google.golang.org/protobuf@v1.22.0 github.com/golang/protobuf@v1.4.0
google.golang.org/protobuf@v1.23.1-0.20200526195155-81db48ad09cc github.com/golang/protobuf@v1.4.0
go.etcd.io/etcd/tests/v3@v3.5.0-pre github.com/golang/protobuf@v1.4.2
github.com/golang/protobuf@v1.4.0 github.com/google/go-cmp@v0.4.0
github.com/golang/protobuf@v1.4.0 google.golang.org/protobuf@v1.21.0
github.com/golang/protobuf@v1.4.0-rc.1 github.com/google/go-cmp@v0.3.1
github.com/golang/protobuf@v1.4.0-rc.1 google.golang.org/protobuf@v0.0.0-20200109180630-ec00e32a8dfd
google.golang.org/protobuf@v1.21.0 github.com/golang/protobuf@v1.4.0-rc.4.0.20200313231945-b860323f09d0
google.golang.org/grpc/examples@v0.0.0-20210105215357-f4a20d2f414f github.com/golang/protobuf@v1.4.2
github.com/golang/protobuf@v1.4.0-rc.4.0.20200313231945-b860323f09d0 github.com/google/go-cmp@v0.4.0
github.com/golang/protobuf@v1.4.0-rc.4.0.20200313231945-b860323f09d0 google.golang.org/protobuf@v1.20.1-0.20200309200217-e05f789c0967
google.golang.org/protobuf@v1.20.1-0.20200309200217-e05f789c0967 github.com/golang/protobuf@v1.4.0-rc.2
github.com/golang/protobuf@v1.4.0-rc.2 github.com/google/go-cmp@v0.4.0
github.com/golang/protobuf@v1.4.0-rc.2 google.golang.org/protobuf@v0.0.0-20200228230310-ab0ca4ff8a60
go.etcd.io/etcd/server/v3@v3.5.0-pre github.com/golang/protobuf@v1.4.2
google.golang.org/protobuf@v0.0.0-20200228230310-ab0ca4ff8a60 github.com/golang/protobuf@v1.4.0-rc.1.0.20200221234624-67d41d38c208
github.com/golang/protobuf@v1.4.0-rc.1.0.20200221234624-67d41d38c208 github.com/google/go-cmp@v0.4.0
github.com/golang/protobuf@v1.4.0-rc.1.0.20200221234624-67d41d38c208 google.golang.org/protobuf@v0.0.0-20200221191635-4d8936d0db64

@ptabor
Copy link
Contributor

ptabor commented Jan 7, 2021

Hate to say that, but 'replace' directive for protobuf or/and go-cmp in tests&server module might be the only option to decouple both problems.

@scDisorder
Copy link
Author

scDisorder commented Jan 7, 2021

something like

replace github.com/golang/protobuf => github.com/golang/protobuf v1.3.5
replace github.com/google/go-cmp => github.com/google/go-cmp v0.4.0

does not helps if i get it right, so i just would reset it to head and would upgrade grpc without crazy version jumpings

im only hope that master test wouldnt fail now and i have a point to begin %)

@scDisorder
Copy link
Author

scDisorder commented Jan 7, 2021

even grpc 1.30 gives me the same result
i can suspect my environments only for now, but i cannot adapt it only for etcd. probably would close the pr, or idk
i have a lot of generated pb files keeping on the last stable and do really need that update for my app, so i had to try

@scDisorder
Copy link
Author

yep, i have found a solution with alpha version of client

@ptabor
Copy link
Contributor

ptabor commented Jan 8, 2021

I kept poking around this, and found a few interesting things:

  1. google.golang.org/grpc/examples/helloworld/helloworld dependency is due to cmux.
% go mod why google.golang.org/grpc/examples/helloworld/helloworld

# google.golang.org/grpc/examples/helloworld/helloworld
go.etcd.io/etcd/server/v3/embed
github.com/soheilhy/cmux
github.com/soheilhy/cmux.test
google.golang.org/grpc/examples/helloworld/helloworld
  1. We have dependency on cmux currently, so I don't understand why our grpc bump is causing that to be added to go.mod (and not earlier).

  2. There is PR in tmux to separate their examplar code from the main product and define go.mod:
    Adopt go modules soheilhy/cmux#81
    Last release was 2 years ago, so we might need to e.g. fork that project.

  3. cmd/go: provide straightforward way to see non-test dependencies golang/go#26955 is the gophers discussion about adding transitively test-dependencies into go.mod.
    My opinion: They assume idealistic state of the world, and do not provide tools to deal with a real problems in the ecosystem.

  4. I resumed discussions about solving problem of 'gogo' that is blocking adoption of grpc-1.30+ due to ... transitively testing... dependencies. Public issue: 🐘 Need a replacement for deprecated/unmaintained gogo-protobuf dependency kubernetes/kubernetes#96564 (comment)

@scDisorder : I think it is still worth to merge a CL that solves the picker & naming problem, even if we stay for now on grpc-1.29.1 (both versions of packages are available in 1.29.1). Would you mind continuation of work on this,
or you prefer someone to resume / fork ?

@skyao for lessons learned in context of: #12398

@scDisorder
Copy link
Author

@ptabor yep, I can try to do this again

@scDisorder
Copy link
Author

scDisorder commented Jan 9, 2021

i also see that gogo proto has latest version update for almost 2 years ago

so am i getting it right that i should have 2 separate PRs:

  • move grpc/naming code to internal naming package as i have done before
  • and picker issue, but im not sure when to start: i mean should i wait for cmux merge or something

@scDisorder
Copy link
Author

@ptabor take a look on #12608 when you able to

@skyao
Copy link
Contributor

skyao commented Jan 11, 2021

@scDisorder we can work together for this grpc version upgrade issue . In fact this problem has been blocked for a long long time as you can see from my PR(the first one).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

4 participants