hadoop-hdfs-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Manoj Govindassamy (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HDFS-12201) INode#getSnapshotINode() should get INodeAttributes from INodeAttributesProvider for the current INode
Date Wed, 26 Jul 2017 23:16:02 GMT

     [ 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: hdfs-issues-unsubscribe@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-help@hadoop.apache.org


Mime
View raw message