// deleteRevKey deletes a key by revision, returning false if key is missing func deleteRevKey(kvc pb.KVClient, key string, rev int64) (bool, error) { cmp := &pb.Compare{ Result: pb.Compare_EQUAL, Target: pb.Compare_MOD, Key: []byte(key), TargetUnion: &pb.Compare_ModRevision{ModRevision: rev}, } req := &pb.RequestUnion{Request: &pb.RequestUnion_RequestDeleteRange{ RequestDeleteRange: &pb.DeleteRangeRequest{Key: []byte(key)}}} txnresp, err := kvc.Txn( context.TODO(), &pb.TxnRequest{ Compare: []*pb.Compare{cmp}, Success: []*pb.RequestUnion{req}, Failure: nil, }) if err != nil { return false, err } else if txnresp.Succeeded == false { return false, nil } return true, nil }