[ 
https://issues.apache.org/jira/browse/HADOOP-14519?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

John Zhuge updated HADOOP-14519:
--------------------------------
    Attachment: HADOOP-14519.001.patch

Patch 001
* Convert the if block for wait() into a while loop
* Break out of the loop upon InterruptedException
* Not a good idea to swallow InterruptedException. At least restore the 
interrupted status.
* Don’t know how to write a unit test to catch the spurious wakeup


> Client$Connection#waitForWork may suffer spurious wakeup
> --------------------------------------------------------
>
>                 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.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org

Reply via email to