[
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 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. 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 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. 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 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. 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)