浏览代码

clientv3: fix KeepAliveOnce return error message

lolynx 9 年之前
父节点
当前提交
e3fd246414
共有 2 个文件被更改,包括 10 次插入0 次删除
  1. 7 0
      clientv3/integration/lease_test.go
  2. 3 0
      clientv3/lease.go

+ 7 - 0
clientv3/integration/lease_test.go

@@ -23,6 +23,8 @@ import (
 	"github.com/coreos/etcd/integration"
 	"github.com/coreos/etcd/pkg/testutil"
 	"golang.org/x/net/context"
+	"google.golang.org/grpc"
+	"google.golang.org/grpc/codes"
 )
 
 func TestLeaseGrant(t *testing.T) {
@@ -92,6 +94,11 @@ func TestLeaseKeepAliveOnce(t *testing.T) {
 	if err != nil {
 		t.Errorf("failed to keepalive lease %v", err)
 	}
+
+	_, err = lapi.KeepAliveOnce(context.Background(), clientv3.LeaseID(0))
+	if grpc.Code(err) != codes.NotFound {
+		t.Errorf("invalid error returned %v", err)
+	}
 }
 
 func TestLeaseKeepAlive(t *testing.T) {

+ 3 - 0
clientv3/lease.go

@@ -181,6 +181,9 @@ func (l *lessor) KeepAliveOnce(ctx context.Context, id LeaseID) (*LeaseKeepAlive
 		if err == nil {
 			return resp, err
 		}
+		if isHalted(ctx, err) {
+			return resp, err
+		}
 
 		nerr := l.switchRemoteAndStream(err)
 		if nerr != nil {