Feng Honghua created HBASE-10516:
------------------------------------

             Summary: 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


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, and even worse can incur 
>infinite loop for while(true)-like loop where the exit condition check occurs 
>after sleep statement within the while 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