HDFS-15276. Concat on INodeRefernce fails with illegal state exception. Contributed by hemanthboyina
This commit is contained in:
parent
af85971a58
commit
5958af4dbc
@ -544,7 +544,7 @@ public boolean removeChild(final INode child) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final INode removed = children.remove(i);
|
final INode removed = children.remove(i);
|
||||||
Preconditions.checkState(removed == child);
|
Preconditions.checkState(removed.equals(child));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1319,4 +1319,38 @@ public void testQuotaOnTruncateWithSnapshot() throws Exception {
|
|||||||
assertEquals(fs.getContentSummary(root).getSpaceConsumed(),
|
assertEquals(fs.getContentSummary(root).getSpaceConsumed(),
|
||||||
fs.getQuotaUsage(root).getSpaceConsumed());
|
fs.getQuotaUsage(root).getSpaceConsumed());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test concat on file which is a reference.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testConcatOnInodeRefernce() throws IOException {
|
||||||
|
String dir = "/testConcat";
|
||||||
|
Path trgDir = new Path(dir);
|
||||||
|
fs.mkdirs(new Path(dir), FsPermission.getDirDefault());
|
||||||
|
|
||||||
|
// Create a target file
|
||||||
|
Path trg = new Path(dir, "file");
|
||||||
|
DFSTestUtil.createFile(fs, trg, 512, (short) 2, 0);
|
||||||
|
|
||||||
|
String dir2 = "/dir2";
|
||||||
|
Path srcDir = new Path(dir2);
|
||||||
|
// create a source file
|
||||||
|
fs.mkdirs(srcDir);
|
||||||
|
fs.allowSnapshot(srcDir);
|
||||||
|
Path src = new Path(srcDir, "file1");
|
||||||
|
DFSTestUtil.createFile(fs, src, 512, (short) 2, 0);
|
||||||
|
|
||||||
|
// make the file as an Inode reference and delete the reference
|
||||||
|
fs.createSnapshot(srcDir, "s1");
|
||||||
|
fs.rename(src, trgDir);
|
||||||
|
fs.deleteSnapshot(srcDir, "s1");
|
||||||
|
Path[] srcs = new Path[1];
|
||||||
|
srcs[0] = new Path(dir, "file1");
|
||||||
|
assertEquals(2, fs.getContentSummary(new Path(dir)).getFileCount());
|
||||||
|
|
||||||
|
// perform concat
|
||||||
|
fs.concat(trg, srcs);
|
||||||
|
assertEquals(1, fs.getContentSummary(new Path(dir)).getFileCount());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user