mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcdserver: use etcdserver ErrLearnerNotReady
If learner is not ready to be promoted, use etcdserver.ErrLearnerNotReady instead of using membership.ErrLearnerNotReady.
This commit is contained in:
parent
f5eaaaf440
commit
f8ad8ae4ad
@ -245,7 +245,7 @@ func TestMemberPromoteForNotReadyLearner(t *testing.T) {
|
||||
|
||||
// since we do not start learner, learner must be not ready.
|
||||
_, err = capi.MemberPromote(context.Background(), learnerID)
|
||||
expectedErrKeywords := "can only promote a learner member which catches up with leader"
|
||||
expectedErrKeywords := "can only promote a learner member which is in sync with leader"
|
||||
if err == nil {
|
||||
t.Fatalf("expecting promote not ready learner to fail, got no error")
|
||||
}
|
||||
|
@ -130,7 +130,7 @@ func (h *peerMemberPromoteHandler) ServeHTTP(w http.ResponseWriter, r *http.Requ
|
||||
http.Error(w, err.Error(), http.StatusNotFound)
|
||||
case membership.ErrMemberNotLearner:
|
||||
http.Error(w, err.Error(), http.StatusPreconditionFailed)
|
||||
case membership.ErrLearnerNotReady:
|
||||
case etcdserver.ErrLearnerNotReady:
|
||||
http.Error(w, err.Error(), http.StatusPreconditionFailed)
|
||||
default:
|
||||
WriteError(h.lg, w, r, err)
|
||||
|
@ -26,7 +26,6 @@ var (
|
||||
ErrIDNotFound = errors.New("membership: ID not found")
|
||||
ErrPeerURLexists = errors.New("membership: peerURL exists")
|
||||
ErrMemberNotLearner = errors.New("membership: can only promote a learner member")
|
||||
ErrLearnerNotReady = errors.New("membership: can only promote a learner member which is in sync with leader")
|
||||
ErrTooManyLearners = errors.New("membership: too many learner members in cluster")
|
||||
)
|
||||
|
||||
|
@ -36,7 +36,6 @@ var toGRPCErrorMap = map[error]error{
|
||||
membership.ErrIDExists: rpctypes.ErrGRPCMemberExist,
|
||||
membership.ErrPeerURLexists: rpctypes.ErrGRPCPeerURLExist,
|
||||
membership.ErrMemberNotLearner: rpctypes.ErrGRPCMemberNotLearner,
|
||||
membership.ErrLearnerNotReady: rpctypes.ErrGRPCLearnerNotReady,
|
||||
membership.ErrTooManyLearners: rpctypes.ErrGRPCTooManyLearners,
|
||||
etcdserver.ErrNotEnoughStartedMembers: rpctypes.ErrMemberNotEnoughStarted,
|
||||
etcdserver.ErrLearnerNotReady: rpctypes.ErrGRPCLearnerNotReady,
|
||||
|
@ -383,8 +383,8 @@ func promoteMemberHTTP(ctx context.Context, url string, id uint64, peerRt http.R
|
||||
}
|
||||
if resp.StatusCode == http.StatusPreconditionFailed {
|
||||
// both ErrMemberNotLearner and ErrLearnerNotReady have same http status code
|
||||
if strings.Contains(string(b), membership.ErrLearnerNotReady.Error()) {
|
||||
return nil, membership.ErrLearnerNotReady
|
||||
if strings.Contains(string(b), ErrLearnerNotReady.Error()) {
|
||||
return nil, ErrLearnerNotReady
|
||||
}
|
||||
if strings.Contains(string(b), membership.ErrMemberNotLearner.Error()) {
|
||||
return nil, membership.ErrMemberNotLearner
|
||||
|
@ -29,7 +29,7 @@ var (
|
||||
ErrTimeoutLeaderTransfer = errors.New("etcdserver: request timed out, leader transfer took too long")
|
||||
ErrLeaderChanged = errors.New("etcdserver: leader changed")
|
||||
ErrNotEnoughStartedMembers = errors.New("etcdserver: re-configuration failed due to not enough started members")
|
||||
ErrLearnerNotReady = errors.New("etcdserver: can only promote a learner member which catches up with leader")
|
||||
ErrLearnerNotReady = errors.New("etcdserver: can only promote a learner member which is in sync with leader")
|
||||
ErrNoLeader = errors.New("etcdserver: no leader")
|
||||
ErrNotLeader = errors.New("etcdserver: not leader")
|
||||
ErrRequestTooLarge = errors.New("etcdserver: request is too large")
|
||||
|
@ -1654,7 +1654,7 @@ func (s *EtcdServer) PromoteMember(ctx context.Context, id uint64) ([]*membershi
|
||||
return resp, nil
|
||||
}
|
||||
// If member promotion failed, return early. Otherwise keep retry.
|
||||
if err == membership.ErrIDNotFound || err == membership.ErrLearnerNotReady || err == membership.ErrMemberNotLearner {
|
||||
if err == ErrLearnerNotReady || err == membership.ErrIDNotFound || err == membership.ErrMemberNotLearner {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user