ptlrs commented on code in PR #7748:
URL: https://github.com/apache/ozone/pull/7748#discussion_r1957803814


##########
hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/debug/ReadReplicas.java:
##########
@@ -246,4 +204,91 @@ private File createDirectory(String volumeName, String 
bucketName,
     }
     return dir;
   }
+
+  private void findCandidateKeys(OzoneClient ozoneClient, OzoneAddress 
address) throws IOException {
+    ObjectStore objectStore = ozoneClient.getObjectStore();
+    String volumeName = address.getVolumeName();
+    String bucketName = address.getBucketName();
+    String keyName = address.getKeyName();
+    if (!keyName.isEmpty()) {
+      processKey(ozoneClient, volumeName, bucketName, keyName);
+    } else if (!bucketName.isEmpty()) {
+      OzoneVolume volume = objectStore.getVolume(volumeName);
+      OzoneBucket bucket = volume.getBucket(bucketName);
+      checkBucket(bucket, ozoneClient);
+    } else if (!volumeName.isEmpty()) {
+      OzoneVolume volume = objectStore.getVolume(volumeName);
+      checkVolume(volume, ozoneClient);
+    } else {
+      for (Iterator<? extends OzoneVolume> it = objectStore.listVolumes(null); 
it.hasNext();) {
+        checkVolume(it.next(), ozoneClient);
+      }
+    }
+  }
+
+  private void checkVolume(OzoneVolume volume, OzoneClient ozoneClient) throws 
IOException {
+    for (Iterator<? extends OzoneBucket> it = volume.listBuckets(null); 
it.hasNext();) {
+      OzoneBucket bucket = it.next();
+      checkBucket(bucket, ozoneClient);
+    }
+  }
+
+  private void checkBucket(OzoneBucket bucket, OzoneClient ozoneClient) throws 
IOException {
+    String volumeName = bucket.getVolumeName();
+    String bucketName = bucket.getName();
+    for (Iterator<? extends OzoneKey> it = bucket.listKeys(null); 
it.hasNext();) {
+      OzoneKey key = it.next();
+//    TODO: Remove this check once HDDS-12094 is fixed
+      if (key.getName().endsWith("/")) {
+        continue;
+      }
+      processKey(ozoneClient, volumeName, bucketName, key.getName());
+    }
+  }
+
+  private void processKey(OzoneClient client, String volumeName, String 
bucketName, String keyName) throws IOException {
+    System.out.println("Processing key : " + volumeName + "/" + bucketName + 
"/" + keyName);
+    boolean isChecksumVerifyEnabled
+        = getConf().getBoolean("ozone.client.verify.checksum", true);
+    OzoneConfiguration configuration = new OzoneConfiguration(getConf());
+    configuration.setBoolean("ozone.client.verify.checksum",
+        !isChecksumVerifyEnabled);
+    RpcClient newClient = new RpcClient(configuration, null);

Review Comment:
   Fixed. New implementation initializes a client if absent. 
   
   @jojochuang I will improve the concurrency as part of 
[HDDS-12209](https://issues.apache.org/jira/browse/HDDS-12209) so as to not 
block the other PRs that depend on this.  



-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to