Skip to content

Commit 82fcf8d

Browse files
committed
Update etcdserver to support DowngradeVersionTest request
Signed-off-by: Benjamin Wang <benjamin.ahrtr@gmail.com>
1 parent 78047ed commit 82fcf8d

File tree

3 files changed

+34
-1
lines changed

3 files changed

+34
-1
lines changed

server/etcdserver/api/v3rpc/maintenance.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ type Alarmer interface {
5555

5656
type Downgrader interface {
5757
Downgrade(ctx context.Context, dr *pb.DowngradeRequest) (*pb.DowngradeResponse, error)
58+
DowngradeVersionTest(ctx context.Context, r *pb.DowngradeVersionTestRequest) (*pb.DowngradeVersionTestResponse, error)
5859
}
5960

6061
type LeaderTransferrer interface {
@@ -296,6 +297,16 @@ func (ms *maintenanceServer) Downgrade(ctx context.Context, r *pb.DowngradeReque
296297
return resp, nil
297298
}
298299

300+
func (ms *maintenanceServer) DowngradeVersionTest(ctx context.Context, r *pb.DowngradeVersionTestRequest) (*pb.DowngradeVersionTestResponse, error) {
301+
resp, err := ms.d.DowngradeVersionTest(ctx, r)
302+
if err != nil {
303+
return nil, togRPCError(err)
304+
}
305+
resp.Header = &pb.ResponseHeader{}
306+
ms.hdr.fill(resp.Header)
307+
return resp, nil
308+
}
309+
299310
type authMaintenanceServer struct {
300311
*maintenanceServer
301312
*AuthAdmin
@@ -355,3 +366,11 @@ func (ams *authMaintenanceServer) Downgrade(ctx context.Context, r *pb.Downgrade
355366

356367
return ams.maintenanceServer.Downgrade(ctx, r)
357368
}
369+
370+
func (ams *authMaintenanceServer) DowngradeVersionTest(ctx context.Context, r *pb.DowngradeVersionTestRequest) (*pb.DowngradeVersionTestResponse, error) {
371+
if err := ams.isPermitted(ctx); err != nil {
372+
return nil, togRPCError(err)
373+
}
374+
375+
return ams.maintenanceServer.DowngradeVersionTest(ctx, r)
376+
}

server/etcdserver/server.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2006,7 +2006,7 @@ func (s *EtcdServer) applyEntryNormal(e *raftpb.Entry, shouldApplyV3 membership.
20062006
}
20072007

20082008
func (s *EtcdServer) applyInternalRaftRequest(r *pb.InternalRaftRequest, shouldApplyV3 membership.ShouldApplyV3) *apply.Result {
2009-
if r.ClusterVersionSet == nil && r.ClusterMemberAttrSet == nil && r.DowngradeInfoSet == nil {
2009+
if r.ClusterVersionSet == nil && r.ClusterMemberAttrSet == nil && r.DowngradeInfoSet == nil && r.DowngradeVersionTest == nil {
20102010
if !shouldApplyV3 {
20112011
return nil
20122012
}
@@ -2029,6 +2029,10 @@ func (s *EtcdServer) applyInternalRaftRequest(r *pb.InternalRaftRequest, shouldA
20292029
case r.DowngradeInfoSet != nil:
20302030
op = "DowngradeInfoSet" // Implemented in 3.5.x
20312031
membershipApplier.DowngradeInfoSet(r.DowngradeInfoSet, shouldApplyV3)
2032+
case r.DowngradeVersionTest != nil:
2033+
op = "DowngradeVersionTest"
2034+
// do nothing, we are good as long as a WAL record
2035+
// has already been generated for this request.
20322036
default:
20332037
s.lg.Panic("not implemented apply", zap.Stringer("raft-request", r))
20342038
return nil

server/etcdserver/v3_server.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1044,6 +1044,16 @@ func (s *EtcdServer) downgradeEnable(ctx context.Context, r *pb.DowngradeRequest
10441044
return &resp, nil
10451045
}
10461046

1047+
// DowngradeVersionTest is for test only! We intentionally send
1048+
// a raft request so that a related WAL record can be generated.
1049+
func (s *EtcdServer) DowngradeVersionTest(ctx context.Context, r *pb.DowngradeVersionTestRequest) (*pb.DowngradeVersionTestResponse, error) {
1050+
resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{DowngradeVersionTest: r})
1051+
if err != nil {
1052+
return nil, err
1053+
}
1054+
return resp.(*pb.DowngradeVersionTestResponse), nil
1055+
}
1056+
10471057
func (s *EtcdServer) downgradeCancel(ctx context.Context) (*pb.DowngradeResponse, error) {
10481058
err := s.Version().DowngradeCancel(ctx)
10491059
if err != nil {

0 commit comments

Comments
 (0)