You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "jay (JIRA)" <ji...@apache.org> on 2019/08/08 03:33:00 UTC

[jira] [Updated] (HBASE-22816) confusion about the HBASE-11403 race condition issue

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

jay updated HBASE-22816:
------------------------
    Description: Recently, when I read the hbase source code, I found a menthod 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. 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?  (was: Recently, when I read the hbase source code, I found a menthod 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 previos jobs is done before the loop breaks,right? In the HBASE-11403, it is added to fix the race condition,I do not know what will cause race condition. 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?)

> confusion about the HBASE-11403 race condition issue
> ----------------------------------------------------
>
>                 Key: HBASE-22816
>                 URL: https://issues.apache.org/jira/browse/HBASE-22816
>             Project: HBase
>          Issue Type: Wish
>          Components: Client
>    Affects Versions: 1.0.0
>         Environment:    
>            Reporter: jay
>            Priority: Major
>             Fix For: 1.3.4
>
>
> Recently, when I read the hbase source code, I found a menthod 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. 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?



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)