|
@@ -808,9 +808,9 @@ public class BlockManager {
|
|
final DatanodeDescriptor node = getDatanodeManager().getDatanode(datanode);
|
|
final DatanodeDescriptor node = getDatanodeManager().getDatanode(datanode);
|
|
if (node == null) {
|
|
if (node == null) {
|
|
NameNode.stateChangeLog.warn("BLOCK* getBlocks: "
|
|
NameNode.stateChangeLog.warn("BLOCK* getBlocks: "
|
|
- + "Asking for blocks from an unrecorded node " + datanode.getName());
|
|
|
|
|
|
+ + "Asking for blocks from an unrecorded node " + datanode);
|
|
throw new HadoopIllegalArgumentException(
|
|
throw new HadoopIllegalArgumentException(
|
|
- "Datanode " + datanode.getName() + " not found.");
|
|
|
|
|
|
+ "Datanode " + datanode + " not found.");
|
|
}
|
|
}
|
|
|
|
|
|
int numBlocks = node.numBlocks();
|
|
int numBlocks = node.numBlocks();
|
|
@@ -882,7 +882,7 @@ public class BlockManager {
|
|
.hasNext();) {
|
|
.hasNext();) {
|
|
DatanodeDescriptor node = it.next();
|
|
DatanodeDescriptor node = it.next();
|
|
invalidateBlocks.add(b, node, false);
|
|
invalidateBlocks.add(b, node, false);
|
|
- datanodes.append(node.getName()).append(" ");
|
|
|
|
|
|
+ datanodes.append(node).append(" ");
|
|
}
|
|
}
|
|
if (datanodes.length() != 0) {
|
|
if (datanodes.length() != 0) {
|
|
NameNode.stateChangeLog.info("BLOCK* addToInvalidates: "
|
|
NameNode.stateChangeLog.info("BLOCK* addToInvalidates: "
|
|
@@ -921,7 +921,7 @@ public class BlockManager {
|
|
if (node == null) {
|
|
if (node == null) {
|
|
throw new IOException("Cannot mark block " +
|
|
throw new IOException("Cannot mark block " +
|
|
storedBlock.getBlockName() +
|
|
storedBlock.getBlockName() +
|
|
- " as corrupt because datanode " + dn.getName() +
|
|
|
|
|
|
+ " as corrupt because datanode " + dn +
|
|
" does not exist. ");
|
|
" does not exist. ");
|
|
}
|
|
}
|
|
|
|
|
|
@@ -955,11 +955,11 @@ public class BlockManager {
|
|
private void invalidateBlock(Block blk, DatanodeInfo dn)
|
|
private void invalidateBlock(Block blk, DatanodeInfo dn)
|
|
throws IOException {
|
|
throws IOException {
|
|
NameNode.stateChangeLog.info("BLOCK* invalidateBlock: "
|
|
NameNode.stateChangeLog.info("BLOCK* invalidateBlock: "
|
|
- + blk + " on " + dn.getName());
|
|
|
|
|
|
+ + blk + " on " + dn);
|
|
DatanodeDescriptor node = getDatanodeManager().getDatanode(dn);
|
|
DatanodeDescriptor node = getDatanodeManager().getDatanode(dn);
|
|
if (node == null) {
|
|
if (node == null) {
|
|
throw new IOException("Cannot invalidate block " + blk
|
|
throw new IOException("Cannot invalidate block " + blk
|
|
- + " because datanode " + dn.getName() + " does not exist.");
|
|
|
|
|
|
+ + " because datanode " + dn + " does not exist.");
|
|
}
|
|
}
|
|
|
|
|
|
// Check how many copies we have of the block
|
|
// Check how many copies we have of the block
|
|
@@ -977,11 +977,11 @@ public class BlockManager {
|
|
removeStoredBlock(blk, node);
|
|
removeStoredBlock(blk, node);
|
|
if(NameNode.stateChangeLog.isDebugEnabled()) {
|
|
if(NameNode.stateChangeLog.isDebugEnabled()) {
|
|
NameNode.stateChangeLog.debug("BLOCK* invalidateBlocks: "
|
|
NameNode.stateChangeLog.debug("BLOCK* invalidateBlocks: "
|
|
- + blk + " on " + dn.getName() + " listed for deletion.");
|
|
|
|
|
|
+ + blk + " on " + dn + " listed for deletion.");
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
NameNode.stateChangeLog.info("BLOCK* invalidateBlocks: " + blk + " on "
|
|
NameNode.stateChangeLog.info("BLOCK* invalidateBlocks: " + blk + " on "
|
|
- + dn.getName() + " is the only copy and was not deleted.");
|
|
|
|
|
|
+ + dn + " is the only copy and was not deleted.");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1224,11 +1224,11 @@ public class BlockManager {
|
|
StringBuilder targetList = new StringBuilder("datanode(s)");
|
|
StringBuilder targetList = new StringBuilder("datanode(s)");
|
|
for (int k = 0; k < targets.length; k++) {
|
|
for (int k = 0; k < targets.length; k++) {
|
|
targetList.append(' ');
|
|
targetList.append(' ');
|
|
- targetList.append(targets[k].getName());
|
|
|
|
|
|
+ targetList.append(targets[k]);
|
|
}
|
|
}
|
|
NameNode.stateChangeLog.info(
|
|
NameNode.stateChangeLog.info(
|
|
"BLOCK* ask "
|
|
"BLOCK* ask "
|
|
- + rw.srcNode.getName() + " to replicate "
|
|
|
|
|
|
+ + rw.srcNode + " to replicate "
|
|
+ rw.block + " to " + targetList);
|
|
+ rw.block + " to " + targetList);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -1410,15 +1410,15 @@ public class BlockManager {
|
|
try {
|
|
try {
|
|
final DatanodeDescriptor node = datanodeManager.getDatanode(nodeID);
|
|
final DatanodeDescriptor node = datanodeManager.getDatanode(nodeID);
|
|
if (node == null || !node.isAlive) {
|
|
if (node == null || !node.isAlive) {
|
|
- throw new IOException("ProcessReport from dead or unregistered node: "
|
|
|
|
- + nodeID.getName());
|
|
|
|
|
|
+ throw new IOException(
|
|
|
|
+ "ProcessReport from dead or unregistered node: " + nodeID);
|
|
}
|
|
}
|
|
|
|
|
|
// To minimize startup time, we discard any second (or later) block reports
|
|
// To minimize startup time, we discard any second (or later) block reports
|
|
// that we receive while still in startup phase.
|
|
// that we receive while still in startup phase.
|
|
if (namesystem.isInStartupSafeMode() && !node.isFirstBlockReport()) {
|
|
if (namesystem.isInStartupSafeMode() && !node.isFirstBlockReport()) {
|
|
NameNode.stateChangeLog.info("BLOCK* processReport: "
|
|
NameNode.stateChangeLog.info("BLOCK* processReport: "
|
|
- + "discarded non-initial block report from " + nodeID.getName()
|
|
|
|
|
|
+ + "discarded non-initial block report from " + nodeID
|
|
+ " because namenode still in startup phase");
|
|
+ " because namenode still in startup phase");
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
@@ -1451,7 +1451,7 @@ public class BlockManager {
|
|
// Log the block report processing stats from Namenode perspective
|
|
// Log the block report processing stats from Namenode perspective
|
|
NameNode.getNameNodeMetrics().addBlockReport((int) (endTime - startTime));
|
|
NameNode.getNameNodeMetrics().addBlockReport((int) (endTime - startTime));
|
|
NameNode.stateChangeLog.info("BLOCK* processReport: from "
|
|
NameNode.stateChangeLog.info("BLOCK* processReport: from "
|
|
- + nodeID.getName() + ", blocks: " + newReport.getNumberOfBlocks()
|
|
|
|
|
|
+ + nodeID + ", blocks: " + newReport.getNumberOfBlocks()
|
|
+ ", processing time: " + (endTime - startTime) + " msecs");
|
|
+ ", processing time: " + (endTime - startTime) + " msecs");
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1511,7 +1511,7 @@ public class BlockManager {
|
|
}
|
|
}
|
|
for (Block b : toInvalidate) {
|
|
for (Block b : toInvalidate) {
|
|
NameNode.stateChangeLog.info("BLOCK* processReport: block "
|
|
NameNode.stateChangeLog.info("BLOCK* processReport: block "
|
|
- + b + " on " + node.getName() + " size " + b.getNumBytes()
|
|
|
|
|
|
+ + b + " on " + node + " size " + b.getNumBytes()
|
|
+ " does not belong to any file.");
|
|
+ " does not belong to any file.");
|
|
addToInvalidates(b, node);
|
|
addToInvalidates(b, node);
|
|
}
|
|
}
|
|
@@ -1662,7 +1662,7 @@ public class BlockManager {
|
|
|
|
|
|
if(LOG.isDebugEnabled()) {
|
|
if(LOG.isDebugEnabled()) {
|
|
LOG.debug("Reported block " + block
|
|
LOG.debug("Reported block " + block
|
|
- + " on " + dn.getName() + " size " + block.getNumBytes()
|
|
|
|
|
|
+ + " on " + dn + " size " + block.getNumBytes()
|
|
+ " replicaState = " + reportedState);
|
|
+ " replicaState = " + reportedState);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1837,7 +1837,7 @@ assert storedBlock.findDatanode(dn) < 0 : "Block " + block
|
|
// closed. So, ignore this report, assuming we will get a
|
|
// closed. So, ignore this report, assuming we will get a
|
|
// FINALIZED replica later. See HDFS-2791
|
|
// FINALIZED replica later. See HDFS-2791
|
|
LOG.info("Received an RBW replica for block " + storedBlock +
|
|
LOG.info("Received an RBW replica for block " + storedBlock +
|
|
- " on " + dn.getName() + ": ignoring it, since the block is " +
|
|
|
|
|
|
+ " on " + dn + ": ignoring it, since the block is " +
|
|
"complete with the same generation stamp.");
|
|
"complete with the same generation stamp.");
|
|
return null;
|
|
return null;
|
|
} else {
|
|
} else {
|
|
@@ -1850,7 +1850,7 @@ assert storedBlock.findDatanode(dn) < 0 : "Block " + block
|
|
default:
|
|
default:
|
|
String msg = "Unexpected replica state " + reportedState
|
|
String msg = "Unexpected replica state " + reportedState
|
|
+ " for block: " + storedBlock +
|
|
+ " for block: " + storedBlock +
|
|
- " on " + dn.getName() + " size " + storedBlock.getNumBytes();
|
|
|
|
|
|
+ " on " + dn + " size " + storedBlock.getNumBytes();
|
|
// log here at WARN level since this is really a broken HDFS
|
|
// log here at WARN level since this is really a broken HDFS
|
|
// invariant
|
|
// invariant
|
|
LOG.warn(msg);
|
|
LOG.warn(msg);
|
|
@@ -1949,7 +1949,7 @@ assert storedBlock.findDatanode(dn) < 0 : "Block " + block
|
|
if (storedBlock == null || storedBlock.getINode() == null) {
|
|
if (storedBlock == null || storedBlock.getINode() == null) {
|
|
// If this block does not belong to anyfile, then we are done.
|
|
// If this block does not belong to anyfile, then we are done.
|
|
NameNode.stateChangeLog.info("BLOCK* addStoredBlock: " + block + " on "
|
|
NameNode.stateChangeLog.info("BLOCK* addStoredBlock: " + block + " on "
|
|
- + node.getName() + " size " + block.getNumBytes()
|
|
|
|
|
|
+ + node + " size " + block.getNumBytes()
|
|
+ " but it does not belong to any file.");
|
|
+ " but it does not belong to any file.");
|
|
// we could add this block to invalidate set of this datanode.
|
|
// we could add this block to invalidate set of this datanode.
|
|
// it will happen in next block report otherwise.
|
|
// it will happen in next block report otherwise.
|
|
@@ -1972,7 +1972,7 @@ assert storedBlock.findDatanode(dn) < 0 : "Block " + block
|
|
curReplicaDelta = 0;
|
|
curReplicaDelta = 0;
|
|
NameNode.stateChangeLog.warn("BLOCK* addStoredBlock: "
|
|
NameNode.stateChangeLog.warn("BLOCK* addStoredBlock: "
|
|
+ "Redundant addStoredBlock request received for " + storedBlock
|
|
+ "Redundant addStoredBlock request received for " + storedBlock
|
|
- + " on " + node.getName() + " size " + storedBlock.getNumBytes());
|
|
|
|
|
|
+ + " on " + node + " size " + storedBlock.getNumBytes());
|
|
}
|
|
}
|
|
|
|
|
|
// Now check for completion of blocks and safe block count
|
|
// Now check for completion of blocks and safe block count
|
|
@@ -2035,7 +2035,7 @@ assert storedBlock.findDatanode(dn) < 0 : "Block " + block
|
|
|
|
|
|
StringBuilder sb = new StringBuilder(500);
|
|
StringBuilder sb = new StringBuilder(500);
|
|
sb.append("BLOCK* addStoredBlock: blockMap updated: ")
|
|
sb.append("BLOCK* addStoredBlock: blockMap updated: ")
|
|
- .append(node.getName())
|
|
|
|
|
|
+ .append(node)
|
|
.append(" is added to ");
|
|
.append(" is added to ");
|
|
storedBlock.appendStringTo(sb);
|
|
storedBlock.appendStringTo(sb);
|
|
sb.append(" size " )
|
|
sb.append(" size " )
|
|
@@ -2069,7 +2069,7 @@ assert storedBlock.findDatanode(dn) < 0 : "Block " + block
|
|
} catch (IOException e) {
|
|
} catch (IOException e) {
|
|
NameNode.stateChangeLog.info("NameNode.invalidateCorruptReplicas " +
|
|
NameNode.stateChangeLog.info("NameNode.invalidateCorruptReplicas " +
|
|
"error in deleting bad block " + blk +
|
|
"error in deleting bad block " + blk +
|
|
- " on " + node + e);
|
|
|
|
|
|
+ " on " + node, e);
|
|
gotException = true;
|
|
gotException = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -2335,7 +2335,7 @@ assert storedBlock.findDatanode(dn) < 0 : "Block " + block
|
|
//
|
|
//
|
|
addToInvalidates(b, cur);
|
|
addToInvalidates(b, cur);
|
|
NameNode.stateChangeLog.info("BLOCK* chooseExcessReplicates: "
|
|
NameNode.stateChangeLog.info("BLOCK* chooseExcessReplicates: "
|
|
- +"("+cur.getName()+", "+b+") is added to invalidated blocks set.");
|
|
|
|
|
|
+ +"("+cur+", "+b+") is added to invalidated blocks set.");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -2350,7 +2350,7 @@ assert storedBlock.findDatanode(dn) < 0 : "Block " + block
|
|
excessBlocksCount++;
|
|
excessBlocksCount++;
|
|
if(NameNode.stateChangeLog.isDebugEnabled()) {
|
|
if(NameNode.stateChangeLog.isDebugEnabled()) {
|
|
NameNode.stateChangeLog.debug("BLOCK* addToExcessReplicate:"
|
|
NameNode.stateChangeLog.debug("BLOCK* addToExcessReplicate:"
|
|
- + " (" + dn.getName() + ", " + block
|
|
|
|
|
|
+ + " (" + dn + ", " + block
|
|
+ ") is added to excessReplicateMap");
|
|
+ ") is added to excessReplicateMap");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -2363,7 +2363,7 @@ assert storedBlock.findDatanode(dn) < 0 : "Block " + block
|
|
public void removeStoredBlock(Block block, DatanodeDescriptor node) {
|
|
public void removeStoredBlock(Block block, DatanodeDescriptor node) {
|
|
if(NameNode.stateChangeLog.isDebugEnabled()) {
|
|
if(NameNode.stateChangeLog.isDebugEnabled()) {
|
|
NameNode.stateChangeLog.debug("BLOCK* removeStoredBlock: "
|
|
NameNode.stateChangeLog.debug("BLOCK* removeStoredBlock: "
|
|
- + block + " from " + node.getName());
|
|
|
|
|
|
+ + block + " from " + node);
|
|
}
|
|
}
|
|
assert (namesystem.hasWriteLock());
|
|
assert (namesystem.hasWriteLock());
|
|
{
|
|
{
|
|
@@ -2476,7 +2476,7 @@ assert storedBlock.findDatanode(dn) < 0 : "Block " + block
|
|
}
|
|
}
|
|
for (Block b : toInvalidate) {
|
|
for (Block b : toInvalidate) {
|
|
NameNode.stateChangeLog.info("BLOCK* addBlock: block "
|
|
NameNode.stateChangeLog.info("BLOCK* addBlock: block "
|
|
- + b + " on " + node.getName() + " size " + b.getNumBytes()
|
|
|
|
|
|
+ + b + " on " + node + " size " + b.getNumBytes()
|
|
+ " does not belong to any file.");
|
|
+ " does not belong to any file.");
|
|
addToInvalidates(b, node);
|
|
addToInvalidates(b, node);
|
|
}
|
|
}
|
|
@@ -2504,7 +2504,7 @@ assert storedBlock.findDatanode(dn) < 0 : "Block " + block
|
|
NameNode.stateChangeLog
|
|
NameNode.stateChangeLog
|
|
.warn("BLOCK* processIncrementalBlockReport"
|
|
.warn("BLOCK* processIncrementalBlockReport"
|
|
+ " is received from dead or unregistered node "
|
|
+ " is received from dead or unregistered node "
|
|
- + nodeID.getName());
|
|
|
|
|
|
+ + nodeID);
|
|
throw new IOException(
|
|
throw new IOException(
|
|
"Got incremental block report from unregistered or dead node");
|
|
"Got incremental block report from unregistered or dead node");
|
|
}
|
|
}
|
|
@@ -2526,7 +2526,7 @@ assert storedBlock.findDatanode(dn) < 0 : "Block " + block
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
String msg =
|
|
String msg =
|
|
- "Unknown block status code reported by " + nodeID.getName() +
|
|
|
|
|
|
+ "Unknown block status code reported by " + nodeID +
|
|
": " + rdbi;
|
|
": " + rdbi;
|
|
NameNode.stateChangeLog.warn(msg);
|
|
NameNode.stateChangeLog.warn(msg);
|
|
assert false : msg; // if assertions are enabled, throw.
|
|
assert false : msg; // if assertions are enabled, throw.
|
|
@@ -2535,14 +2535,14 @@ assert storedBlock.findDatanode(dn) < 0 : "Block " + block
|
|
if (NameNode.stateChangeLog.isDebugEnabled()) {
|
|
if (NameNode.stateChangeLog.isDebugEnabled()) {
|
|
NameNode.stateChangeLog.debug("BLOCK* block "
|
|
NameNode.stateChangeLog.debug("BLOCK* block "
|
|
+ (rdbi.getStatus()) + ": " + rdbi.getBlock()
|
|
+ (rdbi.getStatus()) + ": " + rdbi.getBlock()
|
|
- + " is received from " + nodeID.getName());
|
|
|
|
|
|
+ + " is received from " + nodeID);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} finally {
|
|
} finally {
|
|
namesystem.writeUnlock();
|
|
namesystem.writeUnlock();
|
|
NameNode.stateChangeLog
|
|
NameNode.stateChangeLog
|
|
.debug("*BLOCK* NameNode.processIncrementalBlockReport: " + "from "
|
|
.debug("*BLOCK* NameNode.processIncrementalBlockReport: " + "from "
|
|
- + nodeID.getName()
|
|
|
|
|
|
+ + nodeID
|
|
+ " receiving: " + receiving + ", "
|
|
+ " receiving: " + receiving + ", "
|
|
+ " received: " + received + ", "
|
|
+ " received: " + received + ", "
|
|
+ " deleted: " + deleted);
|
|
+ " deleted: " + deleted);
|
|
@@ -2618,7 +2618,7 @@ assert storedBlock.findDatanode(dn) < 0 : "Block " + block
|
|
StringBuilder nodeList = new StringBuilder();
|
|
StringBuilder nodeList = new StringBuilder();
|
|
while (nodeIter.hasNext()) {
|
|
while (nodeIter.hasNext()) {
|
|
DatanodeDescriptor node = nodeIter.next();
|
|
DatanodeDescriptor node = nodeIter.next();
|
|
- nodeList.append(node.getName());
|
|
|
|
|
|
+ nodeList.append(node);
|
|
nodeList.append(" ");
|
|
nodeList.append(" ");
|
|
}
|
|
}
|
|
LOG.info("Block: " + block + ", Expected Replicas: "
|
|
LOG.info("Block: " + block + ", Expected Replicas: "
|
|
@@ -2628,7 +2628,7 @@ assert storedBlock.findDatanode(dn) < 0 : "Block " + block
|
|
+ ", excess replicas: " + num.excessReplicas()
|
|
+ ", excess replicas: " + num.excessReplicas()
|
|
+ ", Is Open File: " + fileINode.isUnderConstruction()
|
|
+ ", Is Open File: " + fileINode.isUnderConstruction()
|
|
+ ", Datanodes having this block: " + nodeList + ", Current Datanode: "
|
|
+ ", Datanodes having this block: " + nodeList + ", Current Datanode: "
|
|
- + srcNode.getName() + ", Is current datanode decommissioning: "
|
|
|
|
|
|
+ + srcNode + ", Is current datanode decommissioning: "
|
|
+ srcNode.isDecommissionInProgress());
|
|
+ srcNode.isDecommissionInProgress());
|
|
}
|
|
}
|
|
|
|
|