mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +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