From ba65c38d40fae7a4fb8c0ffaf547ae3f4331700a Mon Sep 17 00:00:00 2001
From: bigsheeper <yihao.dai@zilliz.com>
Date: Fri, 19 Mar 2021 17:50:26 +0800
Subject: [PATCH] Fix Deadline Exceeded

Signed-off-by: bigsheeper <yihao.dai@zilliz.com>
---
 internal/masterservice/master_service.go | 11 +++++------
 internal/masterservice/task.go           |  2 ++
 internal/proxynode/condition.go          |  2 +-
 internal/proxynode/meta_cache.go         |  6 ++++--
 4 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/internal/masterservice/master_service.go b/internal/masterservice/master_service.go
index 26ec6494f..5cd20b4f9 100644
--- a/internal/masterservice/master_service.go
+++ b/internal/masterservice/master_service.go
@@ -16,12 +16,6 @@ import (
 	etcdkv "github.com/zilliztech/milvus-distributed/internal/kv/etcd"
 	"github.com/zilliztech/milvus-distributed/internal/log"
 	ms "github.com/zilliztech/milvus-distributed/internal/msgstream"
-	"github.com/zilliztech/milvus-distributed/internal/tso"
-	"github.com/zilliztech/milvus-distributed/internal/types"
-	"github.com/zilliztech/milvus-distributed/internal/util/retry"
-	"github.com/zilliztech/milvus-distributed/internal/util/tsoutil"
-	"github.com/zilliztech/milvus-distributed/internal/util/typeutil"
-
 	"github.com/zilliztech/milvus-distributed/internal/proto/commonpb"
 	"github.com/zilliztech/milvus-distributed/internal/proto/datapb"
 	"github.com/zilliztech/milvus-distributed/internal/proto/indexpb"
@@ -30,6 +24,11 @@ import (
 	"github.com/zilliztech/milvus-distributed/internal/proto/milvuspb"
 	"github.com/zilliztech/milvus-distributed/internal/proto/proxypb"
 	"github.com/zilliztech/milvus-distributed/internal/proto/querypb"
+	"github.com/zilliztech/milvus-distributed/internal/tso"
+	"github.com/zilliztech/milvus-distributed/internal/types"
+	"github.com/zilliztech/milvus-distributed/internal/util/retry"
+	"github.com/zilliztech/milvus-distributed/internal/util/tsoutil"
+	"github.com/zilliztech/milvus-distributed/internal/util/typeutil"
 )
 
 //  internalpb -> internalpb
diff --git a/internal/masterservice/task.go b/internal/masterservice/task.go
index 26bc4ce16..44abf6926 100644
--- a/internal/masterservice/task.go
+++ b/internal/masterservice/task.go
@@ -41,6 +41,8 @@ func (bt *baseReqTask) WaitToFinish() error {
 	select {
 	case <-bt.core.ctx.Done():
 		return errors.New("context done")
+	case <-bt.ctx.Done():
+		return errors.New("grpc context done")
 	case err, ok := <-bt.cv:
 		if !ok {
 			return errors.New("notify chan closed")
diff --git a/internal/proxynode/condition.go b/internal/proxynode/condition.go
index ac3327606..db596027b 100644
--- a/internal/proxynode/condition.go
+++ b/internal/proxynode/condition.go
@@ -37,7 +37,7 @@ func (tc *TaskCondition) Ctx() context.Context {
 
 func NewTaskCondition(ctx context.Context) *TaskCondition {
 	return &TaskCondition{
-		done: make(chan error),
+		done: make(chan error, 1),
 		ctx:  ctx,
 	}
 }
diff --git a/internal/proxynode/meta_cache.go b/internal/proxynode/meta_cache.go
index 3d7958ade..0b35d3949 100644
--- a/internal/proxynode/meta_cache.go
+++ b/internal/proxynode/meta_cache.go
@@ -158,8 +158,6 @@ func (m *MetaCache) GetPartitionID(ctx context.Context, collectionName string, p
 	if err == nil {
 		return partitionID, nil
 	}
-	m.mu.Lock()
-	defer m.mu.Unlock()
 
 	req := &milvuspb.ShowPartitionsRequest{
 		Base: &commonpb.MsgBase{
@@ -174,6 +172,10 @@ func (m *MetaCache) GetPartitionID(ctx context.Context, collectionName string, p
 	if partitions.Status.ErrorCode != commonpb.ErrorCode_Success {
 		return 0, fmt.Errorf("%s", partitions.Status.Reason)
 	}
+
+	m.mu.Lock()
+	defer m.mu.Unlock()
+
 	if len(partitions.PartitionIDs) != len(partitions.PartitionNames) {
 		return 0, fmt.Errorf("partition ids len: %d doesn't equal Partition name len %d",
 			len(partitions.PartitionIDs), len(partitions.PartitionNames))
-- 
GitLab