HDFS-8460. Erasure Coding: stateful read result doesn't match data occasionally because of flawed test. Contributed by Walter Su.

This commit is contained in:
Zhe Zhang 2015-06-05 13:39:37 -07:00
parent c0929ab3c2
commit 2eee19cd1d
3 changed files with 10 additions and 0 deletions

View File

@ -286,3 +286,6 @@
HDFS-8319. Erasure Coding: support decoding for stateful read.
(Jing Zhao via zhz)
HDFS-8460. Erasure Coding: stateful read result doesn't match data
occasionally because of flawed test. (Walter Su via zhz)

View File

@ -1859,6 +1859,7 @@ public class DFSTestUtil {
/**
* Creates the metadata of a file in striped layout. This method only
* manipulates the NameNode state without injecting data to DataNode.
* You should disable periodical heartbeat before use this.
* @param file Path of the file to create
* @param dir Parent path of the file
* @param numBlocks Number of striped block groups to add to the file
@ -1908,6 +1909,7 @@ public class DFSTestUtil {
* Adds a striped block group to a file. This method only manipulates NameNode
* states of the file and the block without injecting data to DataNode.
* It does mimic block reports.
* You should disable periodical heartbeat before use this.
* @param dataNodes List DataNodes to host the striped block group
* @param previous Previous block in the file
* @param numStripes Number of stripes in each block group

View File

@ -32,6 +32,8 @@ import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.apache.hadoop.hdfs.server.datanode.DataNode;
import org.apache.hadoop.hdfs.server.datanode.DataNodeTestUtils;
import org.apache.hadoop.hdfs.server.datanode.SimulatedFSDataset;
import org.apache.hadoop.hdfs.server.namenode.ErasureCodingSchemaManager;
import org.apache.hadoop.hdfs.util.StripedBlockUtil;
@ -71,6 +73,9 @@ public class TestDFSStripedInputStream {
cluster = new MiniDFSCluster.Builder(conf).numDataNodes(
DATA_BLK_NUM + PARITY_BLK_NUM).build();
cluster.waitActive();
for (DataNode dn : cluster.getDataNodes()) {
DataNodeTestUtils.setHeartbeatsDisabledForTests(dn, true);
}
fs = cluster.getFileSystem();
fs.mkdirs(dirPath);
fs.getClient().createErasureCodingZone(dirPath.toString(), null, CELLSIZE);