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

Junping Du commented on HADOOP-14519:
-------------------------------------

I think adding while loop here intention is to get rid of spurious 
notification. So get notified and check condition A should be good. One thing 
we could be missing here is we could miss some notification when hitting 
condition A. First two conditions should be fine as we send notifications when 
we receive new calls or Close Connection. However, when we do stop() - where we 
set running to false, it sounds like we are missing to send notification. May 
be safe to add notification?
Other looks good to me.

> Client$Connection#waitForWork may suffer from spurious wakeups
> --------------------------------------------------------------
>
>                 Key: HADOOP-14519
>                 URL: https://issues.apache.org/jira/browse/HADOOP-14519
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: ipc
>    Affects Versions: 2.8.0
>            Reporter: John Zhuge
>            Assignee: John Zhuge
>            Priority: Critical
>         Attachments: HADOOP-14519.001.patch
>
>
> {{Client$Connection#waitForWork}} may suffer spurious wakeup because the 
> {{wait}} is not surrounded by a loop. See 
> [https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#wait()].
> {code:title=Client$Connection#waitForWork}
>       if (calls.isEmpty() && !shouldCloseConnection.get() && running.get())  {
>         long timeout = maxIdleTime-
>               (Time.now()-lastActivity.get());
>         if (timeout>0) {
>           try {
>             wait(timeout);                          <<<<<<==== spurious wakeup
>           } catch (InterruptedException e) {}
>         }
>       }
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to