Quellcode durchsuchen

v3rpc: error for non-empty value with ignore_value

Gyu-Ho Lee vor 9 Jahren
Ursprung
Commit
e655420d33

+ 3 - 0
etcdserver/api/v3rpc/key.go

@@ -134,6 +134,9 @@ func checkPutRequest(r *pb.PutRequest) error {
 	if len(r.Key) == 0 {
 		return rpctypes.ErrGRPCEmptyKey
 	}
+	if r.IgnoreValue && len(r.Value) != 0 {
+		return rpctypes.ErrGRPCValue
+	}
 	return nil
 }
 

+ 6 - 0
etcdserver/api/v3rpc/rpctypes/error.go

@@ -22,6 +22,8 @@ import (
 var (
 	// server-side error
 	ErrGRPCEmptyKey     = grpc.Errorf(codes.InvalidArgument, "etcdserver: key is not provided")
+	ErrGRPCKeyNotFound  = grpc.Errorf(codes.InvalidArgument, "etcdserver: key not found")
+	ErrGRPCValue        = grpc.Errorf(codes.InvalidArgument, "etcdserver: value is provided")
 	ErrGRPCTooManyOps   = grpc.Errorf(codes.InvalidArgument, "etcdserver: too many operations in txn request")
 	ErrGRPCDuplicateKey = grpc.Errorf(codes.InvalidArgument, "etcdserver: duplicate key given in txn request")
 	ErrGRPCCompacted    = grpc.Errorf(codes.OutOfRange, "etcdserver: mvcc: required revision has been compacted")
@@ -64,6 +66,8 @@ var (
 
 	errStringToError = map[string]error{
 		grpc.ErrorDesc(ErrGRPCEmptyKey):     ErrGRPCEmptyKey,
+		grpc.ErrorDesc(ErrGRPCKeyNotFound):  ErrGRPCKeyNotFound,
+		grpc.ErrorDesc(ErrGRPCValue):        ErrGRPCValue,
 		grpc.ErrorDesc(ErrGRPCTooManyOps):   ErrGRPCTooManyOps,
 		grpc.ErrorDesc(ErrGRPCDuplicateKey): ErrGRPCDuplicateKey,
 		grpc.ErrorDesc(ErrGRPCCompacted):    ErrGRPCCompacted,
@@ -107,6 +111,8 @@ var (
 
 	// client-side error
 	ErrEmptyKey     = Error(ErrGRPCEmptyKey)
+	ErrKeyNotFound  = Error(ErrGRPCKeyNotFound)
+	ErrValue        = Error(ErrGRPCValue)
 	ErrTooManyOps   = Error(ErrGRPCTooManyOps)
 	ErrDuplicateKey = Error(ErrGRPCDuplicateKey)
 	ErrCompacted    = Error(ErrGRPCCompacted)

+ 2 - 0
etcdserver/api/v3rpc/util.go

@@ -63,6 +63,8 @@ func togRPCError(err error) error {
 		return rpctypes.ErrGRPCTimeoutDueToConnectionLost
 	case etcdserver.ErrUnhealthy:
 		return rpctypes.ErrGRPCUnhealthy
+	case etcdserver.ErrKeyNotFound:
+		return rpctypes.ErrGRPCKeyNotFound
 
 	case lease.ErrLeaseNotFound:
 		return rpctypes.ErrGRPCLeaseNotFound