From f4d80b4211f5a2a565673cfa2e6fdb77beac8aef Mon Sep 17 00:00:00 2001 From: yah01 Date: Fri, 13 Jan 2023 11:29:41 +0800 Subject: [PATCH] Fix reading config from etcd may block forever (#21688) Signed-off-by: yah01 --- internal/config/etcd_source.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/internal/config/etcd_source.go b/internal/config/etcd_source.go index e5096c16f5..76114648c1 100644 --- a/internal/config/etcd_source.go +++ b/internal/config/etcd_source.go @@ -21,11 +21,16 @@ import ( "fmt" "strings" "sync" + "time" "github.com/milvus-io/milvus/internal/util/etcd" clientv3 "go.etcd.io/etcd/client/v3" ) +const ( + ReadConfigTimeout = 3 * time.Second +) + type EtcdSource struct { sync.RWMutex etcdCli *clientv3.Client @@ -108,7 +113,9 @@ func (es *EtcdSource) SetEventHandler(eh EventHandler) { func (es *EtcdSource) refreshConfigurations() error { prefix := es.keyPrefix + "/config" - response, err := es.etcdCli.Get(es.ctx, prefix, clientv3.WithPrefix()) + ctx, cancel := context.WithTimeout(es.ctx, ReadConfigTimeout) + defer cancel() + response, err := es.etcdCli.Get(ctx, prefix, clientv3.WithPrefix()) if err != nil { return err }