[ 
https://issues.apache.org/jira/browse/HDFS-12201?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Manoj Govindassamy updated HDFS-12201:
--------------------------------------
    Attachment:     (was: HDFS-12201.test.01.patch)

> INode#getSnapshotINode() should get INodeAttributes from 
> INodeAttributesProvider for the current INode
> ------------------------------------------------------------------------------------------------------
>
>                 Key: HDFS-12201
>                 URL: https://issues.apache.org/jira/browse/HDFS-12201
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: snapshots
>    Affects Versions: 2.8.0
>            Reporter: Manoj Govindassamy
>            Assignee: Manoj Govindassamy
>         Attachments: HDFS-12201.test.01.patch
>
>
> Problem: When an external INodeAttributesProvider is enabled, SnapshotDiff is 
> not detecting changes in files when the external ACL/XAttr attributes change. 
> {{FileWithSnapshotFeature#changedBetweenSnapshots()}} when trying to detect 
> changes in snapshots for the given file, does meta data comparison which 
> takes in the attributes retrieved from {{INode#getSnapshotINode()}}
> {{INodeFile}}
> {noformat}
>   @Override
>   public INodeFileAttributes getSnapshotINode(final int snapshotId) {
>     FileWithSnapshotFeature sf = this.getFileWithSnapshotFeature();
>     if (sf != null) {
>       return sf.getDiffs().getSnapshotINode(snapshotId, this);
>     } else {
>       return this;
>     }
>   }
> {noformat}
> {{AbstractINodeDiffList#getSnapshotINode}}
> {noformat}
>   public A getSnapshotINode(final int snapshotId, final A currentINode) {
>     final D diff = getDiffById(snapshotId);
>     final A inode = diff == null? null: diff.getSnapshotINode();
>     return inode == null? currentINode: inode;
>   }
> {noformat}
> But, INodeFile, INodeDirectory #getSnapshotINode() returns the current 
> INode's local INodeAttributes if there is anything available for the given 
> snapshot id. When there is an INodeAttributesProvider configured, attributes 
> provided by the external provider could be different from the local. But, 
> getSnapshotINode() always returns the local attributes without retrieving 
> them from attributes provider. 



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

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

Reply via email to