sumitagrawl commented on code in PR #6492:
URL: https://github.com/apache/ozone/pull/6492#discussion_r1562390086
##########
hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/codec/NSSummaryCodec.java:
##########
@@ -110,13 +113,17 @@ public NSSummary fromPersistedFormat(byte[] rawData)
throws IOException {
int strLen = in.readInt();
if (strLen == 0) {
+ long parentId = in.readLong(); // Deserialize parentId
+ res.setParentId(parentId);
return res;
}
byte[] buffer = new byte[strLen];
int bytesRead = in.read(buffer);
assert (bytesRead == strLen);
String dirName = stringCodec.fromPersistedFormat(buffer);
res.setDirName(dirName);
+ long parentId = in.readLong();
Review Comment:
How about case before upgrade, where db do not have parentId, and now recon
is upgraded. Compatibility case handling.
##########
hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/ContainerEndpoint.java:
##########
@@ -278,6 +286,8 @@ public Response getKeysForContainer(
keyMetadata.setBucket(omKeyInfo.getBucketName());
keyMetadata.setVolume(omKeyInfo.getVolumeName());
keyMetadata.setKey(omKeyInfo.getKeyName());
+ keyMetadata.setCompletePath(ReconUtils.constructFullPath(omKeyInfo,
Review Comment:
Do this have any impact if the keys belong to OBS or Legacy (with fs enabled
or disabled) ?
##########
hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/ReconUtils.java:
##########
@@ -244,25 +249,69 @@ public void untarCheckpointFile(File tarFile, Path
destPath)
}
}
+
+ /**
+ * Constructs the full path of a key from its OmKeyInfo using a bottom-up
approach, starting from the leaf node.
+ * <p>
+ * The method begins with the leaf node (the key itself) and recursively
prepends parent directory names, fetched
+ * via NSSummary objects, until reaching the parent bucket (parentId is -1).
It effectively builds the path from
+ * bottom to top, finally prepending the volume and bucket names to complete
the full path.
+ *
+ * @param omKeyInfo The OmKeyInfo object for the key
+ * @return The constructed full path of the key as a String.
+ * @throws IOException
+ */
+ public static String constructFullPath(OmKeyInfo omKeyInfo,
+ ReconNamespaceSummaryManager
reconNamespaceSummaryManager)
+ throws IOException {
+ StringBuilder fullPath = new StringBuilder(omKeyInfo.getKeyName());
+ long parentId = omKeyInfo.getParentObjectID();
+ boolean isDirectoryPresent = false;
+ while (parentId != -1) {
Review Comment:
If parent is bucket itself, do this logic works? means, parentId referring
to bucketId, check if this is possible? In OMKeyInfo, if dir/file at bucket
level, parentId is bucketId at OM side.
--
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]