hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/StorageContainerManager.java
@Override
  public ContainerBlocksDeletionACKResponseProto sendContainerBlocksDeletionACK(
      ContainerBlocksDeletionACKProto acks) throws IOException {
    if (acks.getResultsCount() > 0) {
      List<DeleteBlockTransactionResult> resultList = acks.getResultsList();
      for (DeleteBlockTransactionResult result : resultList) {
        if (LOG.isDebugEnabled()) {
          LOG.debug("Got block deletion ACK from datanode, TXIDs={}, "
                  + "success={}", result.getTxID(), result.getSuccess());
        }
        if (result.getSuccess()) {
          LOG.debug("Purging TXID={} from block deletion log",
              result.getTxID());
          this.getScmBlockManager().getDeletedBlockLog()
              .commitTransactions(Collections.singletonList(result.getTxID()));
        } else {
          LOG.warn("Got failed ACK for TXID={}, prepare to resend the "
              + "TX in next interval", result.getTxID());
        }
      }
    }
    return ContainerBlocksDeletionACKResponseProto.newBuilder()
        .getDefaultInstanceForType();
  }
/**
   * Handles the block deletion ACKs sent by datanodes. Once ACKs recieved,
   * SCM considers the blocks are deleted and update the metadata in SCM DB.
   *
   * @param acks
   * @return
   * @throws IOException
   */
Handles the block deletion ACKs sent by datanodes. Once ACKs recieved,
SCM considers the blocks are deleted and update the metadata in SCM DB.

@param acks
@return
@throws IOException
Handles the block deletion ACKs sent by datanodes . Once ACKs recieved SCM considers the blocks are deleted and update the metadata in SCM DB . @param acks @return @throws IOException
@Override
  public ContainerBlocksDeletionACKResponseProto sendContainerBlocksDeletionACK(
      ContainerBlocksDeletionACKProto acks) throws IOException {
    if (acks.getResultsCount() > 0) {
      List<DeleteBlockTransactionResult> resultList = acks.getResultsList();
      for (DeleteBlockTransactionResult result : resultList) {
        if (LOG.isDebugEnabled()) {
          LOG.debug("Got block deletion ACK from datanode, TXIDs={}, "
                  + "success={}", result.getTxID(), result.getSuccess());
        }
        if (result.getSuccess()) {
          LOG.debug("Purging TXID={} from block deletion log",
              result.getTxID());
          this.getScmBlockManager().getDeletedBlockLog()
              .commitTransactions(Collections.singletonList(result.getTxID()));
        } else {
          LOG.warn("Got failed ACK for TXID={}, prepare to resend the "
              + "TX in next interval", result.getTxID());
        }
      }
    }
    return ContainerBlocksDeletionACKResponseProto.newBuilder()
        .getDefaultInstanceForType();
  }
@ Override public ContainerBlocksDeletionACKResponseProto sendContainerBlocksDeletionACK ( ContainerBlocksDeletionACKProto acks ) throws IOException { if ( acks . getResultsCount ( ) > 0 ) { List < DeleteBlockTransactionResult > resultList = acks . getResultsList ( ) ; for ( DeleteBlockTransactionResult result : resultList ) { if ( LOG . isDebugEnabled ( ) ) { LOG . debug ( "Got block deletion ACK from datanode, TXIDs={}, " + "success={}" , result . getTxID ( ) , result . getSuccess ( ) ) ; } if ( result . getSuccess ( ) ) { LOG . debug ( "Purging TXID={} from block deletion log" , result . getTxID ( ) ) ; this . getScmBlockManager ( ) . getDeletedBlockLog ( ) . commitTransactions ( Collections . singletonList ( result . getTxID ( ) ) ) ; } else { LOG . warn ( "Got failed ACK for TXID={}, prepare to resend the " + "TX in next interval" , result . getTxID ( ) ) ; } } } return ContainerBlocksDeletionACKResponseProto . newBuilder ( ) . getDefaultInstanceForType ( ) ; }
Handles the block deletion ACKs sent by datanodes.
Handles the block deletion ACKs sent by datanodes .