Merge pull request #16990 from YaoC/backport-12890

[3.4] backport #12890 learner support snapshot RPC
This commit is contained in:
Benjamin Wang 2023-11-23 13:56:28 +00:00 committed by GitHub
commit 75d2407fc0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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
}