Browse Source

v3rpc: error for non empty lease with 'ignore_lease'

sharat 9 years ago
parent
commit
5ac4e4255a
2 changed files with 27 additions and 20 deletions
  1. 4 1
      etcdserver/api/v3rpc/key.go
  2. 23 19
      etcdserver/api/v3rpc/rpctypes/error.go

+ 4 - 1
etcdserver/api/v3rpc/key.go

@@ -135,7 +135,10 @@ func checkPutRequest(r *pb.PutRequest) error {
 		return rpctypes.ErrGRPCEmptyKey
 	}
 	if r.IgnoreValue && len(r.Value) != 0 {
-		return rpctypes.ErrGRPCValue
+		return rpctypes.ErrGRPCValueProvided
+	}
+	if r.IgnoreLease && r.Lease != 0 {
+		return rpctypes.ErrGRPCLeaseProvided
 	}
 	return nil
 }

+ 23 - 19
etcdserver/api/v3rpc/rpctypes/error.go

@@ -21,14 +21,15 @@ 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")
-	ErrGRPCFutureRev    = grpc.Errorf(codes.OutOfRange, "etcdserver: mvcc: required revision is a future revision")
-	ErrGRPCNoSpace      = grpc.Errorf(codes.ResourceExhausted, "etcdserver: mvcc: database space exceeded")
+	ErrGRPCEmptyKey      = grpc.Errorf(codes.InvalidArgument, "etcdserver: key is not provided")
+	ErrGRPCKeyNotFound   = grpc.Errorf(codes.InvalidArgument, "etcdserver: key not found")
+	ErrGRPCValueProvided = grpc.Errorf(codes.InvalidArgument, "etcdserver: value is provided")
+	ErrGRPCLeaseProvided = grpc.Errorf(codes.InvalidArgument, "etcdserver: lease 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")
+	ErrGRPCFutureRev     = grpc.Errorf(codes.OutOfRange, "etcdserver: mvcc: required revision is a future revision")
+	ErrGRPCNoSpace       = grpc.Errorf(codes.ResourceExhausted, "etcdserver: mvcc: database space exceeded")
 
 	ErrGRPCLeaseNotFound = grpc.Errorf(codes.NotFound, "etcdserver: requested lease not found")
 	ErrGRPCLeaseExist    = grpc.Errorf(codes.FailedPrecondition, "etcdserver: lease already exists")
@@ -65,9 +66,11 @@ var (
 	ErrGRPCUnhealthy                  = grpc.Errorf(codes.Unavailable, "etcdserver: unhealthy cluster")
 
 	errStringToError = map[string]error{
-		grpc.ErrorDesc(ErrGRPCEmptyKey):     ErrGRPCEmptyKey,
-		grpc.ErrorDesc(ErrGRPCKeyNotFound):  ErrGRPCKeyNotFound,
-		grpc.ErrorDesc(ErrGRPCValue):        ErrGRPCValue,
+		grpc.ErrorDesc(ErrGRPCEmptyKey):      ErrGRPCEmptyKey,
+		grpc.ErrorDesc(ErrGRPCKeyNotFound):   ErrGRPCKeyNotFound,
+		grpc.ErrorDesc(ErrGRPCValueProvided): ErrGRPCValueProvided,
+		grpc.ErrorDesc(ErrGRPCLeaseProvided): ErrGRPCLeaseProvided,
+
 		grpc.ErrorDesc(ErrGRPCTooManyOps):   ErrGRPCTooManyOps,
 		grpc.ErrorDesc(ErrGRPCDuplicateKey): ErrGRPCDuplicateKey,
 		grpc.ErrorDesc(ErrGRPCCompacted):    ErrGRPCCompacted,
@@ -110,14 +113,15 @@ var (
 	}
 
 	// client-side error
-	ErrEmptyKey     = Error(ErrGRPCEmptyKey)
-	ErrKeyNotFound  = Error(ErrGRPCKeyNotFound)
-	ErrValue        = Error(ErrGRPCValue)
-	ErrTooManyOps   = Error(ErrGRPCTooManyOps)
-	ErrDuplicateKey = Error(ErrGRPCDuplicateKey)
-	ErrCompacted    = Error(ErrGRPCCompacted)
-	ErrFutureRev    = Error(ErrGRPCFutureRev)
-	ErrNoSpace      = Error(ErrGRPCNoSpace)
+	ErrEmptyKey      = Error(ErrGRPCEmptyKey)
+	ErrKeyNotFound   = Error(ErrGRPCKeyNotFound)
+	ErrValueProvided = Error(ErrGRPCValueProvided)
+	ErrLeaseProvided = Error(ErrGRPCLeaseProvided)
+	ErrTooManyOps    = Error(ErrGRPCTooManyOps)
+	ErrDuplicateKey  = Error(ErrGRPCDuplicateKey)
+	ErrCompacted     = Error(ErrGRPCCompacted)
+	ErrFutureRev     = Error(ErrGRPCFutureRev)
+	ErrNoSpace       = Error(ErrGRPCNoSpace)
 
 	ErrLeaseNotFound = Error(ErrGRPCLeaseNotFound)
 	ErrLeaseExist    = Error(ErrGRPCLeaseExist)