Recently, when I read the hbase source code of version 1.0.0, I found a method 
which I don't understand very much. That is the class AsyncProcess.java in 
client package, I did not understand why the code
 if (tasksInProgress.get() != oldInProgress)  break
exist in the private void waitForMaximumCurrentTasks(int max) method, if the  
passed parameter max = 0,then it is possible that the tasksInProgress.get() > 0 
but tasksInProgress.get() != oldInProgress,then the loop breaks,it is not what 
we want, we need all the previous jobs is done before the loop breaks,right? In 
the HBASE-11403, it is added to fix the race condition issue,I do not know what 
will cause race condition, I think it will not cause that issue at all, it is 
impossible. When I click the url of the Test results, it is missing. Who can 
tell me why the code tasksInProgress.get() != oldInProgress shoud be added 
there?

Reply via email to