HDFS-10764. Fix INodeFile#getBlocks to not return null. Contributed by Arpit Agarwal.

(cherry picked from commit 0faee62a0c)
(cherry picked from commit fff0418458)
This commit is contained in:
Jing Zhao 2016-08-19 22:13:36 -07:00
parent b2efb2040c
commit 8628ad0790
1 changed files with 12 additions and 15 deletions

View File

@ -135,14 +135,14 @@ public class INodeFile extends INodeWithAdditionalFields
super(id, name, permissions, mtime, atime);
header = HeaderFormat.toLong(preferredBlockSize, replication,
storagePolicyID);
this.blocks = blklist;
setBlocks(blklist);
}
public INodeFile(INodeFile that) {
super(that);
this.header = that.header;
this.blocks = that.blocks;
this.features = that.features;
setBlocks(that.blocks);
}
public INodeFile(INodeFile that, FileDiffList diffs) {
@ -212,9 +212,6 @@ public class INodeFile extends INodeWithAdditionalFields
/** Assert all blocks are complete. */
private void assertAllBlocksComplete(int numCommittedAllowed,
short minReplication) {
if (blocks == null) {
return;
}
for (int i = 0; i < blocks.length; i++) {
final String err = checkBlockComplete(blocks, i, numCommittedAllowed,
minReplication);
@ -283,7 +280,7 @@ public class INodeFile extends INodeWithAdditionalFields
BlockInfo removeLastBlock(Block oldblock) {
Preconditions.checkState(isUnderConstruction(),
"file is no longer under construction");
if (blocks == null || blocks.length == 0) {
if (blocks.length == 0) {
return null;
}
int size_1 = blocks.length - 1;
@ -501,7 +498,7 @@ public class INodeFile extends INodeWithAdditionalFields
* add a block to the block list
*/
void addBlock(BlockInfo newblock) {
if (this.blocks == null) {
if (this.blocks.length == 0) {
this.setBlocks(new BlockInfo[]{newblock});
} else {
int size = this.blocks.length;
@ -514,12 +511,12 @@ public class INodeFile extends INodeWithAdditionalFields
/** Set the blocks. */
private void setBlocks(BlockInfo[] blocks) {
this.blocks = blocks;
this.blocks = (blocks != null ? blocks : BlockInfo.EMPTY_ARRAY);
}
/** Clear all blocks of the file. */
public void clearBlocks() {
setBlocks(BlockInfo.EMPTY_ARRAY);
this.blocks = BlockInfo.EMPTY_ARRAY;
}
@Override
@ -704,7 +701,7 @@ public class INodeFile extends INodeWithAdditionalFields
*/
public final long computeFileSize(boolean includesLastUcBlock,
boolean usePreferredBlockSize4LastUcBlock) {
if (blocks == null || blocks.length == 0) {
if (blocks.length == 0) {
return 0;
}
final int last = blocks.length - 1;
@ -769,7 +766,7 @@ public class INodeFile extends INodeWithAdditionalFields
* Return the penultimate allocated block for this file.
*/
BlockInfo getPenultimateBlock() {
if (blocks == null || blocks.length <= 1) {
if (blocks.length <= 1) {
return null;
}
return blocks[blocks.length - 2];
@ -777,12 +774,12 @@ public class INodeFile extends INodeWithAdditionalFields
@Override
public BlockInfo getLastBlock() {
return blocks == null || blocks.length == 0? null: blocks[blocks.length-1];
return blocks.length == 0 ? null: blocks[blocks.length-1];
}
@Override
public int numBlocks() {
return blocks == null ? 0 : blocks.length;
return blocks.length;
}
@VisibleForTesting
@ -793,7 +790,7 @@ public class INodeFile extends INodeWithAdditionalFields
out.print(", fileSize=" + computeFileSize(snapshotId));
// only compare the first block
out.print(", blocks=");
out.print(blocks == null || blocks.length == 0? null: blocks[0]);
out.print(blocks.length == 0 ? null: blocks[0]);
out.println();
}
@ -838,7 +835,7 @@ public class INodeFile extends INodeWithAdditionalFields
long newLength, BlockStoragePolicy bsps,
QuotaCounts delta) {
final BlockInfo[] blocks = getBlocks();
if (blocks == null || blocks.length == 0) {
if (blocks.length == 0) {
return;
}