diff --git a/clientv3/client.go b/clientv3/client.go index fa18bec2e..d90e2e2fa 100644 --- a/clientv3/client.go +++ b/clientv3/client.go @@ -18,11 +18,11 @@ import ( "errors" "net" "net/url" + "strings" "sync" "time" "github.com/coreos/etcd/Godeps/_workspace/src/google.golang.org/grpc" - "github.com/coreos/etcd/Godeps/_workspace/src/google.golang.org/grpc/codes" "github.com/coreos/etcd/Godeps/_workspace/src/google.golang.org/grpc/credentials" pb "github.com/coreos/etcd/etcdserver/etcdserverpb" "github.com/coreos/etcd/pkg/transport" @@ -200,5 +200,5 @@ func dialEndpointList(c *Client) (*grpc.ClientConn, error) { } func isRPCError(err error) bool { - return grpc.Code(err) != codes.Unknown + return strings.HasPrefix(grpc.ErrorDesc(err), "etcdserver: ") } diff --git a/etcdserver/api/v3rpc/error.go b/etcdserver/api/v3rpc/error.go index ace2f578e..18a9ec281 100644 --- a/etcdserver/api/v3rpc/error.go +++ b/etcdserver/api/v3rpc/error.go @@ -21,17 +21,17 @@ import ( ) var ( - ErrEmptyKey = grpc.Errorf(codes.InvalidArgument, "key is not provided") - ErrTooManyOps = grpc.Errorf(codes.InvalidArgument, "too many operations in txn request") - ErrDuplicateKey = grpc.Errorf(codes.InvalidArgument, "duplicate key given in txn request") - ErrCompacted = grpc.Errorf(codes.OutOfRange, storage.ErrCompacted.Error()) - ErrFutureRev = grpc.Errorf(codes.OutOfRange, storage.ErrFutureRev.Error()) + ErrEmptyKey = grpc.Errorf(codes.InvalidArgument, "etcdserver: key is not provided") + ErrTooManyOps = grpc.Errorf(codes.InvalidArgument, "etcdserver: too many operations in txn request") + ErrDuplicateKey = grpc.Errorf(codes.InvalidArgument, "etcdserver: duplicate key given in txn request") + ErrCompacted = grpc.Errorf(codes.OutOfRange, "etcdserver: "+storage.ErrCompacted.Error()) + ErrFutureRev = grpc.Errorf(codes.OutOfRange, "etcdserver: "+storage.ErrFutureRev.Error()) - ErrLeaseNotFound = grpc.Errorf(codes.NotFound, "requested lease not found") - ErrLeaseExist = grpc.Errorf(codes.FailedPrecondition, "lease already exists") + ErrLeaseNotFound = grpc.Errorf(codes.NotFound, "etcdserver: requested lease not found") + ErrLeaseExist = grpc.Errorf(codes.FailedPrecondition, "etcdserver: lease already exists") - ErrMemberExist = grpc.Errorf(codes.FailedPrecondition, "member ID already exist") - ErrPeerURLExist = grpc.Errorf(codes.FailedPrecondition, "Peer URLs already exists") - ErrMemberBadURLs = grpc.Errorf(codes.InvalidArgument, "given member URLs are invalid") - ErrMemberNotFound = grpc.Errorf(codes.NotFound, "member not found") + ErrMemberExist = grpc.Errorf(codes.FailedPrecondition, "etcdserver: member ID already exist") + ErrPeerURLExist = grpc.Errorf(codes.FailedPrecondition, "etcdserver: Peer URLs already exists") + ErrMemberBadURLs = grpc.Errorf(codes.InvalidArgument, "etcdserver: given member URLs are invalid") + ErrMemberNotFound = grpc.Errorf(codes.NotFound, "etcdserver: member not found") )