[
https://issues.apache.org/jira/browse/HADOOP-7888?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13165252#comment-13165252
]
Hudson commented on HADOOP-7888:
--------------------------------
Integrated in Hadoop-Mapreduce-trunk #921 (See
[https://builds.apache.org/job/Hadoop-Mapreduce-trunk/921/])
HADOOP-7888. TestFailoverProxy fails intermittently on trunk. Contributed
by Jason Lowe.
atm : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1211728
Files :
* /hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt
*
/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/retry/RetryInvocationHandler.java
*
/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/retry/TestFailoverProxy.java
> TestFailoverProxy fails intermittently on trunk
> -----------------------------------------------
>
> Key: HADOOP-7888
> URL: https://issues.apache.org/jira/browse/HADOOP-7888
> Project: Hadoop Common
> Issue Type: Bug
> Components: test
> Affects Versions: 0.24.0
> Reporter: Jason Lowe
> Assignee: Jason Lowe
> Fix For: 0.24.0
>
> Attachments: hadoop-7888.patch
>
>
> TestFailoverProxy can fail intermittently with the failures occurring in
> testConcurrentMethodFailures(). The test has a race condition where the two
> threads may be sequentially invoking the unreliable interface rather than
> concurrently. Currently the proxy provider's getProxy() method contains the
> thread synchronization to enforce a concurrent invocation, but examining the
> source to RetryInvocationHandler.invoke() shows that the call to getProxy()
> during failover is too late to enforce a truly concurrent invocation.
> For this particular test, one thread could race ahead and block on the
> CountDownLatch in getProxy() before the other thread even enters
> RetryInvocationHandler.invoke(). If that happens the second thread will
> cache the newly updated value for proxyProviderFailoverCount, since the
> failover has mostly been processed by the original thread. Therefore the
> second thread ends up assuming no other thread is present, performs a
> failover, and the test fails because two failovers occurred instead of one.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira