From 7f58d65a578163f086cf6e17f45d62d13b939a39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Sun, 19 Mar 2023 10:26:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DDataMap=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E5=9C=A8=E5=A4=9A=E4=B8=AA=E8=8A=82=E7=82=B9=E4=B9=8B=E9=97=B4?= =?UTF-8?q?=E5=85=B1=E4=BA=AB=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/models/node_dao.go | 5 +++++ internal/db/models/node_dao_test.go | 13 +++++++++++++ internal/rpc/services/service_node.go | 20 ++++++++++++++++++-- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/internal/db/models/node_dao.go b/internal/db/models/node_dao.go index be995df6..036d694a 100644 --- a/internal/db/models/node_dao.go +++ b/internal/db/models/node_dao.go @@ -967,6 +967,11 @@ func (this *NodeDAO) ComposeNodeConfig(tx *dbs.Tx, nodeId int64, dataMap *shared cacheMap = utils.NewCacheMap() } + // 放入到缓存中,以便于后面继续使用 + if dataMap != nil { + cacheMap.Put("DataMap", dataMap) + } + node, err := this.FindEnabledNode(tx, nodeId) if err != nil { return nil, err diff --git a/internal/db/models/node_dao_test.go b/internal/db/models/node_dao_test.go index 6f672d38..74c525e4 100644 --- a/internal/db/models/node_dao_test.go +++ b/internal/db/models/node_dao_test.go @@ -70,6 +70,19 @@ func TestNodeDAO_ComposeNodeConfig(t *testing.T) { t.Fatal(err) } t.Log(len(data), "bytes") + + { + nodeConfig, err = models.SharedNodeDAO.ComposeNodeConfig(tx, 148, dataMap, cacheMap) + if err != nil { + t.Fatal(err) + } + t.Log(len(nodeConfig.DataMap.Map), "items in dataMap") + data, err = json.Marshal(nodeConfig) + if err != nil { + t.Fatal(err) + } + t.Log(len(data), "bytes") + } } func TestNodeDAO_ComposeNodeConfig_ParentNodes(t *testing.T) { diff --git a/internal/rpc/services/service_node.go b/internal/rpc/services/service_node.go index 6e4925af..e8340585 100644 --- a/internal/rpc/services/service_node.go +++ b/internal/rpc/services/service_node.go @@ -743,11 +743,27 @@ func (this *NodeService) FindCurrentNodeConfig(ctx context.Context, req *pb.Find if err != nil { return nil, err } + var cacheMap = this.findClusterCacheMap(clusterId, req.NodeTaskVersion) var dataMap *shared.DataMap if req.UseDataMap { - dataMap = shared.NewDataMap() + // 是否有共用的 + if cacheMap != nil { + cachedDataMap, ok := cacheMap.Get("DataMap") + if ok { + dataMap = cachedDataMap.(*shared.DataMap) + } + } + + if dataMap == nil { + dataMap = shared.NewDataMap() + } + } else { + // 如果没有使用DataMap,但是获取的缓存是有DataMap的,需要重新获取 + _, ok := cacheMap.Get("DataMap") + if ok { + cacheMap = nil + } } - var cacheMap = this.findClusterCacheMap(clusterId, req.NodeTaskVersion) nodeConfig, err := models.SharedNodeDAO.ComposeNodeConfig(tx, nodeId, dataMap, cacheMap) if err != nil { return nil, err