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

Feng Honghua commented on HBASE-10516:
--------------------------------------

bq.Nice writeup @nkeywal (and nice commentary Feng Honghua – especially the bit 
about resetting interrupt is useless unless it checked in upper layers). We 
should extract your wisdom and put on dev list? It is good stuff. I can write 
it up in refguide after we are agreed.
Sounds good, [~stack]

> Refactor code where Threads.sleep is called within a while/for loop
> -------------------------------------------------------------------
>
>                 Key: HBASE-10516
>                 URL: https://issues.apache.org/jira/browse/HBASE-10516
>             Project: HBase
>          Issue Type: Bug
>          Components: Client, master, regionserver
>            Reporter: Feng Honghua
>            Assignee: Feng Honghua
>         Attachments: HBASE-10516-trunk_v1.patch, HBASE-10516-trunk_v2.patch, 
> HBASE-10516-trunk_v3.patch
>
>
> Threads.sleep implementation:
> {code}
>  public static void sleep(long millis) {
>     try {
>       Thread.sleep(millis);
>     } catch (InterruptedException e) {
>       e.printStackTrace();
>       Thread.currentThread().interrupt();
>     }
>   }
> {code}
> From above implementation, the current thread's interrupt status is 
> restored/reset when InterruptedException is caught and handled. If this 
> method is called within a while/for loop, if a first InterruptedException is 
> thrown during sleep, it will make the Threads.sleep in next loop immediately 
> throw InterruptedException without expected sleep. This behavior breaks the 
> intention for independent sleep in each loop
> I mentioned above in HBASE-10497 and this jira is created to handle it 
> separately per [~nkeywal]'s suggestion



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to