From 64ac6318631f63c6b6b23f93bf5096d53c7405e3 Mon Sep 17 00:00:00 2001 From: Anthony Romano Date: Sun, 28 Aug 2016 19:37:35 -0700 Subject: [PATCH] rpctypes: set unknown codes to Unknown instead of internal An unrecognized error code isn't "very broken". --- etcdserver/api/v3rpc/member.go | 34 ++++++---------------------------- etcdserver/api/v3rpc/util.go | 12 +++++++++++- 2 files changed, 17 insertions(+), 29 deletions(-) diff --git a/etcdserver/api/v3rpc/member.go b/etcdserver/api/v3rpc/member.go index e5e769236..bcd5dac51 100644 --- a/etcdserver/api/v3rpc/member.go +++ b/etcdserver/api/v3rpc/member.go @@ -24,8 +24,6 @@ import ( "github.com/coreos/etcd/etcdserver/membership" "github.com/coreos/etcd/pkg/types" "golang.org/x/net/context" - "google.golang.org/grpc" - "google.golang.org/grpc/codes" ) type ClusterServer struct { @@ -50,14 +48,8 @@ func (cs *ClusterServer) MemberAdd(ctx context.Context, r *pb.MemberAddRequest) now := time.Now() m := membership.NewMember("", urls, "", &now) - err = cs.server.AddMember(ctx, *m) - switch { - case err == membership.ErrIDExists: - return nil, rpctypes.ErrGRPCMemberExist - case err == membership.ErrPeerURLexists: - return nil, rpctypes.ErrGRPCPeerURLExist - case err != nil: - return nil, grpc.Errorf(codes.Internal, err.Error()) + if err = cs.server.AddMember(ctx, *m); err != nil { + return nil, togRPCError(err) } return &pb.MemberAddResponse{ @@ -67,16 +59,9 @@ func (cs *ClusterServer) MemberAdd(ctx context.Context, r *pb.MemberAddRequest) } func (cs *ClusterServer) MemberRemove(ctx context.Context, r *pb.MemberRemoveRequest) (*pb.MemberRemoveResponse, error) { - err := cs.server.RemoveMember(ctx, r.ID) - switch { - case err == membership.ErrIDRemoved: - fallthrough - case err == membership.ErrIDNotFound: - return nil, rpctypes.ErrGRPCMemberNotFound - case err != nil: - return nil, grpc.Errorf(codes.Internal, err.Error()) + if err := cs.server.RemoveMember(ctx, r.ID); err != nil { + return nil, togRPCError(err) } - return &pb.MemberRemoveResponse{Header: cs.header()}, nil } @@ -85,16 +70,9 @@ func (cs *ClusterServer) MemberUpdate(ctx context.Context, r *pb.MemberUpdateReq ID: types.ID(r.ID), RaftAttributes: membership.RaftAttributes{PeerURLs: r.PeerURLs}, } - err := cs.server.UpdateMember(ctx, m) - switch { - case err == membership.ErrPeerURLexists: - return nil, rpctypes.ErrGRPCPeerURLExist - case err == membership.ErrIDNotFound: - return nil, rpctypes.ErrGRPCMemberNotFound - case err != nil: - return nil, grpc.Errorf(codes.Internal, err.Error()) + if err := cs.server.UpdateMember(ctx, m); err != nil { + return nil, togRPCError(err) } - return &pb.MemberUpdateResponse{Header: cs.header()}, nil } diff --git a/etcdserver/api/v3rpc/util.go b/etcdserver/api/v3rpc/util.go index 247f9cb34..33ccfe7d2 100644 --- a/etcdserver/api/v3rpc/util.go +++ b/etcdserver/api/v3rpc/util.go @@ -18,6 +18,7 @@ import ( "github.com/coreos/etcd/auth" "github.com/coreos/etcd/etcdserver" "github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes" + "github.com/coreos/etcd/etcdserver/membership" "github.com/coreos/etcd/lease" "github.com/coreos/etcd/mvcc" "google.golang.org/grpc" @@ -26,6 +27,15 @@ import ( func togRPCError(err error) error { switch err { + case membership.ErrIDRemoved: + return rpctypes.ErrGRPCMemberNotFound + case membership.ErrIDNotFound: + return rpctypes.ErrGRPCMemberNotFound + case membership.ErrIDExists: + return rpctypes.ErrGRPCMemberExist + case membership.ErrPeerURLexists: + return rpctypes.ErrGRPCPeerURLExist + case mvcc.ErrCompacted: return rpctypes.ErrGRPCCompacted case mvcc.ErrFutureRev: @@ -71,6 +81,6 @@ func togRPCError(err error) error { case auth.ErrAuthNotEnabled: return rpctypes.ErrGRPCAuthNotEnabled default: - return grpc.Errorf(codes.Internal, err.Error()) + return grpc.Errorf(codes.Unknown, err.Error()) } }