Skip to content

Commit

Permalink
HDFS-7936. Erasure coding: resolving conflicts when merging with HDFS…
Browse files Browse the repository at this point in the history
…-7903, HDFS-7435 and HDFS-7930 (this commit is for HDFS-7930 only)
  • Loading branch information
zhe-thoughts authored and Zhe Zhang committed May 26, 2015
1 parent df29724 commit 544f75d
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 8 deletions.
Expand Up @@ -2135,17 +2135,18 @@ private Collection<Block> processReport(
* Mark block replicas as corrupt except those on the storages in * Mark block replicas as corrupt except those on the storages in
* newStorages list. * newStorages list.
*/ */
public void markBlockReplicasAsCorrupt(BlockInfoContiguous block, public void markBlockReplicasAsCorrupt(Block oldBlock,
BlockInfo block,
long oldGenerationStamp, long oldNumBytes, long oldGenerationStamp, long oldNumBytes,
DatanodeStorageInfo[] newStorages) throws IOException { DatanodeStorageInfo[] newStorages) throws IOException {
assert namesystem.hasWriteLock(); assert namesystem.hasWriteLock();
BlockToMarkCorrupt b = null; BlockToMarkCorrupt b = null;
if (block.getGenerationStamp() != oldGenerationStamp) { if (block.getGenerationStamp() != oldGenerationStamp) {
b = new BlockToMarkCorrupt(block, oldGenerationStamp, b = new BlockToMarkCorrupt(oldBlock, block, oldGenerationStamp,
"genstamp does not match " + oldGenerationStamp "genstamp does not match " + oldGenerationStamp
+ " : " + block.getGenerationStamp(), Reason.GENSTAMP_MISMATCH); + " : " + block.getGenerationStamp(), Reason.GENSTAMP_MISMATCH);
} else if (block.getNumBytes() != oldNumBytes) { } else if (block.getNumBytes() != oldNumBytes) {
b = new BlockToMarkCorrupt(block, b = new BlockToMarkCorrupt(oldBlock, block,
"length does not match " + oldNumBytes "length does not match " + oldNumBytes
+ " : " + block.getNumBytes(), Reason.SIZE_MISMATCH); + " : " + block.getNumBytes(), Reason.SIZE_MISMATCH);
} else { } else {
Expand Down
Expand Up @@ -2630,7 +2630,7 @@ private QuotaCounts verifyQuotaForUCBlock(INodeFile file, INodesInPath iip)
/** Compute quota change for converting a complete block to a UC block */ /** Compute quota change for converting a complete block to a UC block */
private QuotaCounts computeQuotaDeltaForUCBlock(INodeFile file) { private QuotaCounts computeQuotaDeltaForUCBlock(INodeFile file) {
final QuotaCounts delta = new QuotaCounts.Builder().build(); final QuotaCounts delta = new QuotaCounts.Builder().build();
final BlockInfoContiguous lastBlock = file.getLastBlock(); final BlockInfo lastBlock = file.getLastBlock();
if (lastBlock != null) { if (lastBlock != null) {
final long diff = file.getPreferredBlockSize() - lastBlock.getNumBytes(); final long diff = file.getPreferredBlockSize() - lastBlock.getNumBytes();
final short repl = file.getPreferredBlockReplication(); final short repl = file.getPreferredBlockReplication();
Expand Down Expand Up @@ -3854,8 +3854,9 @@ void commitBlockSynchronization(ExtendedBlock oldBlock,
} else { } else {
iFile.convertLastBlockToUC(storedBlock, trimmedStorageInfos); iFile.convertLastBlockToUC(storedBlock, trimmedStorageInfos);
if (closeFile) { if (closeFile) {
blockManager.markBlockReplicasAsCorrupt(storedBlock, blockManager.markBlockReplicasAsCorrupt(oldBlock.getLocalBlock(),
oldGenerationStamp, oldNumBytes, trimmedStorageInfos); storedBlock, oldGenerationStamp, oldNumBytes,
trimmedStorageInfos);
} }
} }
} }
Expand Down
Expand Up @@ -982,7 +982,7 @@ public long collectBlocksBeyondMax(final long max,
void computeQuotaDeltaForTruncate( void computeQuotaDeltaForTruncate(
long newLength, BlockStoragePolicy bsps, long newLength, BlockStoragePolicy bsps,
QuotaCounts delta) { QuotaCounts delta) {
final BlockInfoContiguous[] blocks = getBlocks(); final BlockInfo[] blocks = getBlocks();
if (blocks == null || blocks.length == 0) { if (blocks == null || blocks.length == 0) {
return; return;
} }
Expand All @@ -1001,7 +1001,7 @@ void computeQuotaDeltaForTruncate(


for (int i = blocks.length - 1; i >= 0 && size > newLength; for (int i = blocks.length - 1; i >= 0 && size > newLength;
size -= blocks[i].getNumBytes(), --i) { size -= blocks[i].getNumBytes(), --i) {
BlockInfoContiguous bi = blocks[i]; BlockInfo bi = blocks[i];
long truncatedBytes; long truncatedBytes;
if (size - newLength < bi.getNumBytes()) { if (size - newLength < bi.getNumBytes()) {
// Record a full block as the last block will be copied during // Record a full block as the last block will be copied during
Expand Down

0 comments on commit 544f75d

Please sign in to comment.