mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
vendor: upgrade gRPC Go to v1.24.0
Picking up some performance improvements and bug fixes. https://github.com/grpc/grpc-go/releases/tag/v1.24.0 Signed-off-by: Gyuho Lee <leegyuho@amazon.com>
This commit is contained in:
parent
3712a5d045
commit
426463c433
2
go.mod
2
go.mod
@ -43,7 +43,7 @@ require (
|
|||||||
golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7
|
golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7
|
||||||
golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456 // indirect
|
golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456 // indirect
|
||||||
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2
|
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2
|
||||||
google.golang.org/grpc v1.23.1
|
google.golang.org/grpc v1.24.0
|
||||||
gopkg.in/cheggaaa/pb.v1 v1.0.25
|
gopkg.in/cheggaaa/pb.v1 v1.0.25
|
||||||
gopkg.in/yaml.v2 v2.2.2
|
gopkg.in/yaml.v2 v2.2.2
|
||||||
sigs.k8s.io/yaml v1.1.0
|
sigs.k8s.io/yaml v1.1.0
|
||||||
|
4
go.sum
4
go.sum
@ -181,8 +181,8 @@ google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9Ywl
|
|||||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc=
|
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc=
|
||||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||||
google.golang.org/grpc v1.23.1 h1:q4XQuHFC6I28BKZpo6IYyb3mNO+l7lSOxRuYTCiDfXk=
|
google.golang.org/grpc v1.24.0 h1:vb/1TCsVn3DcJlQ0Gs1yB1pKI6Do2/QNwxdKqmc/b0s=
|
||||||
google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA=
|
||||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
|
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
96
vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.go
generated
vendored
96
vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.go
generated
vendored
@ -1,15 +1,16 @@
|
|||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// source: grpc/health/v1/health.proto
|
// source: grpc/health/v1/health.proto
|
||||||
|
|
||||||
package grpc_health_v1 // import "google.golang.org/grpc/health/grpc_health_v1"
|
package grpc_health_v1
|
||||||
|
|
||||||
import proto "github.com/golang/protobuf/proto"
|
|
||||||
import fmt "fmt"
|
|
||||||
import math "math"
|
|
||||||
|
|
||||||
import (
|
import (
|
||||||
context "golang.org/x/net/context"
|
context "context"
|
||||||
|
fmt "fmt"
|
||||||
|
proto "github.com/golang/protobuf/proto"
|
||||||
grpc "google.golang.org/grpc"
|
grpc "google.golang.org/grpc"
|
||||||
|
codes "google.golang.org/grpc/codes"
|
||||||
|
status "google.golang.org/grpc/status"
|
||||||
|
math "math"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Reference imports to suppress errors if they are not otherwise used.
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
@ -21,7 +22,7 @@ var _ = math.Inf
|
|||||||
// is compatible with the proto package it is being compiled against.
|
// is compatible with the proto package it is being compiled against.
|
||||||
// A compilation error at this line likely means your copy of the
|
// A compilation error at this line likely means your copy of the
|
||||||
// proto package needs to be updated.
|
// proto package needs to be updated.
|
||||||
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
|
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
|
||||||
|
|
||||||
type HealthCheckResponse_ServingStatus int32
|
type HealthCheckResponse_ServingStatus int32
|
||||||
|
|
||||||
@ -38,6 +39,7 @@ var HealthCheckResponse_ServingStatus_name = map[int32]string{
|
|||||||
2: "NOT_SERVING",
|
2: "NOT_SERVING",
|
||||||
3: "SERVICE_UNKNOWN",
|
3: "SERVICE_UNKNOWN",
|
||||||
}
|
}
|
||||||
|
|
||||||
var HealthCheckResponse_ServingStatus_value = map[string]int32{
|
var HealthCheckResponse_ServingStatus_value = map[string]int32{
|
||||||
"UNKNOWN": 0,
|
"UNKNOWN": 0,
|
||||||
"SERVING": 1,
|
"SERVING": 1,
|
||||||
@ -48,8 +50,9 @@ var HealthCheckResponse_ServingStatus_value = map[string]int32{
|
|||||||
func (x HealthCheckResponse_ServingStatus) String() string {
|
func (x HealthCheckResponse_ServingStatus) String() string {
|
||||||
return proto.EnumName(HealthCheckResponse_ServingStatus_name, int32(x))
|
return proto.EnumName(HealthCheckResponse_ServingStatus_name, int32(x))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (HealthCheckResponse_ServingStatus) EnumDescriptor() ([]byte, []int) {
|
func (HealthCheckResponse_ServingStatus) EnumDescriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_health_6b1a06aa67f91efd, []int{1, 0}
|
return fileDescriptor_e265fd9d4e077217, []int{1, 0}
|
||||||
}
|
}
|
||||||
|
|
||||||
type HealthCheckRequest struct {
|
type HealthCheckRequest struct {
|
||||||
@ -63,16 +66,17 @@ func (m *HealthCheckRequest) Reset() { *m = HealthCheckRequest{} }
|
|||||||
func (m *HealthCheckRequest) String() string { return proto.CompactTextString(m) }
|
func (m *HealthCheckRequest) String() string { return proto.CompactTextString(m) }
|
||||||
func (*HealthCheckRequest) ProtoMessage() {}
|
func (*HealthCheckRequest) ProtoMessage() {}
|
||||||
func (*HealthCheckRequest) Descriptor() ([]byte, []int) {
|
func (*HealthCheckRequest) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_health_6b1a06aa67f91efd, []int{0}
|
return fileDescriptor_e265fd9d4e077217, []int{0}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *HealthCheckRequest) XXX_Unmarshal(b []byte) error {
|
func (m *HealthCheckRequest) XXX_Unmarshal(b []byte) error {
|
||||||
return xxx_messageInfo_HealthCheckRequest.Unmarshal(m, b)
|
return xxx_messageInfo_HealthCheckRequest.Unmarshal(m, b)
|
||||||
}
|
}
|
||||||
func (m *HealthCheckRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
func (m *HealthCheckRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
return xxx_messageInfo_HealthCheckRequest.Marshal(b, m, deterministic)
|
return xxx_messageInfo_HealthCheckRequest.Marshal(b, m, deterministic)
|
||||||
}
|
}
|
||||||
func (dst *HealthCheckRequest) XXX_Merge(src proto.Message) {
|
func (m *HealthCheckRequest) XXX_Merge(src proto.Message) {
|
||||||
xxx_messageInfo_HealthCheckRequest.Merge(dst, src)
|
xxx_messageInfo_HealthCheckRequest.Merge(m, src)
|
||||||
}
|
}
|
||||||
func (m *HealthCheckRequest) XXX_Size() int {
|
func (m *HealthCheckRequest) XXX_Size() int {
|
||||||
return xxx_messageInfo_HealthCheckRequest.Size(m)
|
return xxx_messageInfo_HealthCheckRequest.Size(m)
|
||||||
@ -101,16 +105,17 @@ func (m *HealthCheckResponse) Reset() { *m = HealthCheckResponse{} }
|
|||||||
func (m *HealthCheckResponse) String() string { return proto.CompactTextString(m) }
|
func (m *HealthCheckResponse) String() string { return proto.CompactTextString(m) }
|
||||||
func (*HealthCheckResponse) ProtoMessage() {}
|
func (*HealthCheckResponse) ProtoMessage() {}
|
||||||
func (*HealthCheckResponse) Descriptor() ([]byte, []int) {
|
func (*HealthCheckResponse) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_health_6b1a06aa67f91efd, []int{1}
|
return fileDescriptor_e265fd9d4e077217, []int{1}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *HealthCheckResponse) XXX_Unmarshal(b []byte) error {
|
func (m *HealthCheckResponse) XXX_Unmarshal(b []byte) error {
|
||||||
return xxx_messageInfo_HealthCheckResponse.Unmarshal(m, b)
|
return xxx_messageInfo_HealthCheckResponse.Unmarshal(m, b)
|
||||||
}
|
}
|
||||||
func (m *HealthCheckResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
func (m *HealthCheckResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
return xxx_messageInfo_HealthCheckResponse.Marshal(b, m, deterministic)
|
return xxx_messageInfo_HealthCheckResponse.Marshal(b, m, deterministic)
|
||||||
}
|
}
|
||||||
func (dst *HealthCheckResponse) XXX_Merge(src proto.Message) {
|
func (m *HealthCheckResponse) XXX_Merge(src proto.Message) {
|
||||||
xxx_messageInfo_HealthCheckResponse.Merge(dst, src)
|
xxx_messageInfo_HealthCheckResponse.Merge(m, src)
|
||||||
}
|
}
|
||||||
func (m *HealthCheckResponse) XXX_Size() int {
|
func (m *HealthCheckResponse) XXX_Size() int {
|
||||||
return xxx_messageInfo_HealthCheckResponse.Size(m)
|
return xxx_messageInfo_HealthCheckResponse.Size(m)
|
||||||
@ -129,9 +134,34 @@ func (m *HealthCheckResponse) GetStatus() HealthCheckResponse_ServingStatus {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
proto.RegisterEnum("grpc.health.v1.HealthCheckResponse_ServingStatus", HealthCheckResponse_ServingStatus_name, HealthCheckResponse_ServingStatus_value)
|
||||||
proto.RegisterType((*HealthCheckRequest)(nil), "grpc.health.v1.HealthCheckRequest")
|
proto.RegisterType((*HealthCheckRequest)(nil), "grpc.health.v1.HealthCheckRequest")
|
||||||
proto.RegisterType((*HealthCheckResponse)(nil), "grpc.health.v1.HealthCheckResponse")
|
proto.RegisterType((*HealthCheckResponse)(nil), "grpc.health.v1.HealthCheckResponse")
|
||||||
proto.RegisterEnum("grpc.health.v1.HealthCheckResponse_ServingStatus", HealthCheckResponse_ServingStatus_name, HealthCheckResponse_ServingStatus_value)
|
}
|
||||||
|
|
||||||
|
func init() { proto.RegisterFile("grpc/health/v1/health.proto", fileDescriptor_e265fd9d4e077217) }
|
||||||
|
|
||||||
|
var fileDescriptor_e265fd9d4e077217 = []byte{
|
||||||
|
// 297 bytes of a gzipped FileDescriptorProto
|
||||||
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4e, 0x2f, 0x2a, 0x48,
|
||||||
|
0xd6, 0xcf, 0x48, 0x4d, 0xcc, 0x29, 0xc9, 0xd0, 0x2f, 0x33, 0x84, 0xb2, 0xf4, 0x0a, 0x8a, 0xf2,
|
||||||
|
0x4b, 0xf2, 0x85, 0xf8, 0x40, 0x92, 0x7a, 0x50, 0xa1, 0x32, 0x43, 0x25, 0x3d, 0x2e, 0x21, 0x0f,
|
||||||
|
0x30, 0xc7, 0x39, 0x23, 0x35, 0x39, 0x3b, 0x28, 0xb5, 0xb0, 0x34, 0xb5, 0xb8, 0x44, 0x48, 0x82,
|
||||||
|
0x8b, 0xbd, 0x38, 0xb5, 0xa8, 0x2c, 0x33, 0x39, 0x55, 0x82, 0x51, 0x81, 0x51, 0x83, 0x33, 0x08,
|
||||||
|
0xc6, 0x55, 0xda, 0xc8, 0xc8, 0x25, 0x8c, 0xa2, 0xa1, 0xb8, 0x20, 0x3f, 0xaf, 0x38, 0x55, 0xc8,
|
||||||
|
0x93, 0x8b, 0xad, 0xb8, 0x24, 0xb1, 0xa4, 0xb4, 0x18, 0xac, 0x81, 0xcf, 0xc8, 0x50, 0x0f, 0xd5,
|
||||||
|
0x22, 0x3d, 0x2c, 0x9a, 0xf4, 0x82, 0x41, 0x86, 0xe6, 0xa5, 0x07, 0x83, 0x35, 0x06, 0x41, 0x0d,
|
||||||
|
0x50, 0xf2, 0xe7, 0xe2, 0x45, 0x91, 0x10, 0xe2, 0xe6, 0x62, 0x0f, 0xf5, 0xf3, 0xf6, 0xf3, 0x0f,
|
||||||
|
0xf7, 0x13, 0x60, 0x00, 0x71, 0x82, 0x5d, 0x83, 0xc2, 0x3c, 0xfd, 0xdc, 0x05, 0x18, 0x85, 0xf8,
|
||||||
|
0xb9, 0xb8, 0xfd, 0xfc, 0x43, 0xe2, 0x61, 0x02, 0x4c, 0x42, 0xc2, 0x5c, 0xfc, 0x60, 0x8e, 0xb3,
|
||||||
|
0x6b, 0x3c, 0x4c, 0x0b, 0xb3, 0xd1, 0x3a, 0x46, 0x2e, 0x36, 0x88, 0xf5, 0x42, 0x01, 0x5c, 0xac,
|
||||||
|
0x60, 0x27, 0x08, 0x29, 0xe1, 0x75, 0x1f, 0x38, 0x14, 0xa4, 0x94, 0x89, 0xf0, 0x83, 0x50, 0x10,
|
||||||
|
0x17, 0x6b, 0x78, 0x62, 0x49, 0x72, 0x06, 0xd5, 0x4c, 0x34, 0x60, 0x74, 0x4a, 0xe4, 0x12, 0xcc,
|
||||||
|
0xcc, 0x47, 0x53, 0xea, 0xc4, 0x0d, 0x51, 0x1b, 0x00, 0x8a, 0xc6, 0x00, 0xc6, 0x28, 0x9d, 0xf4,
|
||||||
|
0xfc, 0xfc, 0xf4, 0x9c, 0x54, 0xbd, 0xf4, 0xfc, 0x9c, 0xc4, 0xbc, 0x74, 0xbd, 0xfc, 0xa2, 0x74,
|
||||||
|
0x7d, 0xe4, 0x78, 0x07, 0xb1, 0xe3, 0x21, 0xec, 0xf8, 0x32, 0xc3, 0x55, 0x4c, 0x7c, 0xee, 0x20,
|
||||||
|
0xd3, 0x20, 0x46, 0xe8, 0x85, 0x19, 0x26, 0xb1, 0x81, 0x93, 0x83, 0x31, 0x20, 0x00, 0x00, 0xff,
|
||||||
|
0xff, 0x12, 0x7d, 0x96, 0xcb, 0x2d, 0x02, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reference imports to suppress errors if they are not otherwise used.
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
@ -239,6 +269,17 @@ type HealthServer interface {
|
|||||||
Watch(*HealthCheckRequest, Health_WatchServer) error
|
Watch(*HealthCheckRequest, Health_WatchServer) error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UnimplementedHealthServer can be embedded to have forward compatible implementations.
|
||||||
|
type UnimplementedHealthServer struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*UnimplementedHealthServer) Check(ctx context.Context, req *HealthCheckRequest) (*HealthCheckResponse, error) {
|
||||||
|
return nil, status.Errorf(codes.Unimplemented, "method Check not implemented")
|
||||||
|
}
|
||||||
|
func (*UnimplementedHealthServer) Watch(req *HealthCheckRequest, srv Health_WatchServer) error {
|
||||||
|
return status.Errorf(codes.Unimplemented, "method Watch not implemented")
|
||||||
|
}
|
||||||
|
|
||||||
func RegisterHealthServer(s *grpc.Server, srv HealthServer) {
|
func RegisterHealthServer(s *grpc.Server, srv HealthServer) {
|
||||||
s.RegisterService(&_Health_serviceDesc, srv)
|
s.RegisterService(&_Health_serviceDesc, srv)
|
||||||
}
|
}
|
||||||
@ -300,28 +341,3 @@ var _Health_serviceDesc = grpc.ServiceDesc{
|
|||||||
},
|
},
|
||||||
Metadata: "grpc/health/v1/health.proto",
|
Metadata: "grpc/health/v1/health.proto",
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { proto.RegisterFile("grpc/health/v1/health.proto", fileDescriptor_health_6b1a06aa67f91efd) }
|
|
||||||
|
|
||||||
var fileDescriptor_health_6b1a06aa67f91efd = []byte{
|
|
||||||
// 297 bytes of a gzipped FileDescriptorProto
|
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4e, 0x2f, 0x2a, 0x48,
|
|
||||||
0xd6, 0xcf, 0x48, 0x4d, 0xcc, 0x29, 0xc9, 0xd0, 0x2f, 0x33, 0x84, 0xb2, 0xf4, 0x0a, 0x8a, 0xf2,
|
|
||||||
0x4b, 0xf2, 0x85, 0xf8, 0x40, 0x92, 0x7a, 0x50, 0xa1, 0x32, 0x43, 0x25, 0x3d, 0x2e, 0x21, 0x0f,
|
|
||||||
0x30, 0xc7, 0x39, 0x23, 0x35, 0x39, 0x3b, 0x28, 0xb5, 0xb0, 0x34, 0xb5, 0xb8, 0x44, 0x48, 0x82,
|
|
||||||
0x8b, 0xbd, 0x38, 0xb5, 0xa8, 0x2c, 0x33, 0x39, 0x55, 0x82, 0x51, 0x81, 0x51, 0x83, 0x33, 0x08,
|
|
||||||
0xc6, 0x55, 0xda, 0xc8, 0xc8, 0x25, 0x8c, 0xa2, 0xa1, 0xb8, 0x20, 0x3f, 0xaf, 0x38, 0x55, 0xc8,
|
|
||||||
0x93, 0x8b, 0xad, 0xb8, 0x24, 0xb1, 0xa4, 0xb4, 0x18, 0xac, 0x81, 0xcf, 0xc8, 0x50, 0x0f, 0xd5,
|
|
||||||
0x22, 0x3d, 0x2c, 0x9a, 0xf4, 0x82, 0x41, 0x86, 0xe6, 0xa5, 0x07, 0x83, 0x35, 0x06, 0x41, 0x0d,
|
|
||||||
0x50, 0xf2, 0xe7, 0xe2, 0x45, 0x91, 0x10, 0xe2, 0xe6, 0x62, 0x0f, 0xf5, 0xf3, 0xf6, 0xf3, 0x0f,
|
|
||||||
0xf7, 0x13, 0x60, 0x00, 0x71, 0x82, 0x5d, 0x83, 0xc2, 0x3c, 0xfd, 0xdc, 0x05, 0x18, 0x85, 0xf8,
|
|
||||||
0xb9, 0xb8, 0xfd, 0xfc, 0x43, 0xe2, 0x61, 0x02, 0x4c, 0x42, 0xc2, 0x5c, 0xfc, 0x60, 0x8e, 0xb3,
|
|
||||||
0x6b, 0x3c, 0x4c, 0x0b, 0xb3, 0xd1, 0x3a, 0x46, 0x2e, 0x36, 0x88, 0xf5, 0x42, 0x01, 0x5c, 0xac,
|
|
||||||
0x60, 0x27, 0x08, 0x29, 0xe1, 0x75, 0x1f, 0x38, 0x14, 0xa4, 0x94, 0x89, 0xf0, 0x83, 0x50, 0x10,
|
|
||||||
0x17, 0x6b, 0x78, 0x62, 0x49, 0x72, 0x06, 0xd5, 0x4c, 0x34, 0x60, 0x74, 0x4a, 0xe4, 0x12, 0xcc,
|
|
||||||
0xcc, 0x47, 0x53, 0xea, 0xc4, 0x0d, 0x51, 0x1b, 0x00, 0x8a, 0xc6, 0x00, 0xc6, 0x28, 0x9d, 0xf4,
|
|
||||||
0xfc, 0xfc, 0xf4, 0x9c, 0x54, 0xbd, 0xf4, 0xfc, 0x9c, 0xc4, 0xbc, 0x74, 0xbd, 0xfc, 0xa2, 0x74,
|
|
||||||
0x7d, 0xe4, 0x78, 0x07, 0xb1, 0xe3, 0x21, 0xec, 0xf8, 0x32, 0xc3, 0x55, 0x4c, 0x7c, 0xee, 0x20,
|
|
||||||
0xd3, 0x20, 0x46, 0xe8, 0x85, 0x19, 0x26, 0xb1, 0x81, 0x93, 0x83, 0x31, 0x20, 0x00, 0x00, 0xff,
|
|
||||||
0xff, 0x12, 0x7d, 0x96, 0xcb, 0x2d, 0x02, 0x00, 0x00,
|
|
||||||
}
|
|
||||||
|
12
vendor/google.golang.org/grpc/internal/transport/controlbuf.go
generated
vendored
12
vendor/google.golang.org/grpc/internal/transport/controlbuf.go
generated
vendored
@ -107,8 +107,8 @@ func (*registerStream) isTransportResponseFrame() bool { return false }
|
|||||||
type headerFrame struct {
|
type headerFrame struct {
|
||||||
streamID uint32
|
streamID uint32
|
||||||
hf []hpack.HeaderField
|
hf []hpack.HeaderField
|
||||||
endStream bool // Valid on server side.
|
endStream bool // Valid on server side.
|
||||||
initStream func(uint32) (bool, error) // Used only on the client side.
|
initStream func(uint32) error // Used only on the client side.
|
||||||
onWrite func()
|
onWrite func()
|
||||||
wq *writeQuota // write quota for the stream created.
|
wq *writeQuota // write quota for the stream created.
|
||||||
cleanup *cleanupStream // Valid on the server side.
|
cleanup *cleanupStream // Valid on the server side.
|
||||||
@ -637,21 +637,17 @@ func (l *loopyWriter) headerHandler(h *headerFrame) error {
|
|||||||
|
|
||||||
func (l *loopyWriter) originateStream(str *outStream) error {
|
func (l *loopyWriter) originateStream(str *outStream) error {
|
||||||
hdr := str.itl.dequeue().(*headerFrame)
|
hdr := str.itl.dequeue().(*headerFrame)
|
||||||
sendPing, err := hdr.initStream(str.id)
|
if err := hdr.initStream(str.id); err != nil {
|
||||||
if err != nil {
|
|
||||||
if err == ErrConnClosing {
|
if err == ErrConnClosing {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// Other errors(errStreamDrain) need not close transport.
|
// Other errors(errStreamDrain) need not close transport.
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
if err = l.writeHeader(str.id, hdr.endStream, hdr.hf, hdr.onWrite); err != nil {
|
if err := l.writeHeader(str.id, hdr.endStream, hdr.hf, hdr.onWrite); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
l.estdStreams[str.id] = str
|
l.estdStreams[str.id] = str
|
||||||
if sendPing {
|
|
||||||
return l.pingHandler(&ping{data: [8]byte{}})
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
105
vendor/google.golang.org/grpc/internal/transport/http2_client.go
generated
vendored
105
vendor/google.golang.org/grpc/internal/transport/http2_client.go
generated
vendored
@ -62,8 +62,6 @@ type http2Client struct {
|
|||||||
// goAway is closed to notify the upper layer (i.e., addrConn.transportMonitor)
|
// goAway is closed to notify the upper layer (i.e., addrConn.transportMonitor)
|
||||||
// that the server sent GoAway on this transport.
|
// that the server sent GoAway on this transport.
|
||||||
goAway chan struct{}
|
goAway chan struct{}
|
||||||
// awakenKeepalive is used to wake up keepalive when after it has gone dormant.
|
|
||||||
awakenKeepalive chan struct{}
|
|
||||||
|
|
||||||
framer *framer
|
framer *framer
|
||||||
// controlBuf delivers all the control related tasks (e.g., window
|
// controlBuf delivers all the control related tasks (e.g., window
|
||||||
@ -110,6 +108,16 @@ type http2Client struct {
|
|||||||
// goAwayReason records the http2.ErrCode and debug data received with the
|
// goAwayReason records the http2.ErrCode and debug data received with the
|
||||||
// GoAway frame.
|
// GoAway frame.
|
||||||
goAwayReason GoAwayReason
|
goAwayReason GoAwayReason
|
||||||
|
// A condition variable used to signal when the keepalive goroutine should
|
||||||
|
// go dormant. The condition for dormancy is based on the number of active
|
||||||
|
// streams and the `PermitWithoutStream` keepalive client parameter. And
|
||||||
|
// since the number of active streams is guarded by the above mutex, we use
|
||||||
|
// the same for this condition variable as well.
|
||||||
|
kpDormancyCond *sync.Cond
|
||||||
|
// A boolean to track whether the keepalive goroutine is dormant or not.
|
||||||
|
// This is checked before attempting to signal the above condition
|
||||||
|
// variable.
|
||||||
|
kpDormant bool
|
||||||
|
|
||||||
// Fields below are for channelz metric collection.
|
// Fields below are for channelz metric collection.
|
||||||
channelzID int64 // channelz unique identification number
|
channelzID int64 // channelz unique identification number
|
||||||
@ -232,7 +240,6 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr TargetInfo, opts Conne
|
|||||||
readerDone: make(chan struct{}),
|
readerDone: make(chan struct{}),
|
||||||
writerDone: make(chan struct{}),
|
writerDone: make(chan struct{}),
|
||||||
goAway: make(chan struct{}),
|
goAway: make(chan struct{}),
|
||||||
awakenKeepalive: make(chan struct{}, 1),
|
|
||||||
framer: newFramer(conn, writeBufSize, readBufSize, maxHeaderListSize),
|
framer: newFramer(conn, writeBufSize, readBufSize, maxHeaderListSize),
|
||||||
fc: &trInFlow{limit: uint32(icwz)},
|
fc: &trInFlow{limit: uint32(icwz)},
|
||||||
scheme: scheme,
|
scheme: scheme,
|
||||||
@ -264,9 +271,6 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr TargetInfo, opts Conne
|
|||||||
updateFlowControl: t.updateFlowControl,
|
updateFlowControl: t.updateFlowControl,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Make sure awakenKeepalive can't be written upon.
|
|
||||||
// keepalive routine will make it writable, if need be.
|
|
||||||
t.awakenKeepalive <- struct{}{}
|
|
||||||
if t.statsHandler != nil {
|
if t.statsHandler != nil {
|
||||||
t.ctx = t.statsHandler.TagConn(t.ctx, &stats.ConnTagInfo{
|
t.ctx = t.statsHandler.TagConn(t.ctx, &stats.ConnTagInfo{
|
||||||
RemoteAddr: t.remoteAddr,
|
RemoteAddr: t.remoteAddr,
|
||||||
@ -281,6 +285,7 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr TargetInfo, opts Conne
|
|||||||
t.channelzID = channelz.RegisterNormalSocket(t, opts.ChannelzParentID, fmt.Sprintf("%s -> %s", t.localAddr, t.remoteAddr))
|
t.channelzID = channelz.RegisterNormalSocket(t, opts.ChannelzParentID, fmt.Sprintf("%s -> %s", t.localAddr, t.remoteAddr))
|
||||||
}
|
}
|
||||||
if t.keepaliveEnabled {
|
if t.keepaliveEnabled {
|
||||||
|
t.kpDormancyCond = sync.NewCond(&t.mu)
|
||||||
go t.keepalive()
|
go t.keepalive()
|
||||||
}
|
}
|
||||||
// Start the reader goroutine for incoming message. Each transport has
|
// Start the reader goroutine for incoming message. Each transport has
|
||||||
@ -564,7 +569,7 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea
|
|||||||
hdr := &headerFrame{
|
hdr := &headerFrame{
|
||||||
hf: headerFields,
|
hf: headerFields,
|
||||||
endStream: false,
|
endStream: false,
|
||||||
initStream: func(id uint32) (bool, error) {
|
initStream: func(id uint32) error {
|
||||||
t.mu.Lock()
|
t.mu.Lock()
|
||||||
if state := t.state; state != reachable {
|
if state := t.state; state != reachable {
|
||||||
t.mu.Unlock()
|
t.mu.Unlock()
|
||||||
@ -574,29 +579,19 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea
|
|||||||
err = ErrConnClosing
|
err = ErrConnClosing
|
||||||
}
|
}
|
||||||
cleanup(err)
|
cleanup(err)
|
||||||
return false, err
|
return err
|
||||||
}
|
}
|
||||||
t.activeStreams[id] = s
|
t.activeStreams[id] = s
|
||||||
if channelz.IsOn() {
|
if channelz.IsOn() {
|
||||||
atomic.AddInt64(&t.czData.streamsStarted, 1)
|
atomic.AddInt64(&t.czData.streamsStarted, 1)
|
||||||
atomic.StoreInt64(&t.czData.lastStreamCreatedTime, time.Now().UnixNano())
|
atomic.StoreInt64(&t.czData.lastStreamCreatedTime, time.Now().UnixNano())
|
||||||
}
|
}
|
||||||
var sendPing bool
|
// If the keepalive goroutine has gone dormant, wake it up.
|
||||||
// If the number of active streams change from 0 to 1, then check if keepalive
|
if t.kpDormant {
|
||||||
// has gone dormant. If so, wake it up.
|
t.kpDormancyCond.Signal()
|
||||||
if len(t.activeStreams) == 1 && t.keepaliveEnabled {
|
|
||||||
select {
|
|
||||||
case t.awakenKeepalive <- struct{}{}:
|
|
||||||
sendPing = true
|
|
||||||
// Fill the awakenKeepalive channel again as this channel must be
|
|
||||||
// kept non-writable except at the point that the keepalive()
|
|
||||||
// goroutine is waiting either to be awaken or shutdown.
|
|
||||||
t.awakenKeepalive <- struct{}{}
|
|
||||||
default:
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
t.mu.Unlock()
|
t.mu.Unlock()
|
||||||
return sendPing, nil
|
return nil
|
||||||
},
|
},
|
||||||
onOrphaned: cleanup,
|
onOrphaned: cleanup,
|
||||||
wq: s.wq,
|
wq: s.wq,
|
||||||
@ -778,6 +773,11 @@ func (t *http2Client) Close() error {
|
|||||||
t.state = closing
|
t.state = closing
|
||||||
streams := t.activeStreams
|
streams := t.activeStreams
|
||||||
t.activeStreams = nil
|
t.activeStreams = nil
|
||||||
|
if t.kpDormant {
|
||||||
|
// If the keepalive goroutine is blocked on this condition variable, we
|
||||||
|
// should unblock it so that the goroutine eventually exits.
|
||||||
|
t.kpDormancyCond.Signal()
|
||||||
|
}
|
||||||
t.mu.Unlock()
|
t.mu.Unlock()
|
||||||
t.controlBuf.finish()
|
t.controlBuf.finish()
|
||||||
t.cancel()
|
t.cancel()
|
||||||
@ -853,11 +853,11 @@ func (t *http2Client) Write(s *Stream, hdr []byte, data []byte, opts *Options) e
|
|||||||
return t.controlBuf.put(df)
|
return t.controlBuf.put(df)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *http2Client) getStream(f http2.Frame) (*Stream, bool) {
|
func (t *http2Client) getStream(f http2.Frame) *Stream {
|
||||||
t.mu.Lock()
|
t.mu.Lock()
|
||||||
defer t.mu.Unlock()
|
s := t.activeStreams[f.Header().StreamID]
|
||||||
s, ok := t.activeStreams[f.Header().StreamID]
|
t.mu.Unlock()
|
||||||
return s, ok
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
// adjustWindow sends out extra window update over the initial window size
|
// adjustWindow sends out extra window update over the initial window size
|
||||||
@ -937,8 +937,8 @@ func (t *http2Client) handleData(f *http2.DataFrame) {
|
|||||||
t.controlBuf.put(bdpPing)
|
t.controlBuf.put(bdpPing)
|
||||||
}
|
}
|
||||||
// Select the right stream to dispatch.
|
// Select the right stream to dispatch.
|
||||||
s, ok := t.getStream(f)
|
s := t.getStream(f)
|
||||||
if !ok {
|
if s == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if size > 0 {
|
if size > 0 {
|
||||||
@ -969,8 +969,8 @@ func (t *http2Client) handleData(f *http2.DataFrame) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (t *http2Client) handleRSTStream(f *http2.RSTStreamFrame) {
|
func (t *http2Client) handleRSTStream(f *http2.RSTStreamFrame) {
|
||||||
s, ok := t.getStream(f)
|
s := t.getStream(f)
|
||||||
if !ok {
|
if s == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if f.ErrCode == http2.ErrCodeRefusedStream {
|
if f.ErrCode == http2.ErrCodeRefusedStream {
|
||||||
@ -1147,8 +1147,8 @@ func (t *http2Client) handleWindowUpdate(f *http2.WindowUpdateFrame) {
|
|||||||
|
|
||||||
// operateHeaders takes action on the decoded headers.
|
// operateHeaders takes action on the decoded headers.
|
||||||
func (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) {
|
func (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) {
|
||||||
s, ok := t.getStream(frame)
|
s := t.getStream(frame)
|
||||||
if !ok {
|
if s == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
endStream := frame.StreamEnded()
|
endStream := frame.StreamEnded()
|
||||||
@ -1303,29 +1303,32 @@ func (t *http2Client) keepalive() {
|
|||||||
timer.Reset(t.kp.Time)
|
timer.Reset(t.kp.Time)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
// Check if keepalive should go dormant.
|
|
||||||
t.mu.Lock()
|
t.mu.Lock()
|
||||||
if len(t.activeStreams) < 1 && !t.kp.PermitWithoutStream {
|
if t.state == closing {
|
||||||
// Make awakenKeepalive writable.
|
// If the transport is closing, we should exit from the
|
||||||
<-t.awakenKeepalive
|
// keepalive goroutine here. If not, we could have a race
|
||||||
|
// between the call to Signal() from Close() and the call to
|
||||||
|
// Wait() here, whereby the keepalive goroutine ends up
|
||||||
|
// blocking on the condition variable which will never be
|
||||||
|
// signalled again.
|
||||||
t.mu.Unlock()
|
t.mu.Unlock()
|
||||||
select {
|
return
|
||||||
case <-t.awakenKeepalive:
|
|
||||||
// If the control gets here a ping has been sent
|
|
||||||
// need to reset the timer with keepalive.Timeout.
|
|
||||||
case <-t.ctx.Done():
|
|
||||||
return
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
t.mu.Unlock()
|
|
||||||
if channelz.IsOn() {
|
|
||||||
atomic.AddInt64(&t.czData.kpCount, 1)
|
|
||||||
}
|
|
||||||
// Send ping.
|
|
||||||
t.controlBuf.put(p)
|
|
||||||
}
|
}
|
||||||
|
if len(t.activeStreams) < 1 && !t.kp.PermitWithoutStream {
|
||||||
|
t.kpDormant = true
|
||||||
|
t.kpDormancyCond.Wait()
|
||||||
|
}
|
||||||
|
t.kpDormant = false
|
||||||
|
t.mu.Unlock()
|
||||||
|
|
||||||
|
if channelz.IsOn() {
|
||||||
|
atomic.AddInt64(&t.czData.kpCount, 1)
|
||||||
|
}
|
||||||
|
// We get here either because we were dormant and a new stream was
|
||||||
|
// created which unblocked the Wait() call, or because the
|
||||||
|
// keepalive timer expired. In both cases, we need to send a ping.
|
||||||
|
t.controlBuf.put(p)
|
||||||
|
|
||||||
// By the time control gets here a ping has been sent one way or the other.
|
|
||||||
timer.Reset(t.kp.Timeout)
|
timer.Reset(t.kp.Timeout)
|
||||||
select {
|
select {
|
||||||
case <-timer.C:
|
case <-timer.C:
|
||||||
|
30
vendor/google.golang.org/grpc/internal/transport/http2_server.go
generated
vendored
30
vendor/google.golang.org/grpc/internal/transport/http2_server.go
generated
vendored
@ -65,8 +65,7 @@ var (
|
|||||||
// http2Server implements the ServerTransport interface with HTTP2.
|
// http2Server implements the ServerTransport interface with HTTP2.
|
||||||
type http2Server struct {
|
type http2Server struct {
|
||||||
ctx context.Context
|
ctx context.Context
|
||||||
ctxDone <-chan struct{} // Cache the context.Done() chan
|
done chan struct{}
|
||||||
cancel context.CancelFunc
|
|
||||||
conn net.Conn
|
conn net.Conn
|
||||||
loopy *loopyWriter
|
loopy *loopyWriter
|
||||||
readerDone chan struct{} // sync point to enable testing.
|
readerDone chan struct{} // sync point to enable testing.
|
||||||
@ -206,11 +205,10 @@ func newHTTP2Server(conn net.Conn, config *ServerConfig) (_ ServerTransport, err
|
|||||||
if kep.MinTime == 0 {
|
if kep.MinTime == 0 {
|
||||||
kep.MinTime = defaultKeepalivePolicyMinTime
|
kep.MinTime = defaultKeepalivePolicyMinTime
|
||||||
}
|
}
|
||||||
ctx, cancel := context.WithCancel(context.Background())
|
done := make(chan struct{})
|
||||||
t := &http2Server{
|
t := &http2Server{
|
||||||
ctx: ctx,
|
ctx: context.Background(),
|
||||||
cancel: cancel,
|
done: done,
|
||||||
ctxDone: ctx.Done(),
|
|
||||||
conn: conn,
|
conn: conn,
|
||||||
remoteAddr: conn.RemoteAddr(),
|
remoteAddr: conn.RemoteAddr(),
|
||||||
localAddr: conn.LocalAddr(),
|
localAddr: conn.LocalAddr(),
|
||||||
@ -231,7 +229,7 @@ func newHTTP2Server(conn net.Conn, config *ServerConfig) (_ ServerTransport, err
|
|||||||
czData: new(channelzData),
|
czData: new(channelzData),
|
||||||
bufferPool: newBufferPool(),
|
bufferPool: newBufferPool(),
|
||||||
}
|
}
|
||||||
t.controlBuf = newControlBuffer(t.ctxDone)
|
t.controlBuf = newControlBuffer(t.done)
|
||||||
if dynamicWindow {
|
if dynamicWindow {
|
||||||
t.bdpEst = &bdpEstimator{
|
t.bdpEst = &bdpEstimator{
|
||||||
bdp: initialWindowSize,
|
bdp: initialWindowSize,
|
||||||
@ -362,12 +360,14 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func(
|
|||||||
rstCode: http2.ErrCodeRefusedStream,
|
rstCode: http2.ErrCodeRefusedStream,
|
||||||
onWrite: func() {},
|
onWrite: func() {},
|
||||||
})
|
})
|
||||||
|
s.cancel()
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
t.mu.Lock()
|
t.mu.Lock()
|
||||||
if t.state != reachable {
|
if t.state != reachable {
|
||||||
t.mu.Unlock()
|
t.mu.Unlock()
|
||||||
|
s.cancel()
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if uint32(len(t.activeStreams)) >= t.maxStreams {
|
if uint32(len(t.activeStreams)) >= t.maxStreams {
|
||||||
@ -378,12 +378,14 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func(
|
|||||||
rstCode: http2.ErrCodeRefusedStream,
|
rstCode: http2.ErrCodeRefusedStream,
|
||||||
onWrite: func() {},
|
onWrite: func() {},
|
||||||
})
|
})
|
||||||
|
s.cancel()
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if streamID%2 != 1 || streamID <= t.maxStreamID {
|
if streamID%2 != 1 || streamID <= t.maxStreamID {
|
||||||
t.mu.Unlock()
|
t.mu.Unlock()
|
||||||
// illegal gRPC stream id.
|
// illegal gRPC stream id.
|
||||||
errorf("transport: http2Server.HandleStreams received an illegal stream id: %v", streamID)
|
errorf("transport: http2Server.HandleStreams received an illegal stream id: %v", streamID)
|
||||||
|
s.cancel()
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
t.maxStreamID = streamID
|
t.maxStreamID = streamID
|
||||||
@ -885,7 +887,7 @@ func (t *http2Server) Write(s *Stream, hdr []byte, data []byte, opts *Options) e
|
|||||||
// TODO(mmukhi, dfawley): Should the server write also return io.EOF?
|
// TODO(mmukhi, dfawley): Should the server write also return io.EOF?
|
||||||
s.cancel()
|
s.cancel()
|
||||||
select {
|
select {
|
||||||
case <-t.ctx.Done():
|
case <-t.done:
|
||||||
return ErrConnClosing
|
return ErrConnClosing
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
@ -907,7 +909,7 @@ func (t *http2Server) Write(s *Stream, hdr []byte, data []byte, opts *Options) e
|
|||||||
}
|
}
|
||||||
if err := s.wq.get(int32(len(hdr) + len(data))); err != nil {
|
if err := s.wq.get(int32(len(hdr) + len(data))); err != nil {
|
||||||
select {
|
select {
|
||||||
case <-t.ctx.Done():
|
case <-t.done:
|
||||||
return ErrConnClosing
|
return ErrConnClosing
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
@ -973,7 +975,7 @@ func (t *http2Server) keepalive() {
|
|||||||
t.Close()
|
t.Close()
|
||||||
// Resetting the timer so that the clean-up doesn't deadlock.
|
// Resetting the timer so that the clean-up doesn't deadlock.
|
||||||
maxAge.Reset(infinity)
|
maxAge.Reset(infinity)
|
||||||
case <-t.ctx.Done():
|
case <-t.done:
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
case <-keepalive.C:
|
case <-keepalive.C:
|
||||||
@ -995,7 +997,7 @@ func (t *http2Server) keepalive() {
|
|||||||
}
|
}
|
||||||
t.controlBuf.put(p)
|
t.controlBuf.put(p)
|
||||||
keepalive.Reset(t.kp.Timeout)
|
keepalive.Reset(t.kp.Timeout)
|
||||||
case <-t.ctx.Done():
|
case <-t.done:
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1015,7 +1017,7 @@ func (t *http2Server) Close() error {
|
|||||||
t.activeStreams = nil
|
t.activeStreams = nil
|
||||||
t.mu.Unlock()
|
t.mu.Unlock()
|
||||||
t.controlBuf.finish()
|
t.controlBuf.finish()
|
||||||
t.cancel()
|
close(t.done)
|
||||||
err := t.conn.Close()
|
err := t.conn.Close()
|
||||||
if channelz.IsOn() {
|
if channelz.IsOn() {
|
||||||
channelz.RemoveEntry(t.channelzID)
|
channelz.RemoveEntry(t.channelzID)
|
||||||
@ -1155,7 +1157,7 @@ func (t *http2Server) outgoingGoAwayHandler(g *goAway) (bool, error) {
|
|||||||
select {
|
select {
|
||||||
case <-t.drainChan:
|
case <-t.drainChan:
|
||||||
case <-timer.C:
|
case <-timer.C:
|
||||||
case <-t.ctx.Done():
|
case <-t.done:
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
t.controlBuf.put(&goAway{code: g.code, debugData: g.debugData})
|
t.controlBuf.put(&goAway{code: g.code, debugData: g.debugData})
|
||||||
@ -1205,7 +1207,7 @@ func (t *http2Server) getOutFlowWindow() int64 {
|
|||||||
select {
|
select {
|
||||||
case sz := <-resp:
|
case sz := <-resp:
|
||||||
return int64(sz)
|
return int64(sz)
|
||||||
case <-t.ctxDone:
|
case <-t.done:
|
||||||
return -1
|
return -1
|
||||||
case <-timer.C:
|
case <-timer.C:
|
||||||
return -2
|
return -2
|
||||||
|
8
vendor/google.golang.org/grpc/service_config.go
generated
vendored
8
vendor/google.golang.org/grpc/service_config.go
generated
vendored
@ -310,6 +310,14 @@ func parseServiceConfig(js string) (*ServiceConfig, error) {
|
|||||||
}
|
}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
if sc.lbConfig == nil {
|
||||||
|
// We had a loadBalancingConfig field but did not encounter a
|
||||||
|
// supported policy. The config is considered invalid in this
|
||||||
|
// case.
|
||||||
|
err := fmt.Errorf("invalid loadBalancingConfig: no supported policies found")
|
||||||
|
grpclog.Warningf(err.Error())
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if rsc.MethodConfig == nil {
|
if rsc.MethodConfig == nil {
|
||||||
|
2
vendor/google.golang.org/grpc/version.go
generated
vendored
2
vendor/google.golang.org/grpc/version.go
generated
vendored
@ -19,4 +19,4 @@
|
|||||||
package grpc
|
package grpc
|
||||||
|
|
||||||
// Version is the current grpc version.
|
// Version is the current grpc version.
|
||||||
const Version = "1.23.1"
|
const Version = "1.24.0"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user