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:
[email protected]
With regards,
Apache Git Services
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]