HDFS-8937. Erasure coding: do not throw exception when setting replication factor on EC files. Contributed by Gao Rui.
This commit is contained in:
parent
53358fe680
commit
ddf4e78547
|
@ -406,3 +406,6 @@
|
||||||
|
|
||||||
HDFS-8909. Erasure coding: update BlockInfoContiguousUC and BlockInfoStripedUC
|
HDFS-8909. Erasure coding: update BlockInfoContiguousUC and BlockInfoStripedUC
|
||||||
to use BlockUnderConstructionFeature. (Jing Zhao via waltersu4549)
|
to use BlockUnderConstructionFeature. (Jing Zhao via waltersu4549)
|
||||||
|
|
||||||
|
HDFS-8937. Erasure coding: do not throw exception when setting replication on
|
||||||
|
EC file. (Gao Rui via jing9)
|
||||||
|
|
|
@ -405,15 +405,12 @@ static BlockInfo[] unprotectedSetReplication(
|
||||||
final BlockManager bm = fsd.getBlockManager();
|
final BlockManager bm = fsd.getBlockManager();
|
||||||
final INodesInPath iip = fsd.getINodesInPath4Write(src, true);
|
final INodesInPath iip = fsd.getINodesInPath4Write(src, true);
|
||||||
final INode inode = iip.getLastINode();
|
final INode inode = iip.getLastINode();
|
||||||
if (inode == null || !inode.isFile()) {
|
if (inode == null || !inode.isFile() || inode.asFile().isStriped()) {
|
||||||
|
// TODO we do not support replication on stripe layout files yet
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
INodeFile file = inode.asFile();
|
|
||||||
if (file.isStriped()) {
|
|
||||||
throw new UnsupportedActionException(
|
|
||||||
"Cannot set replication to a file with striped blocks");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
INodeFile file = inode.asFile();
|
||||||
// Make sure the directory has sufficient quotas
|
// Make sure the directory has sufficient quotas
|
||||||
short oldBR = file.getPreferredBlockReplication();
|
short oldBR = file.getPreferredBlockReplication();
|
||||||
|
|
||||||
|
|
|
@ -166,14 +166,8 @@ public void testReplication() throws IOException {
|
||||||
fs.create(fooFile, FsPermission.getFileDefault(), true,
|
fs.create(fooFile, FsPermission.getFileDefault(), true,
|
||||||
conf.getInt(CommonConfigurationKeys.IO_FILE_BUFFER_SIZE_KEY, 4096),
|
conf.getInt(CommonConfigurationKeys.IO_FILE_BUFFER_SIZE_KEY, 4096),
|
||||||
(short)0, fs.getDefaultBlockSize(fooFile), null);
|
(short)0, fs.getDefaultBlockSize(fooFile), null);
|
||||||
|
// set replication should be a no-op
|
||||||
try {
|
fs.setReplication(fooFile, (short) 3);
|
||||||
fs.setReplication(fooFile, (short) 3);
|
|
||||||
fail("Shouldn't allow to set replication to a file with striped blocks");
|
|
||||||
} catch (IOException e) {
|
|
||||||
assertExceptionContains(
|
|
||||||
"Cannot set replication to a file with striped blocks", e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
Loading…
Reference in New Issue