[ 
https://issues.apache.org/jira/browse/HDFS-7325?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14197333#comment-14197333
 ] 

Tsz Wo Nicholas Sze commented on HDFS-7325:
-------------------------------------------

Thanks for the advise about the thundering herd problem.
{code}
+      if (numAllocated < maxAllocated) {
+        notify();
+      }
{code}
The < above should be <=.  When numAllocated == maxAllocated, we definitely 
should call notify().  How about simply including the change in HDFS-7358 and 
resolving this?

> Prevent thundering herd problem in ByteArrayManager by using notify not 
> notifyAll
> ---------------------------------------------------------------------------------
>
>                 Key: HDFS-7325
>                 URL: https://issues.apache.org/jira/browse/HDFS-7325
>             Project: Hadoop HDFS
>          Issue Type: Bug
>    Affects Versions: 2.6.0
>            Reporter: Colin Patrick McCabe
>            Assignee: Colin Patrick McCabe
>         Attachments: HDFS-7325.001.patch
>
>
> Currently ByteArrayManager wakes all waiting threads whenever a byte array is 
> released and count == limit.  However, only one thread can proceed.    With a 
> large number of waiters, this will cause a thundering herd problem.  (See 
> http://en.wikipedia.org/wiki/Thundering_herd_problem.)  We should avoid this 
> by only waking a single thread.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to