/** * Initialize lease recovery for this object */ void assignPrimaryDatanode() { //assign the first alive datanode as the primary datanode if (targets.length == 0) { NameNode.stateChangeLog.warn("BLOCK*" + " INodeFileUnderConstruction.initLeaseRecovery:" + " No blocks found, lease removed."); } int previous = primaryNodeIndex; // find an alive datanode beginning from previous. // This causes us to cycle through the targets on successive retries. for(int i = 1; i <= targets.length; i++) { int j = (previous + i)%targets.length; if (targets[j].isAlive) { DatanodeDescriptor primary = targets[primaryNodeIndex = j]; primary.addBlockToBeRecovered(blocks[blocks.length - 1], targets); NameNode.stateChangeLog.info("BLOCK* " + blocks[blocks.length - 1] + " recovery started, primary=" + primary); return; } } }
/** * Initialize lease recovery for this object */ void assignPrimaryDatanode() { //assign the first alive datanode as the primary datanode if (targets.length == 0) { NameNode.stateChangeLog.warn("BLOCK*" + " INodeFileUnderConstruction.initLeaseRecovery:" + " No blocks found, lease removed."); } int previous = primaryNodeIndex; //find an alive datanode beginning from previous for(int i = 1; i <= targets.length; i++) { int j = (previous + i)%targets.length; if (targets[j].isAlive) { DatanodeDescriptor primary = targets[primaryNodeIndex = j]; primary.addBlockToBeRecovered(blocks[blocks.length - 1], targets); NameNode.stateChangeLog.info("BLOCK* " + blocks[blocks.length - 1] + " recovery started, primary=" + primary); return; } } }