*: remove references to old versions of go (#6545)

This commit is contained in:
Doug Fawley 2023-08-11 14:14:47 -07:00 committed by GitHub
parent 03d32b9c9d
commit a0100790d9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 27 additions and 87 deletions

View File

@ -1,9 +1,8 @@
# Proxy # Proxy
HTTP CONNECT proxies are supported by default in gRPC. The proxy address can be HTTP CONNECT proxies are supported by default in gRPC. The proxy address can be
specified by the environment variables `HTTPS_PROXY` and `NO_PROXY`. Before Go specified by the environment variables `HTTPS_PROXY` and `NO_PROXY`. (Note that
1.16, if the `HTTPS_PROXY` environment variable is unset, `HTTP_PROXY` will be these environment variables are case insensitive.)
used instead. (Note that these environment variables are case insensitive.)
## Custom proxy ## Custom proxy

View File

@ -14,21 +14,14 @@ RPC framework that puts mobile and HTTP/2 first. For more information see the
## Installation ## Installation
With [Go module][] support (Go 1.11+), simply add the following import Simply add the following import to your code, and then `go [build|run|test]`
will automatically fetch the necessary dependencies:
```go ```go
import "google.golang.org/grpc" import "google.golang.org/grpc"
``` ```
to your code, and then `go [build|run|test]` will automatically fetch the
necessary dependencies.
Otherwise, to install the `grpc-go` package, run the following command:
```console
$ go get -u google.golang.org/grpc
```
> **Note:** If you are trying to access `grpc-go` from **China**, see the > **Note:** If you are trying to access `grpc-go` from **China**, see the
> [FAQ](#FAQ) below. > [FAQ](#FAQ) below.
@ -56,15 +49,6 @@ To build Go code, there are several options:
- Set up a VPN and access google.golang.org through that. - Set up a VPN and access google.golang.org through that.
- Without Go module support: `git clone` the repo manually:
```sh
git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc
```
You will need to do the same for all of grpc's dependencies in `golang.org`,
e.g. `golang.org/x/net`.
- With Go module support: it is possible to use the `replace` feature of `go - With Go module support: it is possible to use the `replace` feature of `go
mod` to create aliases for golang.org packages. In your project's directory: mod` to create aliases for golang.org packages. In your project's directory:
@ -76,33 +60,13 @@ To build Go code, there are several options:
``` ```
Again, this will need to be done for all transitive dependencies hosted on Again, this will need to be done for all transitive dependencies hosted on
golang.org as well. For details, refer to [golang/go issue #28652](https://github.com/golang/go/issues/28652). golang.org as well. For details, refer to [golang/go issue
#28652](https://github.com/golang/go/issues/28652).
### Compiling error, undefined: grpc.SupportPackageIsVersion ### Compiling error, undefined: grpc.SupportPackageIsVersion
#### If you are using Go modules: Please update to the latest version of gRPC-Go using
`go get google.golang.org/grpc`.
Ensure your gRPC-Go version is `require`d at the appropriate version in
the same module containing the generated `.pb.go` files. For example,
`SupportPackageIsVersion6` needs `v1.27.0`, so in your `go.mod` file:
```go
module <your module name>
require (
google.golang.org/grpc v1.27.0
)
```
#### If you are *not* using Go modules:
Update the `proto` package, gRPC package, and rebuild the `.proto` files:
```sh
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
go get -u google.golang.org/grpc
protoc --go_out=plugins=grpc:. *.proto
```
### How to turn on logging ### How to turn on logging
@ -121,9 +85,11 @@ possible reasons, including:
1. mis-configured transport credentials, connection failed on handshaking 1. mis-configured transport credentials, connection failed on handshaking
1. bytes disrupted, possibly by a proxy in between 1. bytes disrupted, possibly by a proxy in between
1. server shutdown 1. server shutdown
1. Keepalive parameters caused connection shutdown, for example if you have configured 1. Keepalive parameters caused connection shutdown, for example if you have
your server to terminate connections regularly to [trigger DNS lookups](https://github.com/grpc/grpc-go/issues/3170#issuecomment-552517779). configured your server to terminate connections regularly to [trigger DNS
If this is the case, you may want to increase your [MaxConnectionAgeGrace](https://pkg.go.dev/google.golang.org/grpc/keepalive?tab=doc#ServerParameters), lookups](https://github.com/grpc/grpc-go/issues/3170#issuecomment-552517779).
If this is the case, you may want to increase your
[MaxConnectionAgeGrace](https://pkg.go.dev/google.golang.org/grpc/keepalive?tab=doc#ServerParameters),
to allow longer RPC calls to finish. to allow longer RPC calls to finish.
It can be tricky to debug this because the error happens on the client side but It can be tricky to debug this because the error happens on the client side but

View File

@ -19,10 +19,6 @@
* *
*/ */
// The test in this file should be run in an environment that has go1.10 or later,
// as the function SyscallConn() (required to get socket option) was introduced
// to net.TCPListener in go1.10.
package channelz_test package channelz_test
import ( import (

View File

@ -318,7 +318,7 @@ func (s) TestHandlerTransport_HandleStreams(t *testing.T) {
func(ctx context.Context, method string) context.Context { return ctx }, func(ctx context.Context, method string) context.Context { return ctx },
) )
wantHeader := http.Header{ wantHeader := http.Header{
"Date": {}, "Date": nil,
"Content-Type": {"application/grpc"}, "Content-Type": {"application/grpc"},
"Trailer": {"Grpc-Status", "Grpc-Message", "Grpc-Status-Details-Bin"}, "Trailer": {"Grpc-Status", "Grpc-Message", "Grpc-Status-Details-Bin"},
"Custom-Header": {"Custom header value", "Another custom header value"}, "Custom-Header": {"Custom header value", "Another custom header value"},
@ -352,7 +352,7 @@ func handleStreamCloseBodyTest(t *testing.T, statusCode codes.Code, msg string)
func(ctx context.Context, method string) context.Context { return ctx }, func(ctx context.Context, method string) context.Context { return ctx },
) )
wantHeader := http.Header{ wantHeader := http.Header{
"Date": {}, "Date": nil,
"Content-Type": {"application/grpc"}, "Content-Type": {"application/grpc"},
"Trailer": {"Grpc-Status", "Grpc-Message", "Grpc-Status-Details-Bin"}, "Trailer": {"Grpc-Status", "Grpc-Message", "Grpc-Status-Details-Bin"},
} }
@ -402,7 +402,7 @@ func (s) TestHandlerTransport_HandleStreams_Timeout(t *testing.T) {
func(ctx context.Context, method string) context.Context { return ctx }, func(ctx context.Context, method string) context.Context { return ctx },
) )
wantHeader := http.Header{ wantHeader := http.Header{
"Date": {}, "Date": nil,
"Content-Type": {"application/grpc"}, "Content-Type": {"application/grpc"},
"Trailer": {"Grpc-Status", "Grpc-Message", "Grpc-Status-Details-Bin"}, "Trailer": {"Grpc-Status", "Grpc-Message", "Grpc-Status-Details-Bin"},
} }
@ -489,7 +489,7 @@ func (s) TestHandlerTransport_HandleStreams_ErrDetails(t *testing.T) {
func(ctx context.Context, method string) context.Context { return ctx }, func(ctx context.Context, method string) context.Context { return ctx },
) )
wantHeader := http.Header{ wantHeader := http.Header{
"Date": {}, "Date": nil,
"Content-Type": {"application/grpc"}, "Content-Type": {"application/grpc"},
"Trailer": {"Grpc-Status", "Grpc-Message", "Grpc-Status-Details-Bin"}, "Trailer": {"Grpc-Status", "Grpc-Message", "Grpc-Status-Details-Bin"},
} }
@ -515,7 +515,7 @@ func (s) TestHandlerTransport_Drain(t *testing.T) {
func checkHeaderAndTrailer(t *testing.T, rw testHandlerResponseWriter, wantHeader, wantTrailer http.Header) { func checkHeaderAndTrailer(t *testing.T, rw testHandlerResponseWriter, wantHeader, wantTrailer http.Header) {
// For trailer-only responses, the trailer values might be reported as part of the Header. They will however // For trailer-only responses, the trailer values might be reported as part of the Header. They will however
// be present in Trailer in either case. Hence, normalize the header by removing all trailer values. // be present in Trailer in either case. Hence, normalize the header by removing all trailer values.
actualHeader := cloneHeader(rw.Result().Header) actualHeader := rw.Result().Header.Clone()
for _, trailerKey := range actualHeader["Trailer"] { for _, trailerKey := range actualHeader["Trailer"] {
actualHeader.Del(trailerKey) actualHeader.Del(trailerKey)
} }
@ -527,21 +527,3 @@ func checkHeaderAndTrailer(t *testing.T, rw testHandlerResponseWriter, wantHeade
t.Errorf("Trailer mismatch.\n got: %#v\n want: %#v", actualTrailer, wantTrailer) t.Errorf("Trailer mismatch.\n got: %#v\n want: %#v", actualTrailer, wantTrailer)
} }
} }
// cloneHeader performs a deep clone of an http.Header, since the (http.Header).Clone() method was only added in
// Go 1.13.
func cloneHeader(hdr http.Header) http.Header {
if hdr == nil {
return nil
}
hdrClone := make(http.Header, len(hdr))
for k, vv := range hdr {
vvClone := make([]string, len(vv))
copy(vvClone, vv)
hdrClone[k] = vvClone
}
return hdrClone
}

View File

@ -17,7 +17,7 @@
# Stage 1: Build the interop test client and server # Stage 1: Build the interop test client and server
# #
FROM golang:1.17.13-bullseye as build FROM golang:1.21-bullseye as build
WORKDIR /grpc-go WORKDIR /grpc-go
COPY . . COPY . .
@ -36,7 +36,7 @@ RUN go build -o server/ server/server.go && \
# with the given parameters. # with the given parameters.
# #
FROM golang:1.17.13-bullseye FROM golang:1.21-bullseye
ENV GRPC_GO_LOG_SEVERITY_LEVEL info ENV GRPC_GO_LOG_SEVERITY_LEVEL info
ENV GRPC_GO_LOG_VERBOSITY_LEVEL 2 ENV GRPC_GO_LOG_VERBOSITY_LEVEL 2

View File

@ -16,7 +16,7 @@
# following command from grpc-go directory: # following command from grpc-go directory:
# docker build -t <TAG> -f interop/xds/client/Dockerfile . # docker build -t <TAG> -f interop/xds/client/Dockerfile .
FROM golang:1.19-alpine as build FROM golang:1.21-alpine as build
# Make a grpc-go directory and copy the repo into it. # Make a grpc-go directory and copy the repo into it.
WORKDIR /go/src/grpc-go WORKDIR /go/src/grpc-go

View File

@ -16,7 +16,7 @@
# following command from grpc-go directory: # following command from grpc-go directory:
# docker build -t <TAG> -f interop/xds/server/Dockerfile . # docker build -t <TAG> -f interop/xds/server/Dockerfile .
FROM golang:1.19-alpine as build FROM golang:1.21-alpine as build
# Make a grpc-go directory and copy the repo into it. # Make a grpc-go directory and copy the repo into it.
WORKDIR /go/src/grpc-go WORKDIR /go/src/grpc-go

View File

@ -16,10 +16,6 @@
* *
*/ */
// The test in this file should be run in an environment that has go1.10 or later,
// as the function SyscallConn() (required to get socket option) was
// introduced to net.TCPListener in go1.10.
package test package test
import ( import (

View File

@ -9,8 +9,9 @@ export GOPATH="${HOME}/gopath"
pushd grpc-go/interop/xds/client pushd grpc-go/interop/xds/client
# Install a version of Go supported by gRPC for the new features, e.g. # Install a version of Go supported by gRPC for the new features, e.g.
# errors.Is() # errors.Is()
curl --retry 3 -O -L https://go.dev/dl/go1.17.3.linux-amd64.tar.gz gofilename=go1.21.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xf go1.17.3.linux-amd64.tar.gz curl --retry 3 -O -L "https://go.dev/dl/${gofilename}"
sudo tar -C /usr/local -xf "${gofilename}"
sudo ln -s /usr/local/go/bin/go /usr/bin/go sudo ln -s /usr/local/go/bin/go /usr/bin/go
# Retry go build on errors (e.g. go get connection errors), for at most 3 times # Retry go build on errors (e.g. go get connection errors), for at most 3 times
for i in 1 2 3; do go build && break || sleep 5; done for i in 1 2 3; do go build && break || sleep 5; done

2
vet.sh
View File

@ -106,7 +106,7 @@ for MOD_FILE in $(find . -name 'go.mod'); do
goimports -l . 2>&1 | not grep -vE "\.pb\.go" goimports -l . 2>&1 | not grep -vE "\.pb\.go"
golint ./... 2>&1 | not grep -vE "/grpc_testing_not_regenerate/.*\.pb\.go:" golint ./... 2>&1 | not grep -vE "/grpc_testing_not_regenerate/.*\.pb\.go:"
go mod tidy -compat=1.17 go mod tidy -compat=1.19
git status --porcelain 2>&1 | fail_on_output || \ git status --porcelain 2>&1 | fail_on_output || \
(git status; git --no-pager diff; exit 1) (git status; git --no-pager diff; exit 1)
popd popd