Skip to content

Commit

Permalink
Make changes required to support 2.11.2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
radekg committed Feb 16, 2022
1 parent 3780f38 commit a54cbe1
Show file tree
Hide file tree
Showing 6 changed files with 64 additions and 24 deletions.
2 changes: 1 addition & 1 deletion client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -338,7 +338,7 @@ func (c *defaultYBClient) connectUnsafe() error {
return
}

if *masterRegistration.Role != ybApi.RaftPeerPB_LEADER {
if *masterRegistration.Role != ybApi.PeerRole_LEADER {
c.logger.Trace("master not leader",
"host-port", thisHostPort)
singleNodeClient.Close()
Expand Down
61 changes: 50 additions & 11 deletions client/services.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,36 +6,57 @@ import (
"github.com/radekg/yugabyte-db-go-client/utils"
ybApi "github.com/radekg/yugabyte-db-go-proto/v2/yb/api"
"google.golang.org/protobuf/reflect/protoreflect"
"google.golang.org/protobuf/types/descriptorpb"
)

func loadServiceDefinitions(registry ServiceRegistry) {
descriptors := []protoreflect.FileDescriptor{
ybApi.File_yb_cdc_cdc_consumer_proto,
ybApi.File_yb_cdc_cdc_service_proto,
ybApi.File_yb_common_common_net_proto,
ybApi.File_yb_common_common_types_proto,
ybApi.File_yb_common_common_proto,
ybApi.File_yb_common_pgsql_protocol_proto,
ybApi.File_yb_common_redis_protocol_proto,
ybApi.File_yb_common_transaction_proto,
ybApi.File_yb_common_value_proto,
ybApi.File_yb_common_wire_protocol_proto,
ybApi.File_yb_consensus_consensus_metadata_proto,
ybApi.File_yb_consensus_consensus_types_proto,
ybApi.File_yb_consensus_consensus_proto,
ybApi.File_yb_consensus_log_proto,
ybApi.File_yb_docdb_docdb_proto,
ybApi.File_yb_encryption_encryption_proto,
ybApi.File_yb_fs_fs_proto,
ybApi.File_yb_master_catalog_entity_info_proto,
ybApi.File_yb_master_master_admin_proto,
ybApi.File_yb_master_master_backup_proto,
ybApi.File_yb_master_master_proto,
ybApi.File_yb_master_master_client_proto,
ybApi.File_yb_master_master_cluster_proto,
ybApi.File_yb_master_master_dcl_proto,
ybApi.File_yb_master_master_ddl_proto,
ybApi.File_yb_master_master_encryption_proto,
ybApi.File_yb_master_master_heartbeat_proto,
ybApi.File_yb_master_master_replication_proto,
ybApi.File_yb_master_master_types_proto,
ybApi.File_yb_rocksdb_db_version_edit_proto,
ybApi.File_yb_rpc_any_proto,
ybApi.File_yb_rpc_lightweight_message_proto,
ybApi.File_yb_rpc_rpc_header_proto,
ybApi.File_yb_rpc_rpc_introspection_proto,
ybApi.File_yb_rpc_service_proto,
ybApi.File_yb_server_server_base_proto,
ybApi.File_yb_tablet_operations_proto,
ybApi.File_yb_tablet_tablet_metadata_proto,
ybApi.File_yb_tablet_tablet_types_proto,
ybApi.File_yb_tablet_tablet_proto,
ybApi.File_yb_tserver_backup_proto,
ybApi.File_yb_tserver_remote_bootstrap_proto,
ybApi.File_yb_tserver_tserver_admin_proto,
ybApi.File_yb_tserver_tserver_forward_service_proto,
ybApi.File_yb_tserver_tserver_proto,
ybApi.File_yb_tserver_tserver_service_proto,
ybApi.File_yb_util_encryption_proto,
ybApi.File_yb_tserver_tserver_types_proto,
ybApi.File_yb_util_histogram_proto,
ybApi.File_yb_util_opid_proto,
ybApi.File_yb_util_pb_util_proto,
Expand All @@ -50,26 +71,44 @@ func loadServiceDefinitions(registry ServiceRegistry) {
func loadServiceDescriptor(registry ServiceRegistry, descriptor protoreflect.FileDescriptor) {
services := descriptor.Services()
for i := 0; i < services.Len(); i = i + 1 {

svcDescriptor := services.Get(i)

// discover the service name:
// in v2.11.2.0, the protobuf service may be optionally annotated
// with a custom option, for example:
// master/master_cluster.proto
// ---------------------------
//
// service MasterCluster {
// option (yb.rpc.custom_service_name) = "yb.master.MasterService";
//
// ---------------------------
// Here we look up if that option exists, if yes
// we use it instead of the default service name.

svcName := string(svcDescriptor.FullName())
if opts := svcDescriptor.Options(); opts != nil {
if topts, ok := opts.(*descriptorpb.ServiceOptions); ok && topts != nil {
topts.ProtoReflect().Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {
if string(fd.FullName()) == "yb.rpc.custom_service_name" {
svcName = v.String()
}
return true
})
}
}

methods := svcDescriptor.Methods()
for j := 0; j < methods.Len(); j = j + 1 {
method := methods.Get(j)
methodNameParts := strings.Split(string(method.FullName()), ".")
svcName := strings.Join(methodNameParts[0:len(methodNameParts)-1], ".")
opName := methodNameParts[len(methodNameParts)-1]
registry.Register(string(method.Input().FullName()), opName, svcName)
}
}
}

func namesToString(names ...protoreflect.Name) string {
s := []string{}
for _, n := range names {
s = append(s, string(n))
}
return strings.Join(s, ".")
}

// ServiceInfo contains the service and method names used
// by the request header.
type ServiceInfo interface {
Expand Down
2 changes: 1 addition & 1 deletion client/services_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ func TestServiceDescribe(t *testing.T) {
svcInfo := svcRegistry.Get(payload)
assert.NotNil(t, svcInfo)
assert.Equal(t, svcInfo.Method(), "ListMasters")
assert.Equal(t, svcInfo.Service(), "yb.master.MasterService")
assert.Equal(t, "yb.master.MasterService", svcInfo.Service())
})

t.Run("it=handles yb.server.GenericService payloads", func(tt *testing.T) {
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ require (
github.com/lib/pq v1.9.0
// dockertest/v3 used in tests:
github.com/ory/dockertest/v3 v3.8.1
github.com/radekg/yugabyte-db-go-proto/v2 v2.11.0-2
github.com/radekg/yugabyte-db-go-proto/v2 v2.11.2
github.com/stretchr/testify v1.7.0
google.golang.org/protobuf v1.27.1
)
19 changes: 10 additions & 9 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,21 @@ github.com/Microsoft/go-winio v0.5.1 h1:aPJp2QD7OOrhO5tQXqQoGSJc+DjDtWTGLOmNyAm6
github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84=
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw=
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA=
github.com/cenkalti/backoff/v4 v4.1.2 h1:6Yo7N8UP2K6LWZnW94DLVSSrbobcWdVzAYOisuDPIFo=
github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M=
github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ=
github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6 h1:NmTXa/uVnDyp0TY5MKi197+3HWcnYWfnHGyaFthlnGw=
github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y=
Expand All @@ -43,7 +45,7 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ=
github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
Expand Down Expand Up @@ -120,16 +122,15 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/radekg/yugabyte-db-go-proto/v2 v2.11.0-2 h1:T3KihixH4j9WhSmU5VAK4XNLexhjJ8QOu2OQCy5Qg+0=
github.com/radekg/yugabyte-db-go-proto/v2 v2.11.0-2/go.mod h1:CT2eg+ZbU1T/0rg19EchSuZxWdAeS9ciiiP6aWc0/aI=
github.com/radekg/yugabyte-db-go-proto/v2 v2.11.2 h1:isXDJeDl2goTZPlkC8999x9XgL9PS481aaEosGKEvbc=
github.com/radekg/yugabyte-db-go-proto/v2 v2.11.2/go.mod h1:kgSW9MzHNqCkyRKjQ+dEWwEAMc4djhDWD2X07+JFmMk=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
Expand Down Expand Up @@ -226,8 +227,8 @@ google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQ
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
google.golang.org/grpc v1.40.0 h1:AGJ0Ih4mHjSeibYkFGh1dD9KJ/eOtZ93I6hoHhukQ5Q=
google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
google.golang.org/grpc v1.44.0 h1:weqSxi/TMs1SqFRMHCtBgXRs8k3X39QIDEZ0pRcttUg=
google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
Expand Down
2 changes: 1 addition & 1 deletion testutils/common/configs.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const (
// DefaultYugabyteDBMasterImageName specifies the default Docker image name used in tests.
DefaultYugabyteDBMasterImageName = "yugabytedb/yugabyte"
// DefaultYugabyteDBImageVersion specifies the default Docker image version used in tests.
DefaultYugabyteDBImageVersion = "2.11.0.0-b7"
DefaultYugabyteDBImageVersion = "2.11.2.0-b89"
// DefaultYugabyteDBContainerUser specifies the default Docker container user.
DefaultYugabyteDBContainerUser = "yugabyte"
// DefaultReplicationFactor specifies the default replication factor.
Expand Down

0 comments on commit a54cbe1

Please sign in to comment.