public boolean abandonBlock(Block b, String src, String holder
  ) throws IOException {
    writeLock();
    try {
      //
      // Remove the block from the pending creates list
      //
      if (NameNode.stateChangeLog.isDebugEnabled()) {
        NameNode.stateChangeLog.debug("BLOCK* NameSystem.abandonBlock: "
          + b + "of file " + src);
      }
      if (isInSafeMode()) {
        throw new SafeModeException("Cannot abandon block " + b +
          " for fle" + src, safeMode);
      }
      INodeFileUnderConstruction file = checkLease(src, holder);
      dir.removeBlock(src, file, b);
      if (NameNode.stateChangeLog.isDebugEnabled()) {
        NameNode.stateChangeLog.debug("BLOCK* NameSystem.abandonBlock: "
          + b
          + " is removed from pendingCreates");
      }
      return true;
    } finally {
      writeUnlock();
    }
  }
public boolean abandonBlock ( Block b , String src , String holder ) throws IOException { writeLock ( ) ; try { if ( NameNode . stateChangeLog . isDebugEnabled ( ) ) { NameNode . stateChangeLog . debug ( "BLOCK* NameSystem.abandonBlock: " + b + "of file " + src ) ; } if ( isInSafeMode ( ) ) { throw new SafeModeException ( "Cannot abandon block " + b + " for fle" + src , safeMode ) ; } INodeFileUnderConstruction file = checkLease ( src , holder ) ; dir . removeBlock ( src , file , b ) ; if ( NameNode . stateChangeLog . isDebugEnabled ( ) ) { NameNode . stateChangeLog . debug ( "BLOCK* NameSystem.abandonBlock: " + b + " is removed from pendingCreates" ) ; } return true ; } finally { writeUnlock ( ) ; } }
The client would like to let go of the given block