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()
 | 
							cacheMap = utils.NewCacheMap()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 放入到缓存中,以便于后面继续使用
 | 
				
			||||||
 | 
						if dataMap != nil {
 | 
				
			||||||
 | 
							cacheMap.Put("DataMap", dataMap)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	node, err := this.FindEnabledNode(tx, nodeId)
 | 
						node, err := this.FindEnabledNode(tx, nodeId)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -70,6 +70,19 @@ func TestNodeDAO_ComposeNodeConfig(t *testing.T) {
 | 
				
			|||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	t.Log(len(data), "bytes")
 | 
						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) {
 | 
					func TestNodeDAO_ComposeNodeConfig_ParentNodes(t *testing.T) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -743,11 +743,27 @@ func (this *NodeService) FindCurrentNodeConfig(ctx context.Context, req *pb.Find
 | 
				
			|||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						var cacheMap = this.findClusterCacheMap(clusterId, req.NodeTaskVersion)
 | 
				
			||||||
	var dataMap *shared.DataMap
 | 
						var dataMap *shared.DataMap
 | 
				
			||||||
	if req.UseDataMap {
 | 
						if req.UseDataMap {
 | 
				
			||||||
 | 
							// 是否有共用的
 | 
				
			||||||
 | 
							if cacheMap != nil {
 | 
				
			||||||
 | 
								cachedDataMap, ok := cacheMap.Get("DataMap")
 | 
				
			||||||
 | 
								if ok {
 | 
				
			||||||
 | 
									dataMap = cachedDataMap.(*shared.DataMap)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if dataMap == nil {
 | 
				
			||||||
			dataMap = shared.NewDataMap()
 | 
								dataMap = shared.NewDataMap()
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	var cacheMap = this.findClusterCacheMap(clusterId, req.NodeTaskVersion)
 | 
						} else {
 | 
				
			||||||
 | 
							// 如果没有使用DataMap,但是获取的缓存是有DataMap的,需要重新获取
 | 
				
			||||||
 | 
							_, ok := cacheMap.Get("DataMap")
 | 
				
			||||||
 | 
							if ok {
 | 
				
			||||||
 | 
								cacheMap = nil
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	nodeConfig, err := models.SharedNodeDAO.ComposeNodeConfig(tx, nodeId, dataMap, cacheMap)
 | 
						nodeConfig, err := models.SharedNodeDAO.ComposeNodeConfig(tx, nodeId, dataMap, cacheMap)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user