|
@@ -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;
|
|
|
}
|
|
|
|