You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-dev@hadoop.apache.org by "BELUGA BEHR (JIRA)" <ji...@apache.org> on 2018/10/15 17:38:00 UTC

[jira] [Created] (HDFS-13994) DataNode BlockSender waitForMinLength

BELUGA BEHR created HDFS-13994:
----------------------------------

             Summary: DataNode BlockSender waitForMinLength
                 Key: HDFS-13994
                 URL: https://issues.apache.org/jira/browse/HDFS-13994
             Project: Hadoop HDFS
          Issue Type: Improvement
          Components: datanode
    Affects Versions: 3.2.0
            Reporter: BELUGA BEHR
         Attachments: HDFS-13994.1.patch

{code:java|title=BlockSender.java}
  private static void waitForMinLength(ReplicaInPipeline rbw, long len)
      throws IOException {
    // Wait for 3 seconds for rbw replica to reach the minimum length
    for (int i = 0; i < 30 && rbw.getBytesOnDisk() < len; i++) {
      try {
        Thread.sleep(100);
      } catch (InterruptedException ie) {
        throw new IOException(ie);
      }
    }
    long bytesOnDisk = rbw.getBytesOnDisk();
    if (bytesOnDisk < len) {
      throw new IOException(
          String.format("Need %d bytes, but only %d bytes available", len,
              bytesOnDisk));
    }
  }
 {code}

It is not very efficient to poll for status in this way.  Instead, use {{notifyAll}} within the {{ReplicaInPipeline}} to notify the caller when the replica has reached a certain size.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-dev-unsubscribe@hadoop.apache.org
For additional commands, e-mail: hdfs-dev-help@hadoop.apache.org