From 4ff558ee534d61a0c82072b894d5b8bfdedf1e0a Mon Sep 17 00:00:00 2001 From: tangcong Date: Wed, 5 May 2021 04:26:33 +0800 Subject: [PATCH] [3.4] backport #12890 learner support snapshot RPC Signed-off-by: YaoC --- etcdserver/api/v3rpc/interceptor.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/etcdserver/api/v3rpc/interceptor.go b/etcdserver/api/v3rpc/interceptor.go index d5e42b37441..c3d1fe49a29 100644 --- a/etcdserver/api/v3rpc/interceptor.go +++ b/etcdserver/api/v3rpc/interceptor.go @@ -35,6 +35,7 @@ import ( const ( maxNoLeaderCnt = 3 + snapshotMethod = "/etcdserverpb.Maintenance/Snapshot" ) type streamsMap struct { @@ -200,7 +201,7 @@ func newStreamInterceptor(s *etcdserver.EtcdServer) grpc.StreamServerInterceptor return rpctypes.ErrGRPCNotCapable } - if s.IsMemberExist(s.ID()) && s.IsLearner() { // learner does not support stream RPC + if s.IsMemberExist(s.ID()) && s.IsLearner() && info.FullMethod != snapshotMethod { // learner does not support stream RPC except Snapshot return rpctypes.ErrGPRCNotSupportedForLearner }