mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-03 15:00:27 +08:00
修复DataMap无法在多个节点之间共享的问题
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user