This is an automated email from the ASF dual-hosted git repository. littlecui pushed a commit to branch dev in repository https://gitbox.apache.org/repos/asf/servicecomb-kie.git
commit cf90eaf67d615ccd083fc1b3dd01baa8c7737458 Author: songshiyuan 00649746 <[email protected]> AuthorDate: Tue Dec 12 23:57:24 2023 +0800 fix the bug of do not report the error which occured in action of get kvdocs from etcd --- server/datasource/etcd/kv/kv_cache.go | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/server/datasource/etcd/kv/kv_cache.go b/server/datasource/etcd/kv/kv_cache.go index fe165b8..ba7b346 100644 --- a/server/datasource/etcd/kv/kv_cache.go +++ b/server/datasource/etcd/kv/kv_cache.go @@ -248,7 +248,10 @@ func Search(ctx context.Context, req *CacheSearchReq) (*model.KVResponse, bool) } return true }) - tpData := kvCache.getKvFromEtcd(ctx, req, kvIdsLeft) + tpData, err := kvCache.getKvFromEtcd(ctx, req, kvIdsLeft) + if err != nil { + return nil, true, err + } docs = append(docs, tpData...) for _, doc := range docs { @@ -261,14 +264,15 @@ func Search(ctx context.Context, req *CacheSearchReq) (*model.KVResponse, bool) return result, true } -func (kc *Cache) getKvFromEtcd(ctx context.Context, req *CacheSearchReq, kvIdsLeft []string) []*model.KVDoc { +func (kc *Cache) getKvFromEtcd(ctx context.Context, req *CacheSearchReq, kvIdsLeft []string) ([]*model.KVDoc, error) { if len(kvIdsLeft) == 0 { - return nil + return nil, nil } openlog.Debug("get kv from etcd by kvId") wg := sync.WaitGroup{} docs := make([]*model.KVDoc, len(kvIdsLeft)) + var Err error for i, kvID := range kvIdsLeft { wg.Add(1) go func(kvID string, cnt int) { @@ -278,12 +282,14 @@ func (kc *Cache) getKvFromEtcd(ctx context.Context, req *CacheSearchReq, kvIdsLe kv, err := etcdadpt.Get(ctx, docKey) if err != nil { openlog.Error(fmt.Sprintf("failed to get kv from etcd, err %v", err)) + Err = err return } doc, err := kc.GetKvDoc(kv) if err != nil { openlog.Error(fmt.Sprintf("failed to unmarshal kv, err %v", err)) + Err = err return } @@ -292,7 +298,10 @@ func (kc *Cache) getKvFromEtcd(ctx context.Context, req *CacheSearchReq, kvIdsLe }(kvID, i) } wg.Wait() - return docs + if Err != nil { + return nil, Err + } + return docs, nil } func isMatch(req *CacheSearchReq, doc *model.KVDoc) bool {
