HDFS-7936. Erasure coding: resolving conflicts when merging with HDFS-7903 and HDFS-7435. Contributed by Zhe Zhang.
This commit is contained in:
parent
68caf8728e
commit
11585883a9
@ -535,7 +535,7 @@ private AbstractList<BlockInfoContiguous> handleInsufficientlyReplicated(
|
||||
*/
|
||||
private void processBlocksForDecomInternal(
|
||||
final DatanodeDescriptor datanode,
|
||||
final Iterator<BlockInfoContiguous> it,
|
||||
final Iterator<? extends BlockInfo> it,
|
||||
final List<BlockInfoContiguous> insufficientlyReplicated,
|
||||
boolean pruneSufficientlyReplicated) {
|
||||
boolean firstReplicationLog = true;
|
||||
|
@ -2030,7 +2030,7 @@ boolean truncateInternal(String src, long newLength,
|
||||
}
|
||||
|
||||
// Check if the file is already being truncated with the same length
|
||||
final BlockInfoContiguous last = file.getLastBlock();
|
||||
final BlockInfo last = file.getLastBlock();
|
||||
if (last != null && last.getBlockUCState() == BlockUCState.UNDER_RECOVERY) {
|
||||
final Block truncateBlock
|
||||
= ((BlockInfoContiguousUnderConstruction)last).getTruncateBlock();
|
||||
|
@ -21,6 +21,7 @@
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.hadoop.hdfs.protocol.Block;
|
||||
import org.apache.hadoop.hdfs.server.blockmanagement.BlockInfo;
|
||||
import org.apache.hadoop.hdfs.server.blockmanagement.BlockInfoContiguous;
|
||||
import org.apache.hadoop.hdfs.server.blockmanagement.BlockInfoContiguousUnderConstruction;
|
||||
import org.apache.hadoop.hdfs.server.common.HdfsServerConstants;
|
||||
@ -131,7 +132,7 @@ void combineAndCollectSnapshotBlocks(
|
||||
break;
|
||||
}
|
||||
// Check if last block is part of truncate recovery
|
||||
BlockInfoContiguous lastBlock = file.getLastBlock();
|
||||
BlockInfo lastBlock = file.getLastBlock();
|
||||
Block dontRemoveBlock = null;
|
||||
if (lastBlock != null && lastBlock.getBlockUCState().equals(
|
||||
HdfsServerConstants.BlockUCState.UNDER_RECOVERY)) {
|
||||
|
@ -48,7 +48,7 @@
|
||||
import org.apache.hadoop.hdfs.protocol.HdfsConstants.DatanodeReportType;
|
||||
import org.apache.hadoop.hdfs.protocol.LocatedBlock;
|
||||
import org.apache.hadoop.hdfs.protocol.LocatedBlocks;
|
||||
import org.apache.hadoop.hdfs.server.blockmanagement.BlockInfoContiguous;
|
||||
import org.apache.hadoop.hdfs.server.blockmanagement.BlockInfo;
|
||||
import org.apache.hadoop.hdfs.server.blockmanagement.BlockManager;
|
||||
import org.apache.hadoop.hdfs.server.blockmanagement.BlockManagerTestUtil;
|
||||
import org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor;
|
||||
@ -671,8 +671,7 @@ public void testRecommission() throws Exception {
|
||||
GenericTestUtils.waitFor(new Supplier<Boolean>() {
|
||||
@Override
|
||||
public Boolean get() {
|
||||
BlockInfoContiguous info =
|
||||
blockManager.getStoredBlock(b.getLocalBlock());
|
||||
BlockInfo info = blockManager.getStoredBlock(b.getLocalBlock());
|
||||
int count = 0;
|
||||
StringBuilder sb = new StringBuilder("Replica locations: ");
|
||||
for (int i = 0; i < info.numNodes(); i++) {
|
||||
|
@ -265,9 +265,9 @@ public void testAddUCReplica() throws Exception {
|
||||
ReplicaBeingWritten replica = new ReplicaBeingWritten(block, null, null,
|
||||
null);
|
||||
blocks.add(replica);
|
||||
BlockListAsLongs bll = new BlockListAsLongs(null, blocks);
|
||||
BlockListAsLongs bll = BlockListAsLongs.encode(blocks);
|
||||
StorageBlockReport[] reports = {new StorageBlockReport(storage,
|
||||
bll.getBlockListAsLongs())};
|
||||
bll)};
|
||||
cluster.getNameNodeRpc().blockReport(dn.getDNRegistrationForBP(bpId),
|
||||
bpId, reports);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user