xiaoyuyao commented on a change in pull request #692: HDDS-3168. Improve read efficiency by merging a lot of RPC call getContainerWithPipeline into one URL: https://github.com/apache/hadoop-ozone/pull/692#discussion_r394545983
########## File path: hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/KeyManagerImpl.java ########## @@ -687,36 +687,49 @@ public OmKeyInfo lookupKey(OmKeyArgs args, String clientAddress) */ @VisibleForTesting protected void refreshPipeline(OmKeyInfo value) throws IOException { - if (value != null && - CollectionUtils.isNotEmpty(value.getKeyLocationVersions())) { - Map<Long, ContainerWithPipeline> containerWithPipelineMap = - new HashMap<>(); - for (OmKeyLocationInfoGroup key : value.getKeyLocationVersions()) { - for (OmKeyLocationInfo k : key.getLocationList()) { - // TODO: fix Some tests that may not initialize container client - // The production should always have containerClient initialized. - if (scmClient.getContainerClient() != null) { - try { - if (!containerWithPipelineMap.containsKey(k.getContainerID())) { - ContainerWithPipeline containerWithPipeline = scmClient - .getContainerClient() - .getContainerWithPipeline(k.getContainerID()); - containerWithPipelineMap.put(k.getContainerID(), - containerWithPipeline); - } - } catch (IOException ioEx) { - LOG.debug("Get containerPipeline failed for volume:{} bucket:{} " + // TODO: fix Some tests that may not initialize container client + // The production should always have containerClient initialized. + if (scmClient.getContainerClient() == null) { + return; + } + + if (value == null + || CollectionUtils.isEmpty(value.getKeyLocationVersions())) { + return; + } + + List<Long> containerIDs = new ArrayList<>(); Review comment: Can we use a set instead of a list to avoid the overhead of contains call for large Key? You can convert to a list at the end if that is easier to pass over RPC. ---------------------------------------------------------------- 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. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services --------------------------------------------------------------------- To unsubscribe, e-mail: ozone-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: ozone-issues-h...@hadoop.apache.org