diff --git a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/scala/org/apache/linkis/manager/am/service/em/DefaultEMInfoService.scala b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/scala/org/apache/linkis/manager/am/service/em/DefaultEMInfoService.scala index 126d413727c..558514caea3 100644 --- a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/scala/org/apache/linkis/manager/am/service/em/DefaultEMInfoService.scala +++ b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/scala/org/apache/linkis/manager/am/service/em/DefaultEMInfoService.scala @@ -152,7 +152,11 @@ class DefaultEMInfoService extends EMInfoService with Logging { val filteredECMs = if (serviceInstance.equals("*")) { getAllEM() } else { - getAllEM().filter(_.getServiceInstance.getInstance.equals(serviceInstance)) + val ecInstance = new ServiceInstance + ecInstance.setInstance(serviceInstance) + ecInstance.setApplicationName(GovernanceCommonConf.ENGINE_CONN_SPRING_NAME.getValue) + val node = emNodeManager.getEM(ecInstance) + if (node != null) Array(node) else Array.empty[EMNode] } // 遍历处理ECM filteredECMs.foreach { ecmInstance => @@ -214,23 +218,22 @@ class DefaultEMInfoService extends EMInfoService with Logging { // 用户资源重置 if (AMConfiguration.AM_USER_RESET_RESOURCE && StringUtils.isNotBlank(username)) { // 获取用户的标签 - val user = if (username.equals("*")) { - "" + val abnormalResources = if (username.equals("*")) { + resourceManagerPersistence.getAbnormalResources.asScala } else { - username + val labelValuePattern = + MessageFormat.format("%{0}%,%{1}%,%{2}%,%", "", username, "") + val userLabels = labelManagerPersistence.getLabelByPattern( + labelValuePattern, + "combined_userCreator_engineType", + null, + null + ) + // 获取与这些标签关联的资源 + resourceManagerPersistence.getResourceByLabels(userLabels).asScala } - val labelValuePattern = - MessageFormat.format("%{0}%,%{1}%,%{2}%,%", "", user, "") - val userLabels = labelManagerPersistence.getLabelByPattern( - labelValuePattern, - "combined_userCreator_engineType", - null, - null - ) - // 获取与这些标签关联的资源 - val userLabelResources = resourceManagerPersistence.getResourceByLabels(userLabels).asScala // 遍历用户标签资源 - userLabelResources.foreach { userLabelResource => + abnormalResources.foreach { userLabelResource => val labelUser = LabelUtil.getFromLabelStr(userLabelResource.getCreator, "user") val resourceLabel = labelManagerPersistence.getLabelByResource(userLabelResource) resourceLabel.head.setStringValue(userLabelResource.getCreator) diff --git a/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/dao/ResourceManagerMapper.java b/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/dao/ResourceManagerMapper.java index 40876f55894..fbc001f448f 100644 --- a/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/dao/ResourceManagerMapper.java +++ b/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/dao/ResourceManagerMapper.java @@ -60,4 +60,11 @@ List getResourceByInstanceAndResourceType( void deleteResourceRelByResourceId(@Param("ids") List ids); PersistenceResource getResourceById(@Param("id") Integer id); + + /** + * 查询资源为负数(异常)的资源记录 + * + * @return 异常资源列表 + */ + List getAbnormalResources(); } diff --git a/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/persistence/ResourceManagerPersistence.java b/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/persistence/ResourceManagerPersistence.java index 63f09d59633..f5133043b4d 100644 --- a/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/persistence/ResourceManagerPersistence.java +++ b/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/persistence/ResourceManagerPersistence.java @@ -90,6 +90,13 @@ List getResourceByServiceInstance( List getResourceByServiceInstance(ServiceInstance serviceInstance) throws PersistenceErrorException; + /** + * 查询资源为负数(异常)的资源记录 + * + * @return 异常资源列表 + */ + List getAbnormalResources(); + /** * 删除实例占用的资源 * diff --git a/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/persistence/impl/DefaultResourceManagerPersistence.java b/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/persistence/impl/DefaultResourceManagerPersistence.java index 81183e15659..78ea28fa35b 100644 --- a/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/persistence/impl/DefaultResourceManagerPersistence.java +++ b/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/persistence/impl/DefaultResourceManagerPersistence.java @@ -211,4 +211,9 @@ public PersistenceResource getNodeResourceById(Integer id) { PersistenceResource resource = resourceManagerMapper.getResourceById(id); return resource; } + + @Override + public List getAbnormalResources() { + return resourceManagerMapper.getAbnormalResources(); + } } diff --git a/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/resources/mapper/common/ResourceManagerMapper.xml b/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/resources/mapper/common/ResourceManagerMapper.xml index 559c5069e1e..5aeb253d6d1 100644 --- a/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/resources/mapper/common/ResourceManagerMapper.xml +++ b/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/resources/mapper/common/ResourceManagerMapper.xml @@ -98,4 +98,10 @@ select * from linkis_cg_manager_label where id in (select label_id from linkis_cg_manager_label_resource A join linkis_cg_manager_linkis_resources B on A.resource_id=B.id and B.ticketId=#{ticketId}) + + \ No newline at end of file