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