HDFS-11904. Reuse iip in unprotectedRemoveXAttrs calls.
(cherry picked from commit 219f4c199e45f8ce7f41192493bf0dc8f1e5dc30) Conflicts: hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirErasureCodingOp.java
This commit is contained in:
parent
91b72a8aa5
commit
eb98773ac8
@ -170,7 +170,7 @@ static FileStatus removeXAttr(
|
||||
src = iip.getPath();
|
||||
checkXAttrChangeAccess(fsd, iip, xAttr, pc);
|
||||
|
||||
List<XAttr> removedXAttrs = unprotectedRemoveXAttrs(fsd, src, xAttrs);
|
||||
List<XAttr> removedXAttrs = unprotectedRemoveXAttrs(fsd, iip, xAttrs);
|
||||
if (removedXAttrs != null && !removedXAttrs.isEmpty()) {
|
||||
fsd.getEditLog().logRemoveXAttrs(src, removedXAttrs, logRetryCache);
|
||||
} else {
|
||||
@ -184,10 +184,9 @@ static FileStatus removeXAttr(
|
||||
}
|
||||
|
||||
static List<XAttr> unprotectedRemoveXAttrs(
|
||||
FSDirectory fsd, final String src, final List<XAttr> toRemove)
|
||||
FSDirectory fsd, final INodesInPath iip, final List<XAttr> toRemove)
|
||||
throws IOException {
|
||||
assert fsd.hasWriteLock();
|
||||
INodesInPath iip = fsd.getINodesInPath(src, DirOp.WRITE);
|
||||
INode inode = FSDirectory.resolveLastINode(iip);
|
||||
int snapshotId = iip.getLatestSnapshotId();
|
||||
List<XAttr> existingXAttrs = XAttrStorage.readINodeXAttrs(inode);
|
||||
|
@ -909,7 +909,8 @@ private long applyEditLogOp(FSEditLogOp op, FSDirectory fsDir,
|
||||
}
|
||||
case OP_REMOVE_XATTR: {
|
||||
RemoveXAttrOp removeXAttrOp = (RemoveXAttrOp) op;
|
||||
FSDirXAttrOp.unprotectedRemoveXAttrs(fsDir, removeXAttrOp.src,
|
||||
INodesInPath iip = fsDir.getINodesInPath(removeXAttrOp.src, DirOp.WRITE);
|
||||
FSDirXAttrOp.unprotectedRemoveXAttrs(fsDir, iip,
|
||||
removeXAttrOp.xAttrs);
|
||||
if (toAddRetryCache) {
|
||||
fsNamesys.addCacheEntry(removeXAttrOp.rpcClientId,
|
||||
|
Loading…
x
Reference in New Issue
Block a user