[
https://issues.apache.org/jira/browse/HDFS-12336?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16141247#comment-16141247
]
Xiao Chen commented on HDFS-12336:
----------------------------------
Thanks for revving and providing more details Wellington!
It all makes sense to me, a few comments:
- for the {{isValidEZPath}} check, can we check {{pathName}} for absolute path,
instead of walking through the inode all the way to the root? INode.java
currently has {{checkAbsolutePath}} which is exactly where the exception is
thrown now. Perhaps we can extract the if condition to a helper method, and
reuse it in our {{isValidEZPath}} check?
- Suggest to use javadoc on the {{isValidEZPath}} method comment. Replacing the
'/*' with '/**' should do.
- The added test looks good. I think we should call out why move to trash then
delete is necessary (instead of fsWrapper.delete): to create a inodereference
for the test.
- Instead of 2 {{assertZonePresent}}, it feels to me we could list the zones
once, then check things while going through the iterator.
- Similarly for the last assert, maybe we can verify from listing directly,
rather than the current way of catching assertion error on a method named
{{assertZonePresent}} and assert the message. :)
> Listing encryption zones still fails when deleted EZ is not a direct child of
> snapshottable directory
> -----------------------------------------------------------------------------------------------------
>
> Key: HDFS-12336
> URL: https://issues.apache.org/jira/browse/HDFS-12336
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: hdfs
> Affects Versions: 3.0.0-alpha4
> Reporter: Wellington Chevreuil
> Assignee: Wellington Chevreuil
> Priority: Minor
> Attachments: HDFS-12336.001.patch, HDFS-12336.002.patch
>
>
> The fix proposed on HDFS-11197 didn't cover the scenario where the EZ deleted
> but still under a snapshot is not a direct child of the snapshottable
> directory.
> Here the code snippet proposed on HDFS-11197 that would avoid the error
> reported by *hdfs crypto -listZones* when a deleted EZ is still under a given
> snapshot:
> {noformat}
> INode lastINode = null;
> if (inode.getParent() != null || inode.isRoot()) {
> INodesInPath iip = dir.getINodesInPath(pathName, DirOp.READ_LINK);
> lastINode = iip.getLastINode();
> }
> if (lastINode == null || lastINode.getId() != ezi.getINodeId()) {
> continue;
> }
> {noformat}
> It will ignore EZs when it's a direct child of a snapshot, because its parent
> inode will be null, and it isn't the root inode. However, if the EZ is not
> directly under snapshottable directory, its parent will not be null, and it
> will pass this check, so it will fail further due *absolute path required*
> validation error.
> I would like to work on a fix that would also cover this scenario.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]