-
Notifications
You must be signed in to change notification settings - Fork 4.1k
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
Bump grpc to 1.33.1 to fix corruption when downloading CAS blobs #13055
Conversation
github says jars were renamed without change which is suspicious |
dc24530
to
4a4c8bc
Compare
Part 1: add v1.33.1 version to third_party/grpc Note: partly switches to v1.33.1 too as not all bits are versioned and some of unversioned bits are used from other third_party targets grpc-java versions 1.27 through 1.32 had a bug where messages could arrive after the call was reported clsoed. In the case of bazel, this meant that in GrpcCacheClient, onNext could be called after onError. This leads to offset bookkeeping getting out of sync, and corrupts the CAS blob download. bazelbuild#12927
Part 2: Switch to grpc 1.33.1. grpc-java versions 1.27 through 1.32 had a bug where messages could arrive after the call was reported clsoed. In the case of bazel, this meant that in GrpcCacheClient, onNext could be called after onError. This leads to offset bookkeeping getting out of sync, and corrupts the CAS blob download. bazelbuild#12927
Part 3: remove 1.32.x from third_party/grpc. grpc-java versions 1.27 through 1.32 had a bug where messages could arrive after the call was reported clsoed. In the case of bazel, this meant that in GrpcCacheClient, onNext could be called after onError. This leads to offset bookkeeping getting out of sync, and corrupts the CAS blob download. bazelbuild#12927
@divanorama @coeuvre I originally tried to upgrade to 1.34.1, but that was causing issues since grpc 1.34.1 had upgraded many of its transitive dependencies like upb and abseil... So now I'm trying to upgrade to 1.33.1 instead. |
There are further bugfixes in 1.34+, but shouldn't hurt to try 1.33.1 first imho |
@divanorama Good point! Diffing 1.33.1 and 1.33.2 it seems that the only material change is in the python client, so in practice it should not make any difference. I can certainly bump to 1.33.2 instead if you prefer? |
@scele Thanks for catching the bug and creating the fix! |
@meteorcloudy I have created: Let me know if I can do more. I'm also 100% OK with you or other googlers modifying my commits/PRs as needed to get them in. |
Thanks! I'll start to merge them. |
grpc-java versions 1.27 through 1.32 had a bug where messages could arrive
after the call was reported clsoed. In the case of bazel, this meant that
in GrpcCacheClient, onNext could be called after onError. This leads to
offset bookkeeping getting out of sync, and corrupts the CAS blob download.
#12927