Skip to content

Commit 3d4066a

Browse files
authored
Merge pull request #20587 from solongordon/check-version
core: check version compatibility on RPC handshake
2 parents 8c7ed16 + 81254fc commit 3d4066a

33 files changed

+497
-137
lines changed

pkg/acceptance/cluster/dockercluster.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ import (
4747
roachClient "github.com/cockroachdb/cockroach/pkg/internal/client"
4848
"github.com/cockroachdb/cockroach/pkg/rpc"
4949
"github.com/cockroachdb/cockroach/pkg/security"
50+
"github.com/cockroachdb/cockroach/pkg/settings/cluster"
5051
"github.com/cockroachdb/cockroach/pkg/util/hlc"
5152
"github.com/cockroachdb/cockroach/pkg/util/log"
5253
"github.com/cockroachdb/cockroach/pkg/util/log/logflags"
@@ -811,7 +812,7 @@ func (l *DockerCluster) NewClient(ctx context.Context, i int) (*roachClient.DB,
811812
rpcContext := rpc.NewContext(log.AmbientContext{Tracer: tracing.NewTracer()}, &base.Config{
812813
User: security.NodeUser,
813814
SSLCertsDir: l.CertsDir,
814-
}, clock, l.stopper)
815+
}, clock, l.stopper, &cluster.MakeTestingClusterSettings().Version)
815816
conn, err := rpcContext.GRPCDial(l.Nodes[i].Addr(ctx, DefaultTCP).String()).Connect(ctx)
816817
if err != nil {
817818
return nil, err

pkg/acceptance/localcluster/cluster.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ import (
4646
"github.com/cockroachdb/cockroach/pkg/rpc"
4747
"github.com/cockroachdb/cockroach/pkg/security"
4848
"github.com/cockroachdb/cockroach/pkg/server/serverpb"
49+
"github.com/cockroachdb/cockroach/pkg/settings/cluster"
4950
"github.com/cockroachdb/cockroach/pkg/util/hlc"
5051
"github.com/cockroachdb/cockroach/pkg/util/log"
5152
"github.com/cockroachdb/cockroach/pkg/util/protoutil"
@@ -269,7 +270,7 @@ func (c *Cluster) makeNode(ctx context.Context, nodeIdx int, cfg NodeConfig) (*N
269270
Insecure: true,
270271
}
271272
rpcCtx := rpc.NewContext(log.AmbientContext{Tracer: tracing.NewTracer()}, baseCtx,
272-
hlc.NewClock(hlc.UnixNano, 0), c.stopper)
273+
hlc.NewClock(hlc.UnixNano, 0), c.stopper, &cluster.MakeTestingClusterSettings().Version)
273274

274275
n := &Node{
275276
Cfg: cfg,
@@ -514,7 +515,7 @@ func (n *Node) Client() *client.DB {
514515
return existingClient
515516
}
516517

517-
conn, err := n.rpcCtx.GRPCDial(n.RPCAddr()).Connect(context.Background())
518+
conn, err := n.rpcCtx.GRPCDialRaw(n.RPCAddr())
518519
if err != nil {
519520
log.Fatalf(context.Background(), "failed to initialize KV client: %s", err)
520521
}
@@ -531,7 +532,7 @@ func (n *Node) StatusClient() serverpb.StatusClient {
531532
return existingClient
532533
}
533534

534-
conn, err := n.rpcCtx.GRPCDial(n.RPCAddr()).Connect(context.Background())
535+
conn, err := n.rpcCtx.GRPCDialRaw(n.RPCAddr())
535536
if err != nil {
536537
log.Fatalf(context.Background(), "failed to initialize status client: %s", err)
537538
}

pkg/acceptance/util_farmer.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import (
3131
"github.com/cockroachdb/cockroach/pkg/base"
3232
"github.com/cockroachdb/cockroach/pkg/rpc"
3333
"github.com/cockroachdb/cockroach/pkg/security"
34+
cl "github.com/cockroachdb/cockroach/pkg/settings/cluster"
3435
"github.com/cockroachdb/cockroach/pkg/util/hlc"
3536
"github.com/cockroachdb/cockroach/pkg/util/log"
3637
"github.com/cockroachdb/cockroach/pkg/util/stop"
@@ -153,7 +154,7 @@ func MakeFarmer(t testing.TB, prefix string, stopper *stop.Stopper) *terrafarm.F
153154
// Set a bogus address, to be used by the clock skew checks as the ID of
154155
// this "node". We can't leave it blank.
155156
Addr: "acceptance test client",
156-
}, clientClock, stopper)
157+
}, clientClock, stopper, &cl.MakeTestingClusterSettings().Version)
157158
rpcContext.HeartbeatCB = func() {
158159
if err := rpcContext.RemoteClocks.VerifyClockOffset(context.Background()); err != nil {
159160
t.Fatal(err)

pkg/cli/start.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -938,6 +938,7 @@ func getClientGRPCConn(ctx context.Context) (*grpc.ClientConn, *hlc.Clock, func(
938938
serverCfg.Config,
939939
clock,
940940
stopper,
941+
&serverCfg.Settings.Version,
941942
)
942943
addr, err := addrWithDefaultHost(serverCfg.AdvertiseAddr)
943944
if err != nil {

pkg/gossip/client_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"github.com/cockroachdb/cockroach/pkg/gossip/resolver"
3030
"github.com/cockroachdb/cockroach/pkg/roachpb"
3131
"github.com/cockroachdb/cockroach/pkg/rpc"
32+
"github.com/cockroachdb/cockroach/pkg/settings/cluster"
3233
"github.com/cockroachdb/cockroach/pkg/testutils"
3334
"github.com/cockroachdb/cockroach/pkg/util"
3435
"github.com/cockroachdb/cockroach/pkg/util/hlc"
@@ -53,6 +54,7 @@ func newInsecureRPCContext(stopper *stop.Stopper) *rpc.Context {
5354
&base.Config{Insecure: true},
5455
hlc.NewClock(hlc.UnixNano, time.Nanosecond),
5556
stopper,
57+
&cluster.MakeTestingClusterSettings().Version,
5658
)
5759
}
5860

pkg/gossip/simulation/network.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
"github.com/cockroachdb/cockroach/pkg/gossip/resolver"
2929
"github.com/cockroachdb/cockroach/pkg/roachpb"
3030
"github.com/cockroachdb/cockroach/pkg/rpc"
31+
"github.com/cockroachdb/cockroach/pkg/settings/cluster"
3132
"github.com/cockroachdb/cockroach/pkg/util"
3233
"github.com/cockroachdb/cockroach/pkg/util/encoding"
3334
"github.com/cockroachdb/cockroach/pkg/util/hlc"
@@ -77,6 +78,7 @@ func NewNetwork(stopper *stop.Stopper, nodeCount int, createResolvers bool) *Net
7778
&base.Config{Insecure: true},
7879
hlc.NewClock(hlc.UnixNano, time.Nanosecond),
7980
n.Stopper,
81+
&cluster.MakeTestingClusterSettings().Version,
8082
)
8183
var err error
8284
n.tlsConfig, err = n.rpcContext.GetServerTLSConfig()

pkg/internal/client/client_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,9 @@ func createTestClientForUser(
126126
}
127127
testutils.FillCerts(cfg)
128128

129-
rpcContext := rpc.NewContext(log.AmbientContext{Tracer: s.ClusterSettings().Tracer}, cfg, s.Clock(), s.Stopper())
129+
rpcContext := rpc.NewContext(
130+
log.AmbientContext{Tracer: s.ClusterSettings().Tracer}, cfg, s.Clock(), s.Stopper(),
131+
&s.ClusterSettings().Version)
130132
conn, err := rpcContext.GRPCDial(s.ServingAddr()).Connect(context.Background())
131133
if err != nil {
132134
t.Fatal(err)

pkg/kv/db_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,10 @@ func createTestClientForUser(
5757
ctx.User = user
5858
testutils.FillCerts(&ctx)
5959

60-
conn, err := rpc.NewContext(
60+
rpcContext := rpc.NewContext(
6161
log.AmbientContext{Tracer: s.ClusterSettings().Tracer}, &ctx, s.Clock(),
62-
s.Stopper()).GRPCDial(s.ServingAddr()).Connect(context.Background())
62+
s.Stopper(), &s.ClusterSettings().Version)
63+
conn, err := rpcContext.GRPCDial(s.ServingAddr()).Connect(context.Background())
6364
if err != nil {
6465
t.Fatal(err)
6566
}

pkg/kv/dist_sender_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import (
3333
"github.com/cockroachdb/cockroach/pkg/keys"
3434
"github.com/cockroachdb/cockroach/pkg/roachpb"
3535
"github.com/cockroachdb/cockroach/pkg/rpc"
36+
"github.com/cockroachdb/cockroach/pkg/settings/cluster"
3637
"github.com/cockroachdb/cockroach/pkg/storage/engine/enginepb"
3738
"github.com/cockroachdb/cockroach/pkg/testutils"
3839
"github.com/cockroachdb/cockroach/pkg/util"
@@ -686,6 +687,7 @@ func makeGossip(t *testing.T, stopper *stop.Stopper) (*gossip.Gossip, *hlc.Clock
686687
&base.Config{Insecure: true},
687688
clock,
688689
stopper,
690+
&cluster.MakeTestingClusterSettings().Version,
689691
)
690692
server := rpc.NewServer(rpcContext)
691693

pkg/kv/send_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525

2626
"github.com/cockroachdb/cockroach/pkg/roachpb"
2727
"github.com/cockroachdb/cockroach/pkg/rpc"
28+
"github.com/cockroachdb/cockroach/pkg/settings/cluster"
2829
"github.com/cockroachdb/cockroach/pkg/testutils"
2930
"github.com/cockroachdb/cockroach/pkg/util"
3031
"github.com/cockroachdb/cockroach/pkg/util/hlc"
@@ -59,6 +60,7 @@ func TestSendToOneClient(t *testing.T) {
5960
testutils.NewNodeTestBaseContext(),
6061
hlc.NewClock(hlc.UnixNano, time.Nanosecond),
6162
stopper,
63+
&cluster.MakeTestingClusterSettings().Version,
6264
)
6365
s := rpc.NewServer(rpcContext)
6466
roachpb.RegisterInternalServer(s, Node(0))
@@ -127,6 +129,7 @@ func TestComplexScenarios(t *testing.T) {
127129
testutils.NewNodeTestBaseContext(),
128130
hlc.NewClock(hlc.UnixNano, time.Nanosecond),
129131
stopper,
132+
&cluster.MakeTestingClusterSettings().Version,
130133
)
131134

132135
// TODO(bdarnell): the retryable flag is no longer used for RPC errors.

0 commit comments

Comments
 (0)