HDFS-10764. Fix INodeFile#getBlocks to not return null. Contributed by Arpit Agarwal.
(cherry picked from commit 0faee62a0c8c1b8fd83227babfd00fbc2b26bddf)
This commit is contained in:
parent
a299146b6d
commit
fff0418458
@ -136,14 +136,14 @@ static long toLong(long preferredBlockSize, short replication,
|
||||
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) {
|
||||
@ -213,9 +213,6 @@ void toCompleteFile(long mtime, int numCommittedAllowed, short minReplication) {
|
||||
/** 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);
|
||||
@ -284,7 +281,7 @@ void setLastBlock(BlockInfo blk) {
|
||||
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;
|
||||
@ -503,7 +500,7 @@ void concatBlocks(INodeFile[] inodes, BlockManager bm) {
|
||||
* 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;
|
||||
@ -516,12 +513,12 @@ void addBlock(BlockInfo newblock) {
|
||||
|
||||
/** 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
|
||||
@ -705,7 +702,7 @@ public final long computeFileSizeNotIncludingLastUcBlock() {
|
||||
*/
|
||||
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;
|
||||
@ -770,7 +767,7 @@ public final QuotaCounts storagespaceConsumed(BlockStoragePolicy bsp) {
|
||||
* 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];
|
||||
@ -778,12 +775,12 @@ BlockInfo getPenultimateBlock() {
|
||||
|
||||
@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
|
||||
@ -794,7 +791,7 @@ public void dumpTreeRecursively(PrintWriter out, StringBuilder prefix,
|
||||
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();
|
||||
}
|
||||
|
||||
@ -842,7 +839,7 @@ void computeQuotaDeltaForTruncate(
|
||||
long newLength, BlockStoragePolicy bsps,
|
||||
QuotaCounts delta) {
|
||||
final BlockInfo[] blocks = getBlocks();
|
||||
if (blocks == null || blocks.length == 0) {
|
||||
if (blocks.length == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user