backport 17.7.x: Downgrade grpc-go to v1.66.3
Backport !7531 (merged) to 17.7.x versions
====
Copied from the original MR
grpc-go v1.67.0 (https://github.com/grpc/grpc-go/releases/tag/v1.67.0) caused two major problems for Gitaly and Praefect.
First, this version introduced a bug related to window header calculation. This bug makes Gitaly return ResourceExhausted errors occasionally even if the calls were successful.
For more information: #6385 (closed)
Second, clients and servers will now reject TLS connections that don't
support ALPN. This restriction deems Gitaly/Praefect not compatible with
some certain TCP load-balancers, such as Nginx, if TLS is enabled. The
problem will go away if customers place Gitaly/Prafect behind an HTTP/2
or gRPC load balancers. Unfortunately, L7 load-balancers are not
compatible with Gitaly/Praefect due to the Sidechannel Protocol.
Although this feature could be turned off by turning on the
GRPC_ENFORCE_ALPN_ENABLED
flag, it's annoying for our customers.
For more information: https://gitlab.com/gitlab-com/request-for-help/-/issues/2127
The first bug was fixed in v1.67.1 and back-ported to v1.66.3. The second bug (or feature?) has not been addressed upstream, yet. Although we are looking forward to a long-term solution so that Sidechannel is replaced by something else such as gRPC buffer pooling (#6560) or pure HTTP/2. It might take a while until an alternative solution lands.
Thus, this commit downgrades grpc-go back to 1.66.3. This version didn't introduce the new APLN enforcement and it contains the back-port of the first bug (https://github.com/grpc/grpc-go/pull/7660 and https://github.com/grpc/grpc-go/pull/7668).