jerryshao commented on code in PR #6752: URL: https://github.com/apache/gravitino/pull/6752#discussion_r2021447510
########## core/src/main/java/org/apache/gravitino/storage/relational/service/TagMetaService.java: ########## @@ -230,20 +245,32 @@ public List<MetadataObject> listAssociatedMetadataObjectsForTag(NameIdentifier t mapper.listTagMetadataObjectRelsByMetalakeAndTagName(metalakeName, tagName)); List<MetadataObject> metadataObjects = Lists.newArrayList(); - for (TagMetadataObjectRelPO po : tagMetadataObjectRelPOs) { - String fullName = - MetadataObjectService.getMetadataObjectFullName( - po.getMetadataObjectType(), po.getMetadataObjectId()); - - // Metadata object may be deleted asynchronously when we query the name, so it will return - // null. We should skip this metadata object. - if (fullName == null) { - continue; - } - - MetadataObject.Type type = MetadataObject.Type.valueOf(po.getMetadataObjectType()); - metadataObjects.add(MetadataObjects.parse(fullName, type)); - } + tagMetadataObjectRelPOs.stream() + .collect( + Collectors.groupingBy(t -> MetadataObject.Type.valueOf(t.getMetadataObjectType()))) + .forEach( + (type, rels) -> { + List<Long> metadataObjectIds = + rels.stream() + .map(TagMetadataObjectRelPO::getMetadataObjectId) + .collect(Collectors.toList()); + Map<Long, String> metadataObjectNames = + Optional.of(TYPE_FUNCTION_MAP.get(type)) + .map(f -> f.apply(metadataObjectIds)) + .orElseThrow( + () -> + new IllegalArgumentException( + "Unexpected to reach here for metadata object type: " + type)); + + metadataObjectNames.forEach( + (id, fullName) -> { + // Metadata object may be deleted asynchronously when we query the name, so it + // will return null, we should skip this metadata object. + if (fullName != null) { + metadataObjects.add(MetadataObjects.parse(fullName, type)); + } + }); + }); Review Comment: I would suggest changing to use for..loop here instead of using stream, it is very hard to read the code. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@gravitino.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org